@decaf-ts/for-angular 0.0.11 → 0.0.12

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.
Files changed (97) hide show
  1. package/dist/for-angular/cli/cli-module.d.ts +22 -0
  2. package/dist/for-angular/cli/cli-module.d.ts.map +1 -0
  3. package/dist/for-angular/cli/cli-module.js +131 -0
  4. package/dist/for-angular/cli/cli-module.js.map +1 -0
  5. package/dist/lib/components/component-renderer/component-renderer.component.d.ts +1 -0
  6. package/dist/lib/components/component-renderer/component-renderer.component.d.ts.map +1 -0
  7. package/dist/lib/components/crud-field/crud-field.component.d.ts +1 -0
  8. package/dist/lib/components/crud-field/crud-field.component.d.ts.map +1 -0
  9. package/dist/lib/components/crud-form/constants.d.ts +1 -0
  10. package/dist/lib/components/crud-form/constants.d.ts.map +1 -0
  11. package/dist/lib/components/crud-form/crud-form.component.d.ts +1 -0
  12. package/dist/lib/components/crud-form/crud-form.component.d.ts.map +1 -0
  13. package/dist/lib/components/crud-form/types.d.ts +1 -0
  14. package/dist/lib/components/crud-form/types.d.ts.map +1 -0
  15. package/dist/lib/components/empty-state/empty-state.component.d.ts +1 -0
  16. package/dist/lib/components/empty-state/empty-state.component.d.ts.map +1 -0
  17. package/dist/lib/components/fieldset/fieldset.component.d.ts +1 -0
  18. package/dist/lib/components/fieldset/fieldset.component.d.ts.map +1 -0
  19. package/dist/lib/components/filter/filter.component.d.ts +1 -0
  20. package/dist/lib/components/filter/filter.component.d.ts.map +1 -0
  21. package/dist/lib/components/for-angular-components.module.d.ts +1 -0
  22. package/dist/lib/components/for-angular-components.module.d.ts.map +1 -0
  23. package/dist/lib/components/index.d.ts +1 -0
  24. package/dist/lib/components/index.d.ts.map +1 -0
  25. package/dist/lib/components/layout/layout.component.d.ts +1 -0
  26. package/dist/lib/components/layout/layout.component.d.ts.map +1 -0
  27. package/dist/lib/components/list/constants.d.ts +1 -0
  28. package/dist/lib/components/list/constants.d.ts.map +1 -0
  29. package/dist/lib/components/list/list.component.d.ts +1 -0
  30. package/dist/lib/components/list/list.component.d.ts.map +1 -0
  31. package/dist/lib/components/list-item/list-item.component.d.ts +1 -0
  32. package/dist/lib/components/list-item/list-item.component.d.ts.map +1 -0
  33. package/dist/lib/components/model-renderer/model-renderer.component.d.ts +1 -0
  34. package/dist/lib/components/model-renderer/model-renderer.component.d.ts.map +1 -0
  35. package/dist/lib/components/pagination/constants.d.ts +1 -0
  36. package/dist/lib/components/pagination/constants.d.ts.map +1 -0
  37. package/dist/lib/components/pagination/pagination.component.d.ts +1 -0
  38. package/dist/lib/components/pagination/pagination.component.d.ts.map +1 -0
  39. package/dist/lib/components/searchbar/searchbar.component.d.ts +1 -0
  40. package/dist/lib/components/searchbar/searchbar.component.d.ts.map +1 -0
  41. package/dist/lib/decaf-ts-for-angular.d.ts.map +1 -0
  42. package/dist/lib/directives/collapsable.directive.d.ts +1 -0
  43. package/dist/lib/directives/collapsable.directive.d.ts.map +1 -0
  44. package/dist/lib/directives/index.d.ts +1 -0
  45. package/dist/lib/directives/index.d.ts.map +1 -0
  46. package/dist/lib/engine/DynamicModule.d.ts +1 -0
  47. package/dist/lib/engine/DynamicModule.d.ts.map +1 -0
  48. package/dist/lib/engine/NgxBaseComponent.d.ts +1 -0
  49. package/dist/lib/engine/NgxBaseComponent.d.ts.map +1 -0
  50. package/dist/lib/engine/NgxCrudFormField.d.ts +1 -0
  51. package/dist/lib/engine/NgxCrudFormField.d.ts.map +1 -0
  52. package/dist/lib/engine/NgxFormService.d.ts +1 -0
  53. package/dist/lib/engine/NgxFormService.d.ts.map +1 -0
  54. package/dist/lib/engine/NgxRenderingEngine.d.ts +1 -0
  55. package/dist/lib/engine/NgxRenderingEngine.d.ts.map +1 -0
  56. package/dist/lib/engine/NgxRenderingEngine2.d.ts +1 -0
  57. package/dist/lib/engine/NgxRenderingEngine2.d.ts.map +1 -0
  58. package/dist/lib/engine/ValidatorFactory.d.ts +1 -0
  59. package/dist/lib/engine/ValidatorFactory.d.ts.map +1 -0
  60. package/dist/lib/engine/constants.d.ts +1 -0
  61. package/dist/lib/engine/constants.d.ts.map +1 -0
  62. package/dist/lib/engine/decorators.d.ts +1 -0
  63. package/dist/lib/engine/decorators.d.ts.map +1 -0
  64. package/dist/lib/engine/index.d.ts +1 -0
  65. package/dist/lib/engine/index.d.ts.map +1 -0
  66. package/dist/lib/engine/types.d.ts +1 -0
  67. package/dist/lib/engine/types.d.ts.map +1 -0
  68. package/dist/lib/esm2022/components/component-renderer/component-renderer.component.mjs +70 -24
  69. package/dist/lib/esm2022/components/crud-field/crud-field.component.mjs +271 -116
  70. package/dist/lib/esm2022/components/crud-form/crud-form.component.mjs +170 -37
  71. package/dist/lib/esm2022/components/empty-state/empty-state.component.mjs +103 -41
  72. package/dist/lib/esm2022/components/fieldset/fieldset.component.mjs +41 -16
  73. package/dist/lib/esm2022/components/filter/filter.component.mjs +248 -31
  74. package/dist/lib/esm2022/components/for-angular-components.module.mjs +38 -37
  75. package/dist/lib/esm2022/components/layout/layout.component.mjs +84 -15
  76. package/dist/lib/esm2022/components/list/list.component.mjs +252 -83
  77. package/dist/lib/esm2022/components/list-item/list-item.component.mjs +250 -46
  78. package/dist/lib/esm2022/components/model-renderer/model-renderer.component.mjs +66 -22
  79. package/dist/lib/esm2022/components/pagination/pagination.component.mjs +58 -17
  80. package/dist/lib/esm2022/components/searchbar/searchbar.component.mjs +66 -56
  81. package/dist/lib/esm2022/directives/collapsable.directive.mjs +10 -10
  82. package/dist/lib/esm2022/engine/NgxBaseComponent.mjs +53 -46
  83. package/dist/lib/esm2022/for-angular.module.mjs +40 -39
  84. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs +1805 -621
  85. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +1 -1
  86. package/dist/lib/for-angular.module.d.ts +1 -0
  87. package/dist/lib/for-angular.module.d.ts.map +1 -0
  88. package/dist/lib/helpers/index.d.ts +1 -0
  89. package/dist/lib/helpers/index.d.ts.map +1 -0
  90. package/dist/lib/helpers/utils.d.ts +1 -0
  91. package/dist/lib/helpers/utils.d.ts.map +1 -0
  92. package/dist/lib/index.d.ts +1 -0
  93. package/dist/lib/interfaces.d.ts +1 -0
  94. package/dist/lib/interfaces.d.ts.map +1 -0
  95. package/dist/lib/public-apis.d.ts +1 -0
  96. package/dist/lib/public-apis.d.ts.map +1 -0
  97. package/package.json +3 -2
@@ -1,6 +1,6 @@
1
1
  import { UIKeys, parseValueByType, HTML5InputTypes, HTML5CheckTypes, escapeHtml, parseToNumber, RenderingEngine, RenderingError } from '@decaf-ts/ui-decorators';
2
2
  import * as i0 from '@angular/core';
3
- import { reflectComponentType, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule, inject, EnvironmentInjector, EventEmitter, ViewContainerRef, TemplateRef, ViewChild, Input, Output, Component, ElementRef, isDevMode, Inject, Directive, ChangeDetectorRef, HostListener, Injector } from '@angular/core';
3
+ import { reflectComponentType, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule, inject, EnvironmentInjector, EventEmitter, ViewContainerRef, TemplateRef, Component, ViewChild, Input, Output, ElementRef, isDevMode, Inject, Directive, ChangeDetectorRef, HostListener, Injector } from '@angular/core';
4
4
  import { VALIDATION_PARENT_KEY, ValidationKeys, DEFAULT_PATTERNS, Validation, ComparisonValidationKeys, PathProxyEngine, isValidDate as isValidDate$1, parseDate, sf, Primitives, Model } from '@decaf-ts/decorator-validation';
5
5
  import { InternalError, OperationKeys } from '@decaf-ts/db-decorators';
6
6
  import * as i2$1 from '@angular/forms';
@@ -973,35 +973,9 @@ class ForAngularModule {
973
973
  ngModule: ForAngularModule,
974
974
  };
975
975
  }
976
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
977
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, imports: [IonApp,
978
- IonRouterOutlet,
979
- IonSplitPane,
980
- IonImg,
981
- IonText,
982
- IonTitle,
983
- IonButton,
984
- IonRouterLink,
985
- IonContent,
986
- CommonModule,
987
- FormsModule,
988
- ReactiveFormsModule,
989
- TranslateModule,
990
- TranslatePipe], exports: [IonApp,
991
- IonRouterOutlet,
992
- IonSplitPane,
993
- IonImg,
994
- IonText,
995
- IonTitle,
996
- IonButton,
997
- IonRouterLink,
998
- IonContent,
999
- CommonModule,
1000
- FormsModule,
1001
- ReactiveFormsModule,
1002
- TranslateModule,
1003
- TranslatePipe] }); }
1004
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, imports: [IonApp,
976
+ static { this.ɵfac = function ForAngularModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ForAngularModule)(); }; }
977
+ static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: ForAngularModule }); }
978
+ static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [IonApp,
1005
979
  IonRouterOutlet,
1006
980
  IonSplitPane,
1007
981
  IonImg,
@@ -1018,16 +992,79 @@ class ForAngularModule {
1018
992
  ReactiveFormsModule,
1019
993
  TranslateModule] }); }
1020
994
  }
1021
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, decorators: [{
1022
- type: NgModule,
1023
- args: [{
1024
- imports: ComponentsAndModules,
1025
- declarations: [],
1026
- exports: ComponentsAndModules,
1027
- schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
1028
- }]
1029
- }] });
995
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForAngularModule, [{
996
+ type: NgModule,
997
+ args: [{
998
+ imports: ComponentsAndModules,
999
+ declarations: [],
1000
+ exports: ComponentsAndModules,
1001
+ schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
1002
+ }]
1003
+ }], null, null); })();
1004
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ForAngularModule, { imports: [IonApp,
1005
+ IonRouterOutlet,
1006
+ IonSplitPane,
1007
+ IonImg,
1008
+ IonText,
1009
+ IonTitle,
1010
+ IonButton,
1011
+ IonRouterLink,
1012
+ IonContent,
1013
+ CommonModule,
1014
+ FormsModule,
1015
+ ReactiveFormsModule,
1016
+ TranslateModule,
1017
+ TranslatePipe], exports: [IonApp,
1018
+ IonRouterOutlet,
1019
+ IonSplitPane,
1020
+ IonImg,
1021
+ IonText,
1022
+ IonTitle,
1023
+ IonButton,
1024
+ IonRouterLink,
1025
+ IonContent,
1026
+ CommonModule,
1027
+ FormsModule,
1028
+ ReactiveFormsModule,
1029
+ TranslateModule,
1030
+ TranslatePipe] }); })();
1030
1031
 
1032
+ const _c0$a = ["componentViewContainer"];
1033
+ const _c1$7 = ["inner"];
1034
+ function ComponentRendererComponent_ng_template_0_Template(rf, ctx) { }
1035
+ function ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
1036
+ i0.ɵɵelementContainer(0);
1037
+ } }
1038
+ function ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1039
+ i0.ɵɵtemplate(0, ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 3);
1040
+ } if (rf & 2) {
1041
+ const child_r1 = i0.ɵɵnextContext().$implicit;
1042
+ i0.ɵɵproperty("ngComponentOutlet", child_r1.component)("ngComponentOutletInjector", child_r1.injector)("ngComponentOutletInputs", child_r1.inputs)("ngComponentOutletContent", child_r1.content);
1043
+ } }
1044
+ function ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1045
+ i0.ɵɵelement(0, "ngx-decaf-component-renderer", 2);
1046
+ } if (rf & 2) {
1047
+ const child_r1 = i0.ɵɵnextContext().$implicit;
1048
+ i0.ɵɵproperty("parent", child_r1);
1049
+ } }
1050
+ function ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Template(rf, ctx) { if (rf & 1) {
1051
+ i0.ɵɵtemplate(0, ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Conditional_0_Template, 1, 4, "ng-container")(1, ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Conditional_1_Template, 1, 1, "ngx-decaf-component-renderer", 2);
1052
+ } if (rf & 2) {
1053
+ const child_r1 = ctx.$implicit;
1054
+ i0.ɵɵconditional(!(child_r1.children == null ? null : child_r1.children.length) ? 0 : 1);
1055
+ } }
1056
+ function ComponentRendererComponent_ng_template_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1057
+ i0.ɵɵrepeaterCreate(0, ComponentRendererComponent_ng_template_2_Conditional_0_For_1_Template, 2, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
1058
+ } if (rf & 2) {
1059
+ const ctx_r1 = i0.ɵɵnextContext(2);
1060
+ i0.ɵɵrepeater(ctx_r1.parent.children);
1061
+ } }
1062
+ function ComponentRendererComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
1063
+ i0.ɵɵtemplate(0, ComponentRendererComponent_ng_template_2_Conditional_0_Template, 2, 0);
1064
+ } if (rf & 2) {
1065
+ const ctx_r1 = i0.ɵɵnextContext();
1066
+ i0.ɵɵconditional((ctx_r1.parent == null ? null : ctx_r1.parent.children == null ? null : ctx_r1.parent.children.length) ? 0 : -1);
1067
+ } }
1031
1068
  /**
1032
1069
  * @description Dynamic component renderer for Decaf Angular applications.
1033
1070
  * @summary This component provides a flexible way to dynamically render Angular components
@@ -1311,30 +1348,40 @@ class ComponentRendererComponent {
1311
1348
  }
1312
1349
  }
1313
1350
  }
1314
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComponentRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1315
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ComponentRendererComponent, isStandalone: true, selector: "ngx-decaf-component-renderer", inputs: { tag: "tag", globals: "globals", model: "model", parent: "parent" }, outputs: { listenEvent: "listenEvent" }, viewQueries: [{ propertyName: "vcr", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "inner", first: true, predicate: ["inner"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-template #componentViewContainer></ng-template>\n\n<ng-template #inner>\n @if(parent?.children?.length) {\n @for(child of parent.children; track child) {\n @if(!child.children?.length) {\n <ng-container\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n } @else {\n <ngx-decaf-component-renderer [parent]=\"child\"> </ngx-decaf-component-renderer>\n }\n }\n }\n</ng-template>\n\n\n", styles: [""], dependencies: [{ kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "model", "parent"], outputs: ["listenEvent"] }, { kind: "ngmodule", type: ForAngularModule }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] }); }
1351
+ static { this.ɵfac = function ComponentRendererComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ComponentRendererComponent)(); }; }
1352
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ComponentRendererComponent, selectors: [["ngx-decaf-component-renderer"]], viewQuery: function ComponentRendererComponent_Query(rf, ctx) { if (rf & 1) {
1353
+ i0.ɵɵviewQuery(_c0$a, 7, ViewContainerRef);
1354
+ i0.ɵɵviewQuery(_c1$7, 7, TemplateRef);
1355
+ } if (rf & 2) {
1356
+ let _t;
1357
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.vcr = _t.first);
1358
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inner = _t.first);
1359
+ } }, inputs: { tag: "tag", globals: "globals", model: "model", parent: "parent" }, outputs: { listenEvent: "listenEvent" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 4, vars: 0, consts: [["componentViewContainer", ""], ["inner", ""], [3, "parent"], [4, "ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletInputs", "ngComponentOutletContent"]], template: function ComponentRendererComponent_Template(rf, ctx) { if (rf & 1) {
1360
+ i0.ɵɵtemplate(0, ComponentRendererComponent_ng_template_0_Template, 0, 0, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(2, ComponentRendererComponent_ng_template_2_Template, 1, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
1361
+ } }, dependencies: [ComponentRendererComponent, ForAngularModule, i2.NgComponentOutlet] }); }
1316
1362
  }
1317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComponentRendererComponent, decorators: [{
1318
- type: Component,
1319
- args: [{ selector: 'ngx-decaf-component-renderer', imports: [ForAngularModule], standalone: true, template: "<ng-template #componentViewContainer></ng-template>\n\n<ng-template #inner>\n @if(parent?.children?.length) {\n @for(child of parent.children; track child) {\n @if(!child.children?.length) {\n <ng-container\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n } @else {\n <ngx-decaf-component-renderer [parent]=\"child\"> </ngx-decaf-component-renderer>\n }\n }\n }\n</ng-template>\n\n\n" }]
1320
- }], ctorParameters: () => [], propDecorators: { vcr: [{
1321
- type: ViewChild,
1322
- args: ['componentViewContainer', { static: true, read: ViewContainerRef }]
1323
- }], tag: [{
1324
- type: Input,
1325
- args: [{ required: true }]
1326
- }], globals: [{
1327
- type: Input
1328
- }], listenEvent: [{
1329
- type: Output
1330
- }], model: [{
1331
- type: Input
1332
- }], parent: [{
1333
- type: Input
1334
- }], inner: [{
1335
- type: ViewChild,
1336
- args: ['inner', { read: TemplateRef, static: true }]
1337
- }] } });
1363
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ComponentRendererComponent, [{
1364
+ type: Component,
1365
+ args: [{ selector: 'ngx-decaf-component-renderer', imports: [ForAngularModule], standalone: true, template: "<ng-template #componentViewContainer></ng-template>\n\n<ng-template #inner>\n @if(parent?.children?.length) {\n @for(child of parent.children; track child) {\n @if(!child.children?.length) {\n <ng-container\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n } @else {\n <ngx-decaf-component-renderer [parent]=\"child\"> </ngx-decaf-component-renderer>\n }\n }\n }\n</ng-template>\n\n\n" }]
1366
+ }], () => [], { vcr: [{
1367
+ type: ViewChild,
1368
+ args: ['componentViewContainer', { static: true, read: ViewContainerRef }]
1369
+ }], tag: [{
1370
+ type: Input,
1371
+ args: [{ required: true }]
1372
+ }], globals: [{
1373
+ type: Input
1374
+ }], listenEvent: [{
1375
+ type: Output
1376
+ }], model: [{
1377
+ type: Input
1378
+ }], parent: [{
1379
+ type: Input
1380
+ }], inner: [{
1381
+ type: ViewChild,
1382
+ args: ['inner', { read: TemplateRef, static: true }]
1383
+ }] }); })();
1384
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ComponentRendererComponent, { className: "ComponentRendererComponent", filePath: "components/component-renderer/component-renderer.component.ts", lineNumber: 71 }); })();
1338
1385
 
1339
1386
  /**
1340
1387
  * @class NgxCrudFormField
@@ -1488,6 +1535,143 @@ function Dynamic() {
1488
1535
  }, metadata(NgxRenderingEngine2.key(AngularEngineKeys.DYNAMIC), true));
1489
1536
  }
1490
1537
 
1538
+ const _c0$9 = ["component"];
1539
+ const _forTrack0$2 = ($index, $item) => $item.value;
1540
+ function CrudFieldComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1541
+ i0.ɵɵelement(0, "ion-text", 4);
1542
+ } if (rf & 2) {
1543
+ const ctx_r0 = i0.ɵɵnextContext(2);
1544
+ i0.ɵɵproperty("innerHTML", ctx_r0.type === "password" ? "********" : ctx_r0.value, i0.ɵɵsanitizeHtml);
1545
+ } }
1546
+ function CrudFieldComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1547
+ i0.ɵɵelement(0, "br");
1548
+ } }
1549
+ function CrudFieldComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1550
+ i0.ɵɵelementContainerStart(0, null, 0);
1551
+ i0.ɵɵelementStart(2, "div")(3, "ion-item")(4, "ion-label");
1552
+ i0.ɵɵtext(5);
1553
+ i0.ɵɵpipe(6, "translate");
1554
+ i0.ɵɵelement(7, "br");
1555
+ i0.ɵɵtemplate(8, CrudFieldComponent_Conditional_0_Conditional_8_Template, 1, 1, "ion-text", 4)(9, CrudFieldComponent_Conditional_0_Conditional_9_Template, 1, 0, "br");
1556
+ i0.ɵɵelementEnd()()();
1557
+ i0.ɵɵelementContainerEnd();
1558
+ } if (rf & 2) {
1559
+ const ctx_r0 = i0.ɵɵnextContext();
1560
+ i0.ɵɵadvance(2);
1561
+ i0.ɵɵclassMap("dcf-input-item " + ctx_r0.operation);
1562
+ i0.ɵɵadvance(3);
1563
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 4, ctx_r0.label), "");
1564
+ i0.ɵɵadvance(3);
1565
+ i0.ɵɵconditional(ctx_r0.value ? 8 : 9);
1566
+ } }
1567
+ function CrudFieldComponent_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1568
+ i0.ɵɵelement(0, "ion-textarea", 5);
1569
+ i0.ɵɵpipe(1, "translate");
1570
+ i0.ɵɵpipe(2, "translate");
1571
+ } if (rf & 2) {
1572
+ i0.ɵɵnextContext();
1573
+ const container_r2 = i0.ɵɵreference(3);
1574
+ const ctx_r0 = i0.ɵɵnextContext();
1575
+ i0.ɵɵproperty("mode", ctx_r0.mode)("hidden", ctx_r0.hidden)("required", ctx_r0.required !== undefined ? ctx_r0.required : null)("minlength", ctx_r0.minlength !== undefined ? ctx_r0.minlength : null)("maxlength", ctx_r0.maxlength !== undefined ? ctx_r0.maxlength : null)("readonly", ctx_r0.readonly !== undefined ? ctx_r0.readonly : null)("inputmode", ctx_r0.inputmode)("spellcheck", ctx_r0.spellcheck)("rows", ctx_r0.rows)("labelPlacement", ctx_r0.labelPlacement)("value", ctx_r0.value)("fill", ctx_r0.fill)("errorText", ctx_r0.getErrors(container_r2))("placeholder", ctx_r0.translatable ? i0.ɵɵpipeBind1(1, 16, ctx_r0.placeholder) : ctx_r0.placeholder)("formControlName", ctx_r0.name)("label", ctx_r0.translatable ? i0.ɵɵpipeBind1(2, 18, ctx_r0.label) : ctx_r0.label);
1576
+ } }
1577
+ function CrudFieldComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1578
+ const _r3 = i0.ɵɵgetCurrentView();
1579
+ i0.ɵɵelementStart(0, "ion-item")(1, "ion-checkbox", 9, 2);
1580
+ i0.ɵɵlistener("ionChange", function CrudFieldComponent_Conditional_1_Conditional_5_Template_ion_checkbox_ionChange_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.checked = !ctx_r0.checked); });
1581
+ i0.ɵɵelement(3, "span", 4);
1582
+ i0.ɵɵpipe(4, "translate");
1583
+ i0.ɵɵelementEnd()();
1584
+ } if (rf & 2) {
1585
+ i0.ɵɵnextContext();
1586
+ const container_r2 = i0.ɵɵreference(3);
1587
+ const ctx_r0 = i0.ɵɵnextContext();
1588
+ i0.ɵɵadvance();
1589
+ i0.ɵɵproperty("name", ctx_r0.path)("mode", ctx_r0.mode)("errorText", ctx_r0.getErrors(container_r2))("hidden", ctx_r0.hidden)("labelPlacement", ctx_r0.labelPlacement)("justify", ctx_r0.justify)("value", ctx_r0.value)("checked", ctx_r0.checked)("readonly", ctx_r0.readonly)("formControlName", ctx_r0.name);
1590
+ i0.ɵɵadvance(2);
1591
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(4, 11, ctx_r0.label), i0.ɵɵsanitizeHtml);
1592
+ } }
1593
+ function CrudFieldComponent_Conditional_1_Conditional_6_For_6_Template(rf, ctx) { if (rf & 1) {
1594
+ i0.ɵɵelementStart(0, "ion-item")(1, "ion-radio", 11);
1595
+ i0.ɵɵtext(2);
1596
+ i0.ɵɵpipe(3, "translate");
1597
+ i0.ɵɵelementEnd()();
1598
+ } if (rf & 2) {
1599
+ const option_r4 = ctx.$implicit;
1600
+ i0.ɵɵnextContext(2);
1601
+ const container_r2 = i0.ɵɵreference(3);
1602
+ const ctx_r0 = i0.ɵɵnextContext();
1603
+ i0.ɵɵadvance();
1604
+ i0.ɵɵproperty("errorText", ctx_r0.getErrors(container_r2))("mode", ctx_r0.mode)("hidden", ctx_r0.hidden)("labelPlacement", ctx_r0.labelPlacement)("alignment", ctx_r0.alignment)("justify", ctx_r0.justify)("readonly", ctx_r0.readonly)("value", option_r4.value);
1605
+ i0.ɵɵadvance();
1606
+ i0.ɵɵtextInterpolate(ctx_r0.translatable ? i0.ɵɵpipeBind1(3, 9, option_r4 == null ? null : option_r4.text) : option_r4 == null ? null : option_r4.text);
1607
+ } }
1608
+ function CrudFieldComponent_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1609
+ i0.ɵɵelementStart(0, "ion-radio-group", 6, 0)(2, "label", 10);
1610
+ i0.ɵɵtext(3);
1611
+ i0.ɵɵpipe(4, "translate");
1612
+ i0.ɵɵelementEnd();
1613
+ i0.ɵɵrepeaterCreate(5, CrudFieldComponent_Conditional_1_Conditional_6_For_6_Template, 4, 11, "ion-item", null, i0.ɵɵrepeaterTrackByIdentity);
1614
+ i0.ɵɵelementEnd();
1615
+ } if (rf & 2) {
1616
+ const ctx_r0 = i0.ɵɵnextContext(2);
1617
+ i0.ɵɵproperty("formControlName", ctx_r0.name)("name", ctx_r0.path)("value", ctx_r0.value);
1618
+ i0.ɵɵadvance(2);
1619
+ i0.ɵɵproperty("for", ctx_r0.path);
1620
+ i0.ɵɵadvance();
1621
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 5, ctx_r0.label));
1622
+ i0.ɵɵadvance(2);
1623
+ i0.ɵɵrepeater(ctx_r0.options);
1624
+ } }
1625
+ function CrudFieldComponent_Conditional_1_Conditional_7_For_4_Template(rf, ctx) { if (rf & 1) {
1626
+ i0.ɵɵelementStart(0, "ion-select-option", 12);
1627
+ i0.ɵɵtext(1);
1628
+ i0.ɵɵpipe(2, "translate");
1629
+ i0.ɵɵelementEnd();
1630
+ } if (rf & 2) {
1631
+ const option_r5 = ctx.$implicit;
1632
+ const ctx_r0 = i0.ɵɵnextContext(3);
1633
+ i0.ɵɵproperty("value", option_r5.value);
1634
+ i0.ɵɵadvance();
1635
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.translatable ? i0.ɵɵpipeBind1(2, 2, option_r5.text) : ctx_r0.options.text, " ");
1636
+ } }
1637
+ function CrudFieldComponent_Conditional_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1638
+ i0.ɵɵelementStart(0, "ion-select", 7);
1639
+ i0.ɵɵpipe(1, "translate");
1640
+ i0.ɵɵpipe(2, "translate");
1641
+ i0.ɵɵrepeaterCreate(3, CrudFieldComponent_Conditional_1_Conditional_7_For_4_Template, 3, 4, "ion-select-option", 12, _forTrack0$2);
1642
+ i0.ɵɵelementEnd();
1643
+ } if (rf & 2) {
1644
+ i0.ɵɵnextContext();
1645
+ const container_r2 = i0.ɵɵreference(3);
1646
+ const ctx_r0 = i0.ɵɵnextContext();
1647
+ i0.ɵɵproperty("name", ctx_r0.path)("mode", ctx_r0.mode)("hidden", ctx_r0.hidden)("labelPlacement", ctx_r0.labelPlacement)("label", ctx_r0.translatable ? i0.ɵɵpipeBind1(1, 11, ctx_r0.label) : ctx_r0.label)("value", ctx_r0.value)("fill", ctx_r0.fill)("placeholder", ctx_r0.translatable ? i0.ɵɵpipeBind1(2, 13, ctx_r0.placeholder) : ctx_r0.placeholder)("formControlName", ctx_r0.name)("errorText", ctx_r0.getErrors(container_r2))("interface", ctx_r0.interface);
1648
+ i0.ɵɵadvance(3);
1649
+ i0.ɵɵrepeater(ctx_r0.options);
1650
+ } }
1651
+ function CrudFieldComponent_Conditional_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1652
+ i0.ɵɵelement(0, "ion-input", 8);
1653
+ i0.ɵɵpipe(1, "translate");
1654
+ i0.ɵɵpipe(2, "translate");
1655
+ } if (rf & 2) {
1656
+ i0.ɵɵnextContext();
1657
+ const container_r2 = i0.ɵɵreference(3);
1658
+ const ctx_r0 = i0.ɵɵnextContext();
1659
+ i0.ɵɵproperty("name", ctx_r0.path)("type", ctx_r0.type)("mode", ctx_r0.mode)("hidden", ctx_r0.hidden)("inputmode", ctx_r0.inputmode)("labelPlacement", ctx_r0.labelPlacement)("required", ctx_r0.required !== undefined ? ctx_r0.required : false)("minlength", ctx_r0.minlength !== undefined ? ctx_r0.minlength : null)("maxlength", ctx_r0.maxlength !== undefined ? ctx_r0.maxlength : null)("readonly", ctx_r0.readonly !== undefined ? ctx_r0.readonly : null)("max", ctx_r0.max !== undefined ? ctx_r0.max : null)("min", ctx_r0.min !== undefined ? ctx_r0.min : null)("pattern", ctx_r0.pattern !== undefined ? ctx_r0.pattern : null)("step", ctx_r0.step !== undefined ? ctx_r0.step : null)("fill", ctx_r0.fill)("placeholder", ctx_r0.translatable ? i0.ɵɵpipeBind1(1, 19, ctx_r0.placeholder) : ctx_r0.placeholder)("formControlName", ctx_r0.name)("errorText", ctx_r0.getErrors(container_r2))("label", ctx_r0.translatable ? i0.ɵɵpipeBind1(2, 21, ctx_r0.label) : ctx_r0.label);
1660
+ } }
1661
+ function CrudFieldComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1662
+ i0.ɵɵelementContainerStart(0, 3, 0);
1663
+ i0.ɵɵelementStart(2, "div", null, 1);
1664
+ i0.ɵɵtemplate(4, CrudFieldComponent_Conditional_1_Conditional_4_Template, 3, 20, "ion-textarea", 5)(5, CrudFieldComponent_Conditional_1_Conditional_5_Template, 5, 13, "ion-item")(6, CrudFieldComponent_Conditional_1_Conditional_6_Template, 7, 7, "ion-radio-group", 6)(7, CrudFieldComponent_Conditional_1_Conditional_7_Template, 5, 15, "ion-select", 7)(8, CrudFieldComponent_Conditional_1_Conditional_8_Template, 3, 23, "ion-input", 8);
1665
+ i0.ɵɵelementEnd();
1666
+ i0.ɵɵelementContainerEnd();
1667
+ } if (rf & 2) {
1668
+ const ctx_r0 = i0.ɵɵnextContext();
1669
+ i0.ɵɵproperty("formGroup", ctx_r0.formGroup);
1670
+ i0.ɵɵadvance(2);
1671
+ i0.ɵɵclassMap("dcf-input-item " + (ctx_r0.operation || "create"));
1672
+ i0.ɵɵadvance(2);
1673
+ i0.ɵɵconditional(ctx_r0.type === "textarea" ? 4 : ctx_r0.type === "checkbox" ? 5 : ctx_r0.type === "radio" ? 6 : ctx_r0.type === "select" ? 7 : 8);
1674
+ } }
1491
1675
  /**
1492
1676
  * @description A dynamic form field component for CRUD operations.
1493
1677
  * @summary The CrudFieldComponent is a versatile form field component that adapts to different
@@ -1653,125 +1837,143 @@ let CrudFieldComponent = class CrudFieldComponent extends NgxCrudFormField {
1653
1837
  if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation))
1654
1838
  this.onDestroy();
1655
1839
  }
1656
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1657
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CrudFieldComponent, isStandalone: true, selector: "ngx-decaf-crud-field", inputs: { operation: "operation", name: "name", path: "path", childOf: "childOf", type: "type", value: "value", disabled: "disabled", label: "label", placeholder: "placeholder", format: "format", hidden: "hidden", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", pattern: "pattern", readonly: "readonly", required: "required", step: "step", equals: "equals", different: "different", lessThan: "lessThan", lessThanOrEqual: "lessThanOrEqual", greaterThan: "greaterThan", greaterThanOrEqual: "greaterThanOrEqual", cols: "cols", rows: "rows", alignment: "alignment", checked: "checked", justify: "justify", cancelText: "cancelText", interface: "interface", options: "options", mode: "mode", spellcheck: "spellcheck", inputmode: "inputmode", autocomplete: "autocomplete", fill: "fill", labelPlacement: "labelPlacement", updateOn: "updateOn", formGroup: "formGroup", formControl: "formControl", translatable: "translatable", uid: "uid" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text [innerHTML]=\"type === 'password' ? '********' : value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [errorText]=\"getErrors(container)\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [errorText]=\"getErrors(container)\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [errorText]=\"getErrors(container)\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600;color:var(--ion-color-gray-7)}.dcf-input-item.read ion-text,.dcf-input-item.delete ion-text{display:block;margin-top:.5rem!important;color:var(--ion-color-gray-5)}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15;--border-color: var(--ion-color-gray-2)}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-7)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
1840
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵCrudFieldComponent_BaseFactory; return function CrudFieldComponent_Factory(__ngFactoryType__) { return (ɵCrudFieldComponent_BaseFactory || (ɵCrudFieldComponent_BaseFactory = i0.ɵɵgetInheritedFactory(CrudFieldComponent)))(__ngFactoryType__ || CrudFieldComponent); }; })(); }
1841
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CrudFieldComponent, selectors: [["ngx-decaf-crud-field"]], viewQuery: function CrudFieldComponent_Query(rf, ctx) { if (rf & 1) {
1842
+ i0.ɵɵviewQuery(_c0$9, 5, ElementRef);
1843
+ } if (rf & 2) {
1844
+ let _t;
1845
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.component = _t.first);
1846
+ } }, inputs: { operation: "operation", name: "name", path: "path", childOf: "childOf", type: "type", value: "value", disabled: "disabled", label: "label", placeholder: "placeholder", format: "format", hidden: "hidden", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", pattern: "pattern", readonly: "readonly", required: "required", step: "step", equals: "equals", different: "different", lessThan: "lessThan", lessThanOrEqual: "lessThanOrEqual", greaterThan: "greaterThan", greaterThanOrEqual: "greaterThanOrEqual", cols: "cols", rows: "rows", alignment: "alignment", checked: "checked", justify: "justify", cancelText: "cancelText", interface: "interface", options: "options", mode: "mode", spellcheck: "spellcheck", inputmode: "inputmode", autocomplete: "autocomplete", fill: "fill", labelPlacement: "labelPlacement", updateOn: "updateOn", formGroup: "formGroup", formControl: "formControl", translatable: "translatable", uid: "uid" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 2, vars: 1, consts: [["component", ""], ["container", ""], ["checkboxElement", ""], [3, "formGroup"], [3, "innerHTML"], [3, "mode", "hidden", "required", "minlength", "maxlength", "readonly", "inputmode", "spellcheck", "rows", "labelPlacement", "value", "fill", "errorText", "placeholder", "formControlName", "label"], [3, "formControlName", "name", "value"], ["toggleIcon", "chevron-down-outline", "expandedIcon", "chevron-up-outline", 3, "name", "mode", "hidden", "labelPlacement", "label", "value", "fill", "placeholder", "formControlName", "errorText", "interface"], [3, "name", "type", "mode", "hidden", "inputmode", "labelPlacement", "required", "minlength", "maxlength", "readonly", "max", "min", "pattern", "step", "fill", "placeholder", "formControlName", "errorText", "label"], [3, "ionChange", "name", "mode", "errorText", "hidden", "labelPlacement", "justify", "value", "checked", "readonly", "formControlName"], [1, "dcf-radio-group-label", 3, "for"], [3, "errorText", "mode", "hidden", "labelPlacement", "alignment", "justify", "readonly", "value"], [3, "value"]], template: function CrudFieldComponent_Template(rf, ctx) { if (rf & 1) {
1847
+ i0.ɵɵtemplate(0, CrudFieldComponent_Conditional_0_Template, 10, 6, "ng-container")(1, CrudFieldComponent_Conditional_1_Template, 9, 4, "ng-container", 3);
1848
+ } if (rf & 2) {
1849
+ i0.ɵɵconditional(ctx.operation === "read" || ctx.operation === "delete" ? 0 : 1);
1850
+ } }, dependencies: [ForAngularModule, i1.IonText, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.RequiredValidator, i2$1.MinLengthValidator, i2$1.MaxLengthValidator, i2$1.PatternValidator, i2$1.FormGroupDirective, i2$1.FormControlName, i3.TranslatePipe, IonInput,
1851
+ IonItem,
1852
+ IonCheckbox,
1853
+ IonRadioGroup,
1854
+ IonRadio,
1855
+ IonSelect,
1856
+ IonSelectOption,
1857
+ IonLabel,
1858
+ IonTextarea], styles: [".dcf-input-item.create[_ngcontent-%COMP%], .dcf-input-item.update[_ngcontent-%COMP%]{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox[_ngcontent-%COMP%] + .checkbox[_ngcontent-%COMP%], .dcf-input-item.update.checkbox[_ngcontent-%COMP%] + .checkbox[_ngcontent-%COMP%]{margin-top:-.25rem!important}.dcf-input-item.create[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%], .dcf-input-item.update[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%]{--border-color: transparent}.dcf-input-item.create[_ngcontent-%COMP%] ion-item.dcf-text-wrap[_ngcontent-%COMP%] ion-label[_ngcontent-%COMP%] > *[_ngcontent-%COMP%], .dcf-input-item.update[_ngcontent-%COMP%] ion-item.dcf-text-wrap[_ngcontent-%COMP%] ion-label[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read[_ngcontent-%COMP%] ion-label[_ngcontent-%COMP%], .dcf-input-item.delete[_ngcontent-%COMP%] ion-label[_ngcontent-%COMP%]{font-weight:600;color:var(--ion-color-gray-7)}.dcf-input-item.read[_ngcontent-%COMP%] ion-text[_ngcontent-%COMP%], .dcf-input-item.delete[_ngcontent-%COMP%] ion-text[_ngcontent-%COMP%]{display:block;margin-top:.5rem!important;color:var(--ion-color-gray-5)}.dcf-input-item[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%]{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15;--border-color: var(--ion-color-gray-2)}.dcf-input-item[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .dcf-input-item[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%] ion-text[_ngcontent-%COMP%]{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:not(.dcf-display-block), .dcf-input-item[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%] ion-text[_ngcontent-%COMP%]:not(.dcf-display-block){display:inline-block}.dcf-input-item[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%] span.dcf-display-block[_ngcontent-%COMP%], .dcf-input-item[_ngcontent-%COMP%] ion-item[_ngcontent-%COMP%] ion-text.dcf-display-block[_ngcontent-%COMP%]{display:block!important}ion-textarea[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating[_ngcontent-%COMP%]::part(label){line-height:1.2rem!important}.dcf-proccessing[_ngcontent-%COMP%], .dcf-proccessing[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{pointer-events:none;touch-action:none;cursor:text}ion-checkbox[_ngcontent-%COMP%]{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item[_ngcontent-%COMP%]{--inner-padding-start: .75rem}ion-checkbox[_ngcontent-%COMP%]::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item[_ngcontent-%COMP%] .dcf-radio-group-label[_ngcontent-%COMP%], ion-radio-group[_ngcontent-%COMP%] .dcf-radio-group-label[_ngcontent-%COMP%]{font-weight:600}ion-item[_ngcontent-%COMP%] .dcf-radio-group-label[_ngcontent-%COMP%] ~ ion-item[_ngcontent-%COMP%], ion-radio-group[_ngcontent-%COMP%] .dcf-radio-group-label[_ngcontent-%COMP%] ~ ion-item[_ngcontent-%COMP%]{margin-top:.5rem;--inner-padding-start: .75rem}ion-item[_ngcontent-%COMP%] + .dcf-helper[_ngcontent-%COMP%], ion-radio-group[_ngcontent-%COMP%] + .dcf-helper[_ngcontent-%COMP%]{padding-left:.75rem;position:relative}.dcf-error[_ngcontent-%COMP%]{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:_ngcontent-%COMP%_fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error[_ngcontent-%COMP%] .ti[_ngcontent-%COMP%], .dcf-error[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action[_ngcontent-%COMP%]{cursor:pointer;color:var(--ion-color-gray-7)!important;text-decoration:underline}.dcf-error[_ngcontent-%COMP%] + .dcf-helper[_ngcontent-%COMP%]{padding-top:1rem}@keyframes _ngcontent-%COMP%_fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes _ngcontent-%COMP%_fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes _ngcontent-%COMP%_fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}"] }); }
1658
1859
  };
1659
1860
  CrudFieldComponent = __decorate([
1660
1861
  Dynamic()
1661
1862
  ], CrudFieldComponent);
1662
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFieldComponent, decorators: [{
1663
- type: Component,
1664
- args: [{ standalone: true, imports: [
1665
- ForAngularModule,
1666
- IonInput,
1667
- IonItem,
1668
- IonCheckbox,
1669
- IonRadioGroup,
1670
- IonRadio,
1671
- IonSelect,
1672
- IonSelectOption,
1673
- IonLabel,
1674
- IonText,
1675
- IonTextarea,
1676
- IonIcon
1677
- ], selector: 'ngx-decaf-crud-field', schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text [innerHTML]=\"type === 'password' ? '********' : value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [errorText]=\"getErrors(container)\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [errorText]=\"getErrors(container)\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [errorText]=\"getErrors(container)\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600;color:var(--ion-color-gray-7)}.dcf-input-item.read ion-text,.dcf-input-item.delete ion-text{display:block;margin-top:.5rem!important;color:var(--ion-color-gray-5)}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15;--border-color: var(--ion-color-gray-2)}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-7)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"] }]
1678
- }], propDecorators: { operation: [{
1679
- type: Input,
1680
- args: [{ required: true }]
1681
- }], name: [{
1682
- type: Input,
1683
- args: [{ required: true }]
1684
- }], path: [{
1685
- type: Input,
1686
- args: [{ required: true }]
1687
- }], childOf: [{
1688
- type: Input
1689
- }], type: [{
1690
- type: Input,
1691
- args: [{ required: true }]
1692
- }], value: [{
1693
- type: Input
1694
- }], disabled: [{
1695
- type: Input
1696
- }], label: [{
1697
- type: Input,
1698
- args: [{ required: true }]
1699
- }], placeholder: [{
1700
- type: Input
1701
- }], format: [{
1702
- type: Input
1703
- }], hidden: [{
1704
- type: Input
1705
- }], max: [{
1706
- type: Input
1707
- }], maxlength: [{
1708
- type: Input
1709
- }], min: [{
1710
- type: Input
1711
- }], minlength: [{
1712
- type: Input
1713
- }], pattern: [{
1714
- type: Input
1715
- }], readonly: [{
1716
- type: Input
1717
- }], required: [{
1718
- type: Input
1719
- }], step: [{
1720
- type: Input
1721
- }], equals: [{
1722
- type: Input
1723
- }], different: [{
1724
- type: Input
1725
- }], lessThan: [{
1726
- type: Input
1727
- }], lessThanOrEqual: [{
1728
- type: Input
1729
- }], greaterThan: [{
1730
- type: Input
1731
- }], greaterThanOrEqual: [{
1732
- type: Input
1733
- }], cols: [{
1734
- type: Input
1735
- }], rows: [{
1736
- type: Input
1737
- }], alignment: [{
1738
- type: Input
1739
- }], checked: [{
1740
- type: Input
1741
- }], justify: [{
1742
- type: Input
1743
- }], cancelText: [{
1744
- type: Input
1745
- }], interface: [{
1746
- type: Input
1747
- }], options: [{
1748
- type: Input
1749
- }], mode: [{
1750
- type: Input
1751
- }], spellcheck: [{
1752
- type: Input
1753
- }], inputmode: [{
1754
- type: Input
1755
- }], autocomplete: [{
1756
- type: Input
1757
- }], fill: [{
1758
- type: Input
1759
- }], labelPlacement: [{
1760
- type: Input
1761
- }], updateOn: [{
1762
- type: Input
1763
- }], component: [{
1764
- type: ViewChild,
1765
- args: ['component', { read: ElementRef }]
1766
- }], formGroup: [{
1767
- type: Input
1768
- }], formControl: [{
1769
- type: Input
1770
- }], translatable: [{
1771
- type: Input
1772
- }], uid: [{
1773
- type: Input
1774
- }] } });
1863
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CrudFieldComponent, [{
1864
+ type: Component,
1865
+ args: [{ standalone: true, imports: [
1866
+ ForAngularModule,
1867
+ IonInput,
1868
+ IonItem,
1869
+ IonCheckbox,
1870
+ IonRadioGroup,
1871
+ IonRadio,
1872
+ IonSelect,
1873
+ IonSelectOption,
1874
+ IonLabel,
1875
+ IonText,
1876
+ IonTextarea,
1877
+ IonIcon
1878
+ ], selector: 'ngx-decaf-crud-field', schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text [innerHTML]=\"type === 'password' ? '********' : value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [errorText]=\"getErrors(container)\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [errorText]=\"getErrors(container)\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [errorText]=\"getErrors(container)\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600;color:var(--ion-color-gray-7)}.dcf-input-item.read ion-text,.dcf-input-item.delete ion-text{display:block;margin-top:.5rem!important;color:var(--ion-color-gray-5)}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15;--border-color: var(--ion-color-gray-2)}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-7)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"] }]
1879
+ }], null, { operation: [{
1880
+ type: Input,
1881
+ args: [{ required: true }]
1882
+ }], name: [{
1883
+ type: Input,
1884
+ args: [{ required: true }]
1885
+ }], path: [{
1886
+ type: Input,
1887
+ args: [{ required: true }]
1888
+ }], childOf: [{
1889
+ type: Input
1890
+ }], type: [{
1891
+ type: Input,
1892
+ args: [{ required: true }]
1893
+ }], value: [{
1894
+ type: Input
1895
+ }], disabled: [{
1896
+ type: Input
1897
+ }], label: [{
1898
+ type: Input,
1899
+ args: [{ required: true }]
1900
+ }], placeholder: [{
1901
+ type: Input
1902
+ }], format: [{
1903
+ type: Input
1904
+ }], hidden: [{
1905
+ type: Input
1906
+ }], max: [{
1907
+ type: Input
1908
+ }], maxlength: [{
1909
+ type: Input
1910
+ }], min: [{
1911
+ type: Input
1912
+ }], minlength: [{
1913
+ type: Input
1914
+ }], pattern: [{
1915
+ type: Input
1916
+ }], readonly: [{
1917
+ type: Input
1918
+ }], required: [{
1919
+ type: Input
1920
+ }], step: [{
1921
+ type: Input
1922
+ }], equals: [{
1923
+ type: Input
1924
+ }], different: [{
1925
+ type: Input
1926
+ }], lessThan: [{
1927
+ type: Input
1928
+ }], lessThanOrEqual: [{
1929
+ type: Input
1930
+ }], greaterThan: [{
1931
+ type: Input
1932
+ }], greaterThanOrEqual: [{
1933
+ type: Input
1934
+ }], cols: [{
1935
+ type: Input
1936
+ }], rows: [{
1937
+ type: Input
1938
+ }], alignment: [{
1939
+ type: Input
1940
+ }], checked: [{
1941
+ type: Input
1942
+ }], justify: [{
1943
+ type: Input
1944
+ }], cancelText: [{
1945
+ type: Input
1946
+ }], interface: [{
1947
+ type: Input
1948
+ }], options: [{
1949
+ type: Input
1950
+ }], mode: [{
1951
+ type: Input
1952
+ }], spellcheck: [{
1953
+ type: Input
1954
+ }], inputmode: [{
1955
+ type: Input
1956
+ }], autocomplete: [{
1957
+ type: Input
1958
+ }], fill: [{
1959
+ type: Input
1960
+ }], labelPlacement: [{
1961
+ type: Input
1962
+ }], updateOn: [{
1963
+ type: Input
1964
+ }], component: [{
1965
+ type: ViewChild,
1966
+ args: ['component', { read: ElementRef }]
1967
+ }], formGroup: [{
1968
+ type: Input
1969
+ }], formControl: [{
1970
+ type: Input
1971
+ }], translatable: [{
1972
+ type: Input
1973
+ }], uid: [{
1974
+ type: Input
1975
+ }] }); })();
1976
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CrudFieldComponent, { className: "CrudFieldComponent", filePath: "components/crud-field/crud-field.component.ts", lineNumber: 100 }); })();
1775
1977
 
1776
1978
  /**
1777
1979
  * @description Abstract base class for dynamic Angular modules
@@ -2393,6 +2595,7 @@ function removeFocusTrap() {
2393
2595
  doc.activeElement?.blur();
2394
2596
  }
2395
2597
 
2598
+ const _c0$8 = ["component"];
2396
2599
  /**
2397
2600
  * @description Base component class that provides common functionality for all Decaf components.
2398
2601
  * @summary The NgxBaseComponent serves as the foundation for all Decaf UI components, providing
@@ -2876,52 +3079,58 @@ class NgxBaseComponent {
2876
3079
  trackItemFn(index, item) {
2877
3080
  return `${index}-${item}`;
2878
3081
  }
2879
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxBaseComponent, deps: [{ token: 'instanceToken' }], target: i0.ɵɵFactoryTarget.Component }); }
2880
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NgxBaseComponent, isStandalone: true, selector: "ng-component", inputs: { rendererId: "rendererId", model: "model", props: "props", item: "item", pk: "pk", route: "route", operations: "operations", uid: "uid", mapper: "mapper", locale: "locale", translatable: "translatable", className: "className", mode: "mode", renderChild: "renderChild" }, outputs: { listenEvent: "listenEvent" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
3082
+ static { this.ɵfac = function NgxBaseComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NgxBaseComponent)(i0.ɵɵdirectiveInject('instanceToken')); }; }
3083
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NgxBaseComponent, selectors: [["ng-component"]], viewQuery: function NgxBaseComponent_Query(rf, ctx) { if (rf & 1) {
3084
+ i0.ɵɵviewQuery(_c0$8, 7, ElementRef);
3085
+ } if (rf & 2) {
3086
+ let _t;
3087
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.component = _t.first);
3088
+ } }, inputs: { rendererId: "rendererId", model: "model", props: "props", item: "item", pk: "pk", route: "route", operations: "operations", uid: "uid", mapper: "mapper", locale: "locale", translatable: "translatable", className: "className", mode: "mode", renderChild: "renderChild" }, outputs: { listenEvent: "listenEvent" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 0, vars: 0, template: function NgxBaseComponent_Template(rf, ctx) { }, encapsulation: 2 }); }
2881
3089
  }
2882
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxBaseComponent, decorators: [{
2883
- type: Component,
2884
- args: [{
2885
- standalone: true,
2886
- template: '',
2887
- }]
2888
- }], ctorParameters: () => [{ type: undefined, decorators: [{
2889
- type: Inject,
2890
- args: ['instanceToken']
2891
- }] }], propDecorators: { component: [{
2892
- type: ViewChild,
2893
- args: ['component', { read: ElementRef, static: true }]
2894
- }], rendererId: [{
2895
- type: Input
2896
- }], model: [{
2897
- type: Input
2898
- }], props: [{
2899
- type: Input
2900
- }], item: [{
2901
- type: Input
2902
- }], pk: [{
2903
- type: Input
2904
- }], route: [{
2905
- type: Input
2906
- }], operations: [{
2907
- type: Input
2908
- }], uid: [{
2909
- type: Input
2910
- }], mapper: [{
2911
- type: Input
2912
- }], locale: [{
2913
- type: Input
2914
- }], translatable: [{
2915
- type: Input
2916
- }], className: [{
2917
- type: Input
2918
- }], mode: [{
2919
- type: Input
2920
- }], renderChild: [{
2921
- type: Input
2922
- }], listenEvent: [{
2923
- type: Output
2924
- }] } });
3090
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgxBaseComponent, [{
3091
+ type: Component,
3092
+ args: [{
3093
+ standalone: true,
3094
+ template: '',
3095
+ }]
3096
+ }], () => [{ type: undefined, decorators: [{
3097
+ type: Inject,
3098
+ args: ['instanceToken']
3099
+ }] }], { component: [{
3100
+ type: ViewChild,
3101
+ args: ['component', { read: ElementRef, static: true }]
3102
+ }], rendererId: [{
3103
+ type: Input
3104
+ }], model: [{
3105
+ type: Input
3106
+ }], props: [{
3107
+ type: Input
3108
+ }], item: [{
3109
+ type: Input
3110
+ }], pk: [{
3111
+ type: Input
3112
+ }], route: [{
3113
+ type: Input
3114
+ }], operations: [{
3115
+ type: Input
3116
+ }], uid: [{
3117
+ type: Input
3118
+ }], mapper: [{
3119
+ type: Input
3120
+ }], locale: [{
3121
+ type: Input
3122
+ }], translatable: [{
3123
+ type: Input
3124
+ }], className: [{
3125
+ type: Input
3126
+ }], mode: [{
3127
+ type: Input
3128
+ }], renderChild: [{
3129
+ type: Input
3130
+ }], listenEvent: [{
3131
+ type: Output
3132
+ }] }); })();
3133
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NgxBaseComponent, { className: "NgxBaseComponent", filePath: "engine/NgxBaseComponent.ts", lineNumber: 97 }); })();
2925
3134
 
2926
3135
  /**
2927
3136
  * @module engine
@@ -2947,6 +3156,128 @@ const DefaultFormReactiveOptions = {
2947
3156
  },
2948
3157
  };
2949
3158
 
3159
+ const _c0$7 = ["reactiveForm"];
3160
+ const _c1$6 = ["*"];
3161
+ const _c2$2 = () => ["create", "update"];
3162
+ const _c3$1 = () => ["delete", "read", "update"];
3163
+ function CrudFormComponent_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
3164
+ i0.ɵɵelement(0, "ion-icon", 6);
3165
+ } if (rf & 2) {
3166
+ const ctx_r1 = i0.ɵɵnextContext(2);
3167
+ i0.ɵɵproperty("slot", ctx_r1.options.buttons.submit.iconSlot)("name", ctx_r1.options.buttons.submit.icon);
3168
+ } }
3169
+ function CrudFormComponent_Conditional_0_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
3170
+ i0.ɵɵelement(0, "ion-icon", 6);
3171
+ } if (rf & 2) {
3172
+ const ctx_r1 = i0.ɵɵnextContext(3);
3173
+ i0.ɵɵproperty("slot", ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.iconSlot)("name", ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.icon);
3174
+ } }
3175
+ function CrudFormComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
3176
+ const _r3 = i0.ɵɵgetCurrentView();
3177
+ i0.ɵɵelementStart(0, "ion-button", 8);
3178
+ i0.ɵɵlistener("click", function CrudFormComponent_Conditional_0_Conditional_9_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleReset()); });
3179
+ i0.ɵɵtemplate(1, CrudFormComponent_Conditional_0_Conditional_9_Conditional_1_Template, 1, 2, "ion-icon", 6);
3180
+ i0.ɵɵtext(2);
3181
+ i0.ɵɵelementEnd();
3182
+ } if (rf & 2) {
3183
+ const ctx_r1 = i0.ɵɵnextContext(2);
3184
+ i0.ɵɵadvance();
3185
+ i0.ɵɵconditional((ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.icon) ? 1 : -1);
3186
+ i0.ɵɵadvance();
3187
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpureFunction0(2, _c2$2).includes(ctx_r1.operation) ? "Back" : ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.text, " ");
3188
+ } }
3189
+ function CrudFormComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
3190
+ const _r1 = i0.ɵɵgetCurrentView();
3191
+ i0.ɵɵelementStart(0, "form", 3, 0);
3192
+ i0.ɵɵlistener("submit", function CrudFormComponent_Conditional_0_Template_form_submit_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.submit($event)); });
3193
+ i0.ɵɵprojection(2, 0, ["#formContent", ""]);
3194
+ i0.ɵɵelementStart(3, "div", 4)(4, "div")(5, "ion-button", 5);
3195
+ i0.ɵɵtemplate(6, CrudFormComponent_Conditional_0_Conditional_6_Template, 1, 2, "ion-icon", 6);
3196
+ i0.ɵɵtext(7);
3197
+ i0.ɵɵelementEnd()();
3198
+ i0.ɵɵelementStart(8, "div");
3199
+ i0.ɵɵtemplate(9, CrudFormComponent_Conditional_0_Conditional_9_Template, 3, 3, "ion-button", 7);
3200
+ i0.ɵɵelementEnd()()();
3201
+ } if (rf & 2) {
3202
+ const ctx_r1 = i0.ɵɵnextContext();
3203
+ i0.ɵɵproperty("id", ctx_r1.rendererId)("formGroup", ctx_r1.formGroup)("target", ctx_r1.target);
3204
+ i0.ɵɵadvance(6);
3205
+ i0.ɵɵconditional(ctx_r1.options.buttons.submit.icon ? 6 : -1);
3206
+ i0.ɵɵadvance();
3207
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.action ? ctx_r1.action : ctx_r1.options.buttons.submit.text, " ");
3208
+ i0.ɵɵadvance(2);
3209
+ i0.ɵɵconditional(ctx_r1.options.buttons.clear ? 9 : -1);
3210
+ } }
3211
+ function CrudFormComponent_Conditional_1_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
3212
+ i0.ɵɵelement(0, "ion-icon", 6);
3213
+ } if (rf & 2) {
3214
+ const ctx_r1 = i0.ɵɵnextContext(3);
3215
+ i0.ɵɵproperty("slot", ctx_r1.options.buttons.submit.iconSlot)("name", ctx_r1.options.buttons.submit.icon);
3216
+ } }
3217
+ function CrudFormComponent_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
3218
+ const _r4 = i0.ɵɵgetCurrentView();
3219
+ i0.ɵɵelementStart(0, "div")(1, "ion-button", 10);
3220
+ i0.ɵɵlistener("click", function CrudFormComponent_Conditional_1_Conditional_1_Template_ion_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleDelete()); });
3221
+ i0.ɵɵtemplate(2, CrudFormComponent_Conditional_1_Conditional_1_Conditional_2_Template, 1, 2, "ion-icon", 6);
3222
+ i0.ɵɵtext(3, " Delete ");
3223
+ i0.ɵɵelementEnd()();
3224
+ } if (rf & 2) {
3225
+ const ctx_r1 = i0.ɵɵnextContext(2);
3226
+ i0.ɵɵadvance(2);
3227
+ i0.ɵɵconditional(ctx_r1.options.buttons.submit.icon ? 2 : -1);
3228
+ } }
3229
+ function CrudFormComponent_Conditional_1_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
3230
+ i0.ɵɵelement(0, "ion-icon", 6);
3231
+ } if (rf & 2) {
3232
+ const ctx_r1 = i0.ɵɵnextContext(3);
3233
+ i0.ɵɵproperty("slot", ctx_r1.options.buttons.submit.iconSlot)("name", ctx_r1.options.buttons.submit.icon);
3234
+ } }
3235
+ function CrudFormComponent_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
3236
+ i0.ɵɵelementStart(0, "div")(1, "ion-button", 5);
3237
+ i0.ɵɵtemplate(2, CrudFormComponent_Conditional_1_Conditional_2_Conditional_2_Template, 1, 2, "ion-icon", 6);
3238
+ i0.ɵɵtext(3);
3239
+ i0.ɵɵelementEnd()();
3240
+ } if (rf & 2) {
3241
+ const ctx_r1 = i0.ɵɵnextContext(2);
3242
+ i0.ɵɵadvance(2);
3243
+ i0.ɵɵconditional(ctx_r1.options.buttons.submit.icon ? 2 : -1);
3244
+ i0.ɵɵadvance();
3245
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.options.buttons.submit.text, " ");
3246
+ } }
3247
+ function CrudFormComponent_Conditional_1_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
3248
+ i0.ɵɵelement(0, "ion-icon", 6);
3249
+ } if (rf & 2) {
3250
+ const ctx_r1 = i0.ɵɵnextContext(3);
3251
+ i0.ɵɵproperty("slot", ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.iconSlot)("name", ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.icon);
3252
+ } }
3253
+ function CrudFormComponent_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
3254
+ const _r5 = i0.ɵɵgetCurrentView();
3255
+ i0.ɵɵelementStart(0, "div")(1, "ion-button", 8);
3256
+ i0.ɵɵlistener("click", function CrudFormComponent_Conditional_1_Conditional_3_Template_ion_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleReset()); });
3257
+ i0.ɵɵtemplate(2, CrudFormComponent_Conditional_1_Conditional_3_Conditional_2_Template, 1, 2, "ion-icon", 6);
3258
+ i0.ɵɵtext(3);
3259
+ i0.ɵɵelementEnd()();
3260
+ } if (rf & 2) {
3261
+ const ctx_r1 = i0.ɵɵnextContext(2);
3262
+ i0.ɵɵadvance(2);
3263
+ i0.ɵɵconditional((ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.icon) ? 2 : -1);
3264
+ i0.ɵɵadvance();
3265
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpureFunction0(2, _c3$1).includes(ctx_r1.operation) ? "Back" : ctx_r1.options.buttons.clear == null ? null : ctx_r1.options.buttons.clear.text, " ");
3266
+ } }
3267
+ function CrudFormComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
3268
+ i0.ɵɵelementStart(0, "div", 9);
3269
+ i0.ɵɵtemplate(1, CrudFormComponent_Conditional_1_Conditional_1_Template, 4, 1, "div")(2, CrudFormComponent_Conditional_1_Conditional_2_Template, 4, 2, "div")(3, CrudFormComponent_Conditional_1_Conditional_3_Template, 4, 3, "div");
3270
+ i0.ɵɵelementEnd();
3271
+ } if (rf & 2) {
3272
+ const ctx_r1 = i0.ɵɵnextContext();
3273
+ i0.ɵɵclassMap("dcf-grid dcf-grid-collapse dcf-flex dcf-flex-left " + ctx_r1.operation);
3274
+ i0.ɵɵadvance();
3275
+ i0.ɵɵconditional(ctx_r1.operation === "delete" && ctx_r1.uid ? 1 : -1);
3276
+ i0.ɵɵadvance();
3277
+ i0.ɵɵconditional(ctx_r1.operation === ctx_r1.OperationKeys.CREATE || ctx_r1.operation === ctx_r1.OperationKeys.UPDATE ? 2 : -1);
3278
+ i0.ɵɵadvance();
3279
+ i0.ɵɵconditional(ctx_r1.options.buttons.clear ? 3 : -1);
3280
+ } }
2950
3281
  /**
2951
3282
  * @component CrudFormComponent
2952
3283
  * @example <ngx-decaf-crud-form
@@ -3032,46 +3363,57 @@ let CrudFormComponent = class CrudFormComponent {
3032
3363
  name: EventConstants.SUBMIT_EVENT,
3033
3364
  });
3034
3365
  }
3035
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3036
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CrudFormComponent, isStandalone: true, selector: "ngx-decaf-crud-form", inputs: { model: "model", updateOn: "updateOn", target: "target", method: "method", options: "options", action: "action", operation: "operation", handlers: "handlers", formGroup: "formGroup", childOf: "childOf", rendererId: "rendererId", uid: "uid" }, outputs: { submitEvent: "submitEvent" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["reactiveForm"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if(operation !== 'read' && operation !== 'delete') {\n <form #reactiveForm [id]=\"rendererId\" [formGroup]=\"formGroup\" (submit)=\"submit($event)\" novalidate [target]=\"target\">\n <ng-content #formContent></ng-content>\n <div id=\"dcf-buttons-container\" class=\"dcf-grid dcf-grid-collapse dcf-flex dcf-flex-left\">\n <div>\n <ion-button\n type=\"submit\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{ action ? action : options.buttons.submit.text}}\n </ion-button>\n </div>\n <div>\n @if(options.buttons.clear) {\n <ion-button fill=\"clear\" (click)=\"handleReset()\">\n @if(options.buttons.clear?.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{ ['create', 'update'].includes(operation) ? 'Back' : options.buttons.clear?.text}}\n </ion-button>\n }\n </div>\n </div>\n </form>\n} @else {\n <div [class]=\"'dcf-grid dcf-grid-collapse dcf-flex dcf-flex-left ' + operation\" id=\"dcf-buttons-container\">\n\n @if(operation === 'delete' && uid) {\n <div>\n <ion-button\n (click)=\"handleDelete()\"\n color=\"danger\"\n type=\"button\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n Delete\n </ion-button>\n </div>\n\n }\n @if(operation === OperationKeys.CREATE || operation === OperationKeys.UPDATE) {\n <div>\n <ion-button\n type=\"submit\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{options.buttons.submit.text}}\n </ion-button>\n </div>\n }\n\n @if(options.buttons.clear) {\n <div>\n <ion-button fill=\"clear\" (click)=\"handleReset()\">\n @if(options.buttons.clear?.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{ ['delete', 'read', 'update'].includes(operation) ? 'Back' : options.buttons.clear?.text}}\n </ion-button>\n </div>\n\n }\n </div>\n}\n\n", styles: ["#dcf-buttons-container{margin-top:1.8rem;margin-bottom:0}@media (min-width: 991px){#dcf-buttons-container.dcf-flex{flex-direction:row-reverse}}@media (max-width: 990px){#dcf-buttons-container.dcf-flex div{width:100%}#dcf-buttons-container.dcf-flex ion-button{width:100%;margin-bottom:1rem}}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
3366
+ static { this.ɵfac = function CrudFormComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CrudFormComponent)(); }; }
3367
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CrudFormComponent, selectors: [["ngx-decaf-crud-form"]], viewQuery: function CrudFormComponent_Query(rf, ctx) { if (rf & 1) {
3368
+ i0.ɵɵviewQuery(_c0$7, 5, ElementRef);
3369
+ } if (rf & 2) {
3370
+ let _t;
3371
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.component = _t.first);
3372
+ } }, inputs: { model: "model", updateOn: "updateOn", target: "target", method: "method", options: "options", action: "action", operation: "operation", handlers: "handlers", formGroup: "formGroup", childOf: "childOf", rendererId: "rendererId", uid: "uid" }, outputs: { submitEvent: "submitEvent" }, standalone: true, features: [i0.ɵɵStandaloneFeature], ngContentSelectors: _c1$6, decls: 2, vars: 1, consts: [["reactiveForm", ""], ["novalidate", "", 3, "id", "formGroup", "target"], ["id", "dcf-buttons-container", 3, "class"], ["novalidate", "", 3, "submit", "id", "formGroup", "target"], ["id", "dcf-buttons-container", 1, "dcf-grid", "dcf-grid-collapse", "dcf-flex", "dcf-flex-left"], ["type", "submit"], ["aria-hidden", "true", 3, "slot", "name"], ["fill", "clear"], ["fill", "clear", 3, "click"], ["id", "dcf-buttons-container"], ["color", "danger", "type", "button", 3, "click"]], template: function CrudFormComponent_Template(rf, ctx) { if (rf & 1) {
3373
+ i0.ɵɵprojectionDef();
3374
+ i0.ɵɵtemplate(0, CrudFormComponent_Conditional_0_Template, 10, 6, "form", 1)(1, CrudFormComponent_Conditional_1_Template, 4, 5, "div", 2);
3375
+ } if (rf & 2) {
3376
+ i0.ɵɵconditional(ctx.operation !== "read" && ctx.operation !== "delete" ? 0 : 1);
3377
+ } }, dependencies: [ForAngularModule, i1.IonButton, i2$1.ɵNgNoValidate, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, IonIcon], styles: ["#dcf-buttons-container[_ngcontent-%COMP%]{margin-top:1.8rem;margin-bottom:0}@media (min-width: 991px){#dcf-buttons-container.dcf-flex[_ngcontent-%COMP%]{flex-direction:row-reverse}}@media (max-width: 990px){#dcf-buttons-container.dcf-flex[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:100%}#dcf-buttons-container.dcf-flex[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%]{width:100%;margin-bottom:1rem}}"] }); }
3037
3378
  };
3038
3379
  CrudFormComponent = __decorate([
3039
3380
  Dynamic()
3040
3381
  ], CrudFormComponent);
3041
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFormComponent, decorators: [{
3042
- type: Component,
3043
- args: [{ standalone: true, selector: 'ngx-decaf-crud-form', imports: [ForAngularModule, IonIcon], template: "@if(operation !== 'read' && operation !== 'delete') {\n <form #reactiveForm [id]=\"rendererId\" [formGroup]=\"formGroup\" (submit)=\"submit($event)\" novalidate [target]=\"target\">\n <ng-content #formContent></ng-content>\n <div id=\"dcf-buttons-container\" class=\"dcf-grid dcf-grid-collapse dcf-flex dcf-flex-left\">\n <div>\n <ion-button\n type=\"submit\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{ action ? action : options.buttons.submit.text}}\n </ion-button>\n </div>\n <div>\n @if(options.buttons.clear) {\n <ion-button fill=\"clear\" (click)=\"handleReset()\">\n @if(options.buttons.clear?.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{ ['create', 'update'].includes(operation) ? 'Back' : options.buttons.clear?.text}}\n </ion-button>\n }\n </div>\n </div>\n </form>\n} @else {\n <div [class]=\"'dcf-grid dcf-grid-collapse dcf-flex dcf-flex-left ' + operation\" id=\"dcf-buttons-container\">\n\n @if(operation === 'delete' && uid) {\n <div>\n <ion-button\n (click)=\"handleDelete()\"\n color=\"danger\"\n type=\"button\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n Delete\n </ion-button>\n </div>\n\n }\n @if(operation === OperationKeys.CREATE || operation === OperationKeys.UPDATE) {\n <div>\n <ion-button\n type=\"submit\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{options.buttons.submit.text}}\n </ion-button>\n </div>\n }\n\n @if(options.buttons.clear) {\n <div>\n <ion-button fill=\"clear\" (click)=\"handleReset()\">\n @if(options.buttons.clear?.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{ ['delete', 'read', 'update'].includes(operation) ? 'Back' : options.buttons.clear?.text}}\n </ion-button>\n </div>\n\n }\n </div>\n}\n\n", styles: ["#dcf-buttons-container{margin-top:1.8rem;margin-bottom:0}@media (min-width: 991px){#dcf-buttons-container.dcf-flex{flex-direction:row-reverse}}@media (max-width: 990px){#dcf-buttons-container.dcf-flex div{width:100%}#dcf-buttons-container.dcf-flex ion-button{width:100%;margin-bottom:1rem}}\n"] }]
3044
- }], propDecorators: { model: [{
3045
- type: Input
3046
- }], updateOn: [{
3047
- type: Input
3048
- }], component: [{
3049
- type: ViewChild,
3050
- args: ['reactiveForm', { static: false, read: ElementRef }]
3051
- }], target: [{
3052
- type: Input
3053
- }], method: [{
3054
- type: Input
3055
- }], options: [{
3056
- type: Input
3057
- }], action: [{
3058
- type: Input
3059
- }], operation: [{
3060
- type: Input,
3061
- args: [{ required: true }]
3062
- }], handlers: [{
3063
- type: Input
3064
- }], formGroup: [{
3065
- type: Input
3066
- }], childOf: [{
3067
- type: Input
3068
- }], rendererId: [{
3069
- type: Input
3070
- }], uid: [{
3071
- type: Input
3072
- }], submitEvent: [{
3073
- type: Output
3074
- }] } });
3382
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CrudFormComponent, [{
3383
+ type: Component,
3384
+ args: [{ standalone: true, selector: 'ngx-decaf-crud-form', imports: [ForAngularModule, IonIcon], template: "@if(operation !== 'read' && operation !== 'delete') {\n <form #reactiveForm [id]=\"rendererId\" [formGroup]=\"formGroup\" (submit)=\"submit($event)\" novalidate [target]=\"target\">\n <ng-content #formContent></ng-content>\n <div id=\"dcf-buttons-container\" class=\"dcf-grid dcf-grid-collapse dcf-flex dcf-flex-left\">\n <div>\n <ion-button\n type=\"submit\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{ action ? action : options.buttons.submit.text}}\n </ion-button>\n </div>\n <div>\n @if(options.buttons.clear) {\n <ion-button fill=\"clear\" (click)=\"handleReset()\">\n @if(options.buttons.clear?.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{ ['create', 'update'].includes(operation) ? 'Back' : options.buttons.clear?.text}}\n </ion-button>\n }\n </div>\n </div>\n </form>\n} @else {\n <div [class]=\"'dcf-grid dcf-grid-collapse dcf-flex dcf-flex-left ' + operation\" id=\"dcf-buttons-container\">\n\n @if(operation === 'delete' && uid) {\n <div>\n <ion-button\n (click)=\"handleDelete()\"\n color=\"danger\"\n type=\"button\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n Delete\n </ion-button>\n </div>\n\n }\n @if(operation === OperationKeys.CREATE || operation === OperationKeys.UPDATE) {\n <div>\n <ion-button\n type=\"submit\">\n @if(options.buttons.submit.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{options.buttons.submit.text}}\n </ion-button>\n </div>\n }\n\n @if(options.buttons.clear) {\n <div>\n <ion-button fill=\"clear\" (click)=\"handleReset()\">\n @if(options.buttons.clear?.icon) {\n <ion-icon aria-hidden=\"true\" [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{ ['delete', 'read', 'update'].includes(operation) ? 'Back' : options.buttons.clear?.text}}\n </ion-button>\n </div>\n\n }\n </div>\n}\n\n", styles: ["#dcf-buttons-container{margin-top:1.8rem;margin-bottom:0}@media (min-width: 991px){#dcf-buttons-container.dcf-flex{flex-direction:row-reverse}}@media (max-width: 990px){#dcf-buttons-container.dcf-flex div{width:100%}#dcf-buttons-container.dcf-flex ion-button{width:100%;margin-bottom:1rem}}\n"] }]
3385
+ }], null, { model: [{
3386
+ type: Input
3387
+ }], updateOn: [{
3388
+ type: Input
3389
+ }], component: [{
3390
+ type: ViewChild,
3391
+ args: ['reactiveForm', { static: false, read: ElementRef }]
3392
+ }], target: [{
3393
+ type: Input
3394
+ }], method: [{
3395
+ type: Input
3396
+ }], options: [{
3397
+ type: Input
3398
+ }], action: [{
3399
+ type: Input
3400
+ }], operation: [{
3401
+ type: Input,
3402
+ args: [{ required: true }]
3403
+ }], handlers: [{
3404
+ type: Input
3405
+ }], formGroup: [{
3406
+ type: Input
3407
+ }], childOf: [{
3408
+ type: Input
3409
+ }], rendererId: [{
3410
+ type: Input
3411
+ }], uid: [{
3412
+ type: Input
3413
+ }], submitEvent: [{
3414
+ type: Output
3415
+ }] }); })();
3416
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CrudFormComponent, { className: "CrudFormComponent", filePath: "components/crud-form/crud-form.component.ts", lineNumber: 54 }); })();
3075
3417
 
3076
3418
  /**
3077
3419
  * @module helpers
@@ -3085,6 +3427,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3085
3427
  * utility functions.
3086
3428
  */
3087
3429
 
3430
+ function EmptyStateComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
3431
+ i0.ɵɵelementStart(0, "div", 1);
3432
+ i0.ɵɵelement(1, "ion-icon", 3);
3433
+ i0.ɵɵelementEnd();
3434
+ } }
3435
+ function EmptyStateComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
3436
+ i0.ɵɵelement(0, "h5", 4);
3437
+ } if (rf & 2) {
3438
+ const ctx_r0 = i0.ɵɵnextContext();
3439
+ i0.ɵɵclassMap(ctx_r0.titleColor);
3440
+ i0.ɵɵproperty("innerHTML", ctx_r0.title, i0.ɵɵsanitizeHtml);
3441
+ } }
3442
+ function EmptyStateComponent_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
3443
+ i0.ɵɵelement(0, "p", 4);
3444
+ } if (rf & 2) {
3445
+ const ctx_r0 = i0.ɵɵnextContext(2);
3446
+ i0.ɵɵclassMap(ctx_r0.subtitleColor);
3447
+ i0.ɵɵproperty("innerHTML", ctx_r0.subtitle, i0.ɵɵsanitizeHtml);
3448
+ } }
3449
+ function EmptyStateComponent_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
3450
+ i0.ɵɵelement(0, "p", 4);
3451
+ } if (rf & 2) {
3452
+ const ctx_r0 = i0.ɵɵnextContext(2);
3453
+ i0.ɵɵclassMap(ctx_r0.subtitleColor);
3454
+ i0.ɵɵproperty("innerHTML", ctx_r0.searchSubtitle, i0.ɵɵsanitizeHtml);
3455
+ } }
3456
+ function EmptyStateComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
3457
+ i0.ɵɵtemplate(0, EmptyStateComponent_Conditional_4_Conditional_0_Template, 1, 3, "p", 2)(1, EmptyStateComponent_Conditional_4_Conditional_1_Template, 1, 3, "p", 2);
3458
+ } if (rf & 2) {
3459
+ const ctx_r0 = i0.ɵɵnextContext();
3460
+ i0.ɵɵconditional(!ctx_r0.searchValue ? 0 : 1);
3461
+ } }
3462
+ function EmptyStateComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
3463
+ const _r2 = i0.ɵɵgetCurrentView();
3464
+ i0.ɵɵelementStart(0, "div")(1, "ion-button", 5);
3465
+ i0.ɵɵlistener("click", function EmptyStateComponent_Conditional_5_Template_ion_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.handleClick()); });
3466
+ i0.ɵɵtext(2);
3467
+ i0.ɵɵelementEnd()();
3468
+ } if (rf & 2) {
3469
+ const ctx_r0 = i0.ɵɵnextContext();
3470
+ i0.ɵɵadvance();
3471
+ i0.ɵɵproperty("size", ctx_r0.buttonSize)("fill", ctx_r0.buttonFill)("color", ctx_r0.buttonColor);
3472
+ i0.ɵɵadvance();
3473
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.buttonText, " ");
3474
+ } }
3088
3475
  /**
3089
3476
  * @description Component for displaying empty state messages with optional actions.
3090
3477
  * @summary This component provides a standardized way to display empty state messages
@@ -3372,51 +3759,68 @@ let EmptyStateComponent = class EmptyStateComponent extends NgxBaseComponent {
3372
3759
  const result = await this.translate.instant(content, { 'value0': this.searchValue });
3373
3760
  return this.sanitizer.bypassSecurityTrustHtml(result);
3374
3761
  }
3375
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3376
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EmptyStateComponent, isStandalone: true, selector: "ngx-decaf-empty-state", inputs: { title: "title", titleColor: "titleColor", subtitle: "subtitle", subtitleColor: "subtitleColor", showIcon: "showIcon", icon: "icon", iconSize: "iconSize", iconColor: "iconColor", buttonLink: "buttonLink", buttonText: "buttonText", buttonFill: "buttonFill", buttonColor: "buttonColor", buttonSize: "buttonSize", searchValue: "searchValue" }, usesInheritance: true, ngImport: i0, template: "\n<ion-card id=\"dcf-card-empty-state\" [ngClass]=\"className\">\n <ion-card-content>\n @if(icon && showIcon) {\n <div class=\"dcf-icon-container\">\n <ion-icon\n name=\"alert-circle-outline\"\n size=\"large\"\n color=\"danger\"\n />\n </div>\n }\n @if(title) {\n <h5 [class]=\"titleColor\" [innerHTML]=\"title\"></h5>\n }\n @if(subtitle) {\n @if(!searchValue) {\n <p [class]=\"subtitleColor\" [innerHTML]=\"subtitle\"></p>\n } @else {\n <p [class]=\"subtitleColor\" [innerHTML]=\"searchSubtitle\"></p>\n }\n }\n @if(buttonLink && buttonText) {\n <div>\n <ion-button\n [size]=\"buttonSize\"\n [fill]=\"buttonFill\"\n [color]=\"buttonColor\"\n (click)=\"handleClick()\">\n {{ buttonText }}\n </ion-button>\n </div>\n }\n </ion-card-content>\n</ion-card>\n", styles: ["ion-card{text-align:center}ion-card ion-button{margin-top:.75rem}ion-card ion-icon{font-size:2.5rem}ion-card .dcf-icon-container{transform:scale(1.25);opacity:.75;margin-top:1.25rem!important;margin-bottom:.5rem!important}ion-card .dcf-ititle{font-weight:600!important;color:var(--ion-color-gray-6)!important}ion-card .dcf-isubtitle{font-weight:500!important}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
3762
+ static { this.ɵfac = function EmptyStateComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EmptyStateComponent)(); }; }
3763
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EmptyStateComponent, selectors: [["ngx-decaf-empty-state"]], inputs: { title: "title", titleColor: "titleColor", subtitle: "subtitle", subtitleColor: "subtitleColor", showIcon: "showIcon", icon: "icon", iconSize: "iconSize", iconColor: "iconColor", buttonLink: "buttonLink", buttonText: "buttonText", buttonFill: "buttonFill", buttonColor: "buttonColor", buttonSize: "buttonSize", searchValue: "searchValue" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 6, vars: 5, consts: [["id", "dcf-card-empty-state", 3, "ngClass"], [1, "dcf-icon-container"], [3, "class", "innerHTML"], ["name", "alert-circle-outline", "size", "large", "color", "danger"], [3, "innerHTML"], [3, "click", "size", "fill", "color"]], template: function EmptyStateComponent_Template(rf, ctx) { if (rf & 1) {
3764
+ i0.ɵɵelementStart(0, "ion-card", 0)(1, "ion-card-content");
3765
+ i0.ɵɵtemplate(2, EmptyStateComponent_Conditional_2_Template, 2, 0, "div", 1)(3, EmptyStateComponent_Conditional_3_Template, 1, 3, "h5", 2)(4, EmptyStateComponent_Conditional_4_Template, 2, 1)(5, EmptyStateComponent_Conditional_5_Template, 3, 4, "div");
3766
+ i0.ɵɵelementEnd()();
3767
+ } if (rf & 2) {
3768
+ i0.ɵɵproperty("ngClass", ctx.className);
3769
+ i0.ɵɵadvance(2);
3770
+ i0.ɵɵconditional(ctx.icon && ctx.showIcon ? 2 : -1);
3771
+ i0.ɵɵadvance();
3772
+ i0.ɵɵconditional(ctx.title ? 3 : -1);
3773
+ i0.ɵɵadvance();
3774
+ i0.ɵɵconditional(ctx.subtitle ? 4 : -1);
3775
+ i0.ɵɵadvance();
3776
+ i0.ɵɵconditional(ctx.buttonLink && ctx.buttonText ? 5 : -1);
3777
+ } }, dependencies: [ForAngularModule, i1.IonButton, i2.NgClass, IonCard,
3778
+ IonCardContent,
3779
+ IonIcon], styles: ["ion-card[_ngcontent-%COMP%]{text-align:center}ion-card[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%]{margin-top:.75rem}ion-card[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{font-size:2.5rem}ion-card[_ngcontent-%COMP%] .dcf-icon-container[_ngcontent-%COMP%]{transform:scale(1.25);opacity:.75;margin-top:1.25rem!important;margin-bottom:.5rem!important}ion-card[_ngcontent-%COMP%] .dcf-ititle[_ngcontent-%COMP%]{font-weight:600!important;color:var(--ion-color-gray-6)!important}ion-card[_ngcontent-%COMP%] .dcf-isubtitle[_ngcontent-%COMP%]{font-weight:500!important}"] }); }
3377
3780
  };
3378
3781
  EmptyStateComponent = __decorate([
3379
3782
  Dynamic(),
3380
3783
  __metadata("design:paramtypes", [])
3381
3784
  ], EmptyStateComponent);
3382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateComponent, decorators: [{
3383
- type: Component,
3384
- args: [{ selector: 'ngx-decaf-empty-state', standalone: true, imports: [
3385
- ForAngularModule,
3386
- IonCard,
3387
- IonCardContent,
3388
- IonTitle,
3389
- IonIcon
3390
- ], template: "\n<ion-card id=\"dcf-card-empty-state\" [ngClass]=\"className\">\n <ion-card-content>\n @if(icon && showIcon) {\n <div class=\"dcf-icon-container\">\n <ion-icon\n name=\"alert-circle-outline\"\n size=\"large\"\n color=\"danger\"\n />\n </div>\n }\n @if(title) {\n <h5 [class]=\"titleColor\" [innerHTML]=\"title\"></h5>\n }\n @if(subtitle) {\n @if(!searchValue) {\n <p [class]=\"subtitleColor\" [innerHTML]=\"subtitle\"></p>\n } @else {\n <p [class]=\"subtitleColor\" [innerHTML]=\"searchSubtitle\"></p>\n }\n }\n @if(buttonLink && buttonText) {\n <div>\n <ion-button\n [size]=\"buttonSize\"\n [fill]=\"buttonFill\"\n [color]=\"buttonColor\"\n (click)=\"handleClick()\">\n {{ buttonText }}\n </ion-button>\n </div>\n }\n </ion-card-content>\n</ion-card>\n", styles: ["ion-card{text-align:center}ion-card ion-button{margin-top:.75rem}ion-card ion-icon{font-size:2.5rem}ion-card .dcf-icon-container{transform:scale(1.25);opacity:.75;margin-top:1.25rem!important;margin-bottom:.5rem!important}ion-card .dcf-ititle{font-weight:600!important;color:var(--ion-color-gray-6)!important}ion-card .dcf-isubtitle{font-weight:500!important}\n"] }]
3391
- }], ctorParameters: () => [], propDecorators: { title: [{
3392
- type: Input
3393
- }], titleColor: [{
3394
- type: Input
3395
- }], subtitle: [{
3396
- type: Input
3397
- }], subtitleColor: [{
3398
- type: Input
3399
- }], showIcon: [{
3400
- type: Input
3401
- }], icon: [{
3402
- type: Input
3403
- }], iconSize: [{
3404
- type: Input
3405
- }], iconColor: [{
3406
- type: Input
3407
- }], buttonLink: [{
3408
- type: Input
3409
- }], buttonText: [{
3410
- type: Input
3411
- }], buttonFill: [{
3412
- type: Input
3413
- }], buttonColor: [{
3414
- type: Input
3415
- }], buttonSize: [{
3416
- type: Input
3417
- }], searchValue: [{
3418
- type: Input
3419
- }] } });
3785
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EmptyStateComponent, [{
3786
+ type: Component,
3787
+ args: [{ selector: 'ngx-decaf-empty-state', standalone: true, imports: [
3788
+ ForAngularModule,
3789
+ IonCard,
3790
+ IonCardContent,
3791
+ IonTitle,
3792
+ IonIcon
3793
+ ], template: "\n<ion-card id=\"dcf-card-empty-state\" [ngClass]=\"className\">\n <ion-card-content>\n @if(icon && showIcon) {\n <div class=\"dcf-icon-container\">\n <ion-icon\n name=\"alert-circle-outline\"\n size=\"large\"\n color=\"danger\"\n />\n </div>\n }\n @if(title) {\n <h5 [class]=\"titleColor\" [innerHTML]=\"title\"></h5>\n }\n @if(subtitle) {\n @if(!searchValue) {\n <p [class]=\"subtitleColor\" [innerHTML]=\"subtitle\"></p>\n } @else {\n <p [class]=\"subtitleColor\" [innerHTML]=\"searchSubtitle\"></p>\n }\n }\n @if(buttonLink && buttonText) {\n <div>\n <ion-button\n [size]=\"buttonSize\"\n [fill]=\"buttonFill\"\n [color]=\"buttonColor\"\n (click)=\"handleClick()\">\n {{ buttonText }}\n </ion-button>\n </div>\n }\n </ion-card-content>\n</ion-card>\n", styles: ["ion-card{text-align:center}ion-card ion-button{margin-top:.75rem}ion-card ion-icon{font-size:2.5rem}ion-card .dcf-icon-container{transform:scale(1.25);opacity:.75;margin-top:1.25rem!important;margin-bottom:.5rem!important}ion-card .dcf-ititle{font-weight:600!important;color:var(--ion-color-gray-6)!important}ion-card .dcf-isubtitle{font-weight:500!important}\n"] }]
3794
+ }], () => [], { title: [{
3795
+ type: Input
3796
+ }], titleColor: [{
3797
+ type: Input
3798
+ }], subtitle: [{
3799
+ type: Input
3800
+ }], subtitleColor: [{
3801
+ type: Input
3802
+ }], showIcon: [{
3803
+ type: Input
3804
+ }], icon: [{
3805
+ type: Input
3806
+ }], iconSize: [{
3807
+ type: Input
3808
+ }], iconColor: [{
3809
+ type: Input
3810
+ }], buttonLink: [{
3811
+ type: Input
3812
+ }], buttonText: [{
3813
+ type: Input
3814
+ }], buttonFill: [{
3815
+ type: Input
3816
+ }], buttonColor: [{
3817
+ type: Input
3818
+ }], buttonSize: [{
3819
+ type: Input
3820
+ }], searchValue: [{
3821
+ type: Input
3822
+ }] }); })();
3823
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EmptyStateComponent, { className: "EmptyStateComponent", filePath: "components/empty-state/empty-state.component.ts", lineNumber: 72 }); })();
3420
3824
 
3421
3825
  class CollapsableDirective {
3422
3826
  constructor() {
@@ -3433,17 +3837,19 @@ class CollapsableDirective {
3433
3837
  }
3434
3838
  }
3435
3839
  }
3436
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapsableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3437
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CollapsableDirective, isStandalone: true, selector: "[decafCollapsable]", ngImport: i0 }); }
3840
+ static { this.ɵfac = function CollapsableDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollapsableDirective)(); }; }
3841
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: CollapsableDirective, selectors: [["", "decafCollapsable", ""]], standalone: true }); }
3438
3842
  }
3439
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapsableDirective, decorators: [{
3440
- type: Directive,
3441
- args: [{
3442
- selector: '[decafCollapsable]',
3443
- standalone: true
3444
- }]
3445
- }] });
3843
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollapsableDirective, [{
3844
+ type: Directive,
3845
+ args: [{
3846
+ selector: '[decafCollapsable]',
3847
+ standalone: true
3848
+ }]
3849
+ }], null, null); })();
3446
3850
 
3851
+ const _c0$6 = ["component"];
3852
+ const _c1$5 = ["*"];
3447
3853
  /**
3448
3854
  * @description Dynamic fieldset component with collapsible accordion functionality.
3449
3855
  * @summary This component provides a sophisticated fieldset container that automatically
@@ -3640,25 +4046,48 @@ let FieldsetComponent = class FieldsetComponent {
3640
4046
  if (target.tagName === 'ION-ACCORDION-GROUP')
3641
4047
  this.isOpen = !!value;
3642
4048
  }
3643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3644
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FieldsetComponent, isStandalone: true, selector: "ngx-decaf-fieldset", inputs: { name: "name", operation: "operation", target: "target" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, read: ElementRef }], ngImport: i0, template: "<fieldset [class]=\"'dcf-fieldset ' + operation\" #component>\n <ion-accordion-group (ionChange)=\"handleChange($event)\">\n <ion-accordion value=\"open\">\n <ion-item slot=\"header\" >\n <legend>{{ name }}</legend>\n </ion-item>\n <div slot=\"content\" [attr.aria-hidden]=\"!isOpen\" decafCollapsable>\n <ng-content></ng-content>\n </div>\n </ion-accordion>\n </ion-accordion-group>\n</fieldset>\n", styles: [".dcf-fieldset{margin-bottom:1.8rem;padding-bottom:0;padding-top:1rem;border:1px solid var(--ion-color-gray-2);border-radius:8px}.dcf-fieldset ion-accordion-group{--border-color:red !important}.dcf-fieldset.read{margin-top:1.25rem}.dcf-fieldset ion-accordion.accordion-collapsing,.dcf-fieldset ion-accordion.accordion-collapsed{margin-bottom:1rem}.dcf-fieldset ion-accordion ion-item[slot=header]{--border-color: transparent;--border-radius: 6px;--inner-border-width: 0;--padding-start: 12px}.dcf-fieldset ion-accordion ion-item[slot=header] legend{font-weight:600;font-size:1rem;color:#333;margin:0}.dcf-fieldset ion-accordion [slot=content]{padding-top:1rem!important;padding-inline:.75rem;background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: IonAccordionGroup, selector: "ion-accordion-group", inputs: ["animated", "disabled", "expand", "mode", "multiple", "readonly", "value"] }, { kind: "component", type: IonAccordion, selector: "ion-accordion", inputs: ["disabled", "mode", "readonly", "toggleIcon", "toggleIconSlot", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: CollapsableDirective, selector: "[decafCollapsable]" }] }); }
4049
+ static { this.ɵfac = function FieldsetComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FieldsetComponent)(); }; }
4050
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FieldsetComponent, selectors: [["ngx-decaf-fieldset"]], viewQuery: function FieldsetComponent_Query(rf, ctx) { if (rf & 1) {
4051
+ i0.ɵɵviewQuery(_c0$6, 5, ElementRef);
4052
+ } if (rf & 2) {
4053
+ let _t;
4054
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.component = _t.first);
4055
+ } }, inputs: { name: "name", operation: "operation", target: "target" }, standalone: true, features: [i0.ɵɵStandaloneFeature], ngContentSelectors: _c1$5, decls: 9, vars: 4, consts: [["component", ""], [3, "ionChange"], ["value", "open"], ["slot", "header"], ["slot", "content", "decafCollapsable", ""]], template: function FieldsetComponent_Template(rf, ctx) { if (rf & 1) {
4056
+ const _r1 = i0.ɵɵgetCurrentView();
4057
+ i0.ɵɵprojectionDef();
4058
+ i0.ɵɵelementStart(0, "fieldset", null, 0)(2, "ion-accordion-group", 1);
4059
+ i0.ɵɵlistener("ionChange", function FieldsetComponent_Template_ion_accordion_group_ionChange_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleChange($event)); });
4060
+ i0.ɵɵelementStart(3, "ion-accordion", 2)(4, "ion-item", 3)(5, "legend");
4061
+ i0.ɵɵtext(6);
4062
+ i0.ɵɵelementEnd()();
4063
+ i0.ɵɵelementStart(7, "div", 4);
4064
+ i0.ɵɵprojection(8);
4065
+ i0.ɵɵelementEnd()()()();
4066
+ } if (rf & 2) {
4067
+ i0.ɵɵclassMap("dcf-fieldset " + ctx.operation);
4068
+ i0.ɵɵadvance(6);
4069
+ i0.ɵɵtextInterpolate(ctx.name);
4070
+ i0.ɵɵadvance();
4071
+ i0.ɵɵattribute("aria-hidden", !ctx.isOpen);
4072
+ } }, dependencies: [ForAngularModule, IonAccordionGroup, IonAccordion, IonItem, CollapsableDirective], styles: [".dcf-fieldset[_ngcontent-%COMP%]{margin-bottom:1.8rem;padding-bottom:0;padding-top:1rem;border:1px solid var(--ion-color-gray-2);border-radius:8px}.dcf-fieldset[_ngcontent-%COMP%] ion-accordion-group[_ngcontent-%COMP%]{--border-color:red !important}.dcf-fieldset.read[_ngcontent-%COMP%]{margin-top:1.25rem}.dcf-fieldset[_ngcontent-%COMP%] ion-accordion.accordion-collapsing[_ngcontent-%COMP%], .dcf-fieldset[_ngcontent-%COMP%] ion-accordion.accordion-collapsed[_ngcontent-%COMP%]{margin-bottom:1rem}.dcf-fieldset[_ngcontent-%COMP%] ion-accordion[_ngcontent-%COMP%] ion-item[slot=header][_ngcontent-%COMP%]{--border-color: transparent;--border-radius: 6px;--inner-border-width: 0;--padding-start: 12px}.dcf-fieldset[_ngcontent-%COMP%] ion-accordion[_ngcontent-%COMP%] ion-item[slot=header][_ngcontent-%COMP%] legend[_ngcontent-%COMP%]{font-weight:600;font-size:1rem;color:#333;margin:0}.dcf-fieldset[_ngcontent-%COMP%] ion-accordion[_ngcontent-%COMP%] [slot=content][_ngcontent-%COMP%]{padding-top:1rem!important;padding-inline:.75rem;background-color:#fff}"] }); }
3645
4073
  };
3646
4074
  FieldsetComponent = __decorate([
3647
4075
  Dynamic()
3648
4076
  ], FieldsetComponent);
3649
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldsetComponent, decorators: [{
3650
- type: Component,
3651
- args: [{ standalone: true, selector: 'ngx-decaf-fieldset', schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [ForAngularModule, IonAccordionGroup, IonAccordion, IonItem, CollapsableDirective], template: "<fieldset [class]=\"'dcf-fieldset ' + operation\" #component>\n <ion-accordion-group (ionChange)=\"handleChange($event)\">\n <ion-accordion value=\"open\">\n <ion-item slot=\"header\" >\n <legend>{{ name }}</legend>\n </ion-item>\n <div slot=\"content\" [attr.aria-hidden]=\"!isOpen\" decafCollapsable>\n <ng-content></ng-content>\n </div>\n </ion-accordion>\n </ion-accordion-group>\n</fieldset>\n", styles: [".dcf-fieldset{margin-bottom:1.8rem;padding-bottom:0;padding-top:1rem;border:1px solid var(--ion-color-gray-2);border-radius:8px}.dcf-fieldset ion-accordion-group{--border-color:red !important}.dcf-fieldset.read{margin-top:1.25rem}.dcf-fieldset ion-accordion.accordion-collapsing,.dcf-fieldset ion-accordion.accordion-collapsed{margin-bottom:1rem}.dcf-fieldset ion-accordion ion-item[slot=header]{--border-color: transparent;--border-radius: 6px;--inner-border-width: 0;--padding-start: 12px}.dcf-fieldset ion-accordion ion-item[slot=header] legend{font-weight:600;font-size:1rem;color:#333;margin:0}.dcf-fieldset ion-accordion [slot=content]{padding-top:1rem!important;padding-inline:.75rem;background-color:#fff}\n"] }]
3652
- }], propDecorators: { component: [{
3653
- type: ViewChild,
3654
- args: ['component', { static: false, read: ElementRef }]
3655
- }], name: [{
3656
- type: Input
3657
- }], operation: [{
3658
- type: Input
3659
- }], target: [{
3660
- type: Input
3661
- }] } });
4077
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FieldsetComponent, [{
4078
+ type: Component,
4079
+ args: [{ standalone: true, selector: 'ngx-decaf-fieldset', schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [ForAngularModule, IonAccordionGroup, IonAccordion, IonItem, CollapsableDirective], template: "<fieldset [class]=\"'dcf-fieldset ' + operation\" #component>\n <ion-accordion-group (ionChange)=\"handleChange($event)\">\n <ion-accordion value=\"open\">\n <ion-item slot=\"header\" >\n <legend>{{ name }}</legend>\n </ion-item>\n <div slot=\"content\" [attr.aria-hidden]=\"!isOpen\" decafCollapsable>\n <ng-content></ng-content>\n </div>\n </ion-accordion>\n </ion-accordion-group>\n</fieldset>\n", styles: [".dcf-fieldset{margin-bottom:1.8rem;padding-bottom:0;padding-top:1rem;border:1px solid var(--ion-color-gray-2);border-radius:8px}.dcf-fieldset ion-accordion-group{--border-color:red !important}.dcf-fieldset.read{margin-top:1.25rem}.dcf-fieldset ion-accordion.accordion-collapsing,.dcf-fieldset ion-accordion.accordion-collapsed{margin-bottom:1rem}.dcf-fieldset ion-accordion ion-item[slot=header]{--border-color: transparent;--border-radius: 6px;--inner-border-width: 0;--padding-start: 12px}.dcf-fieldset ion-accordion ion-item[slot=header] legend{font-weight:600;font-size:1rem;color:#333;margin:0}.dcf-fieldset ion-accordion [slot=content]{padding-top:1rem!important;padding-inline:.75rem;background-color:#fff}\n"] }]
4080
+ }], null, { component: [{
4081
+ type: ViewChild,
4082
+ args: ['component', { static: false, read: ElementRef }]
4083
+ }], name: [{
4084
+ type: Input
4085
+ }], operation: [{
4086
+ type: Input
4087
+ }], target: [{
4088
+ type: Input
4089
+ }] }); })();
4090
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FieldsetComponent, { className: "FieldsetComponent", filePath: "components/fieldset/fieldset.component.ts", lineNumber: 68 }); })();
3662
4091
 
3663
4092
  /**
3664
4093
  * @description Searchbar component for Angular applications.
@@ -4086,63 +4515,242 @@ class SearchbarComponent extends NgxBaseComponent {
4086
4515
  preventChange(event) {
4087
4516
  event.preventDefault();
4088
4517
  }
4089
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4090
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchbarComponent, isStandalone: true, selector: "ngx-decaf-searchbar", inputs: { autocomplete: "autocomplete", autocorrect: "autocorrect", animated: "animated", buttonCancelText: "buttonCancelText", clearIcon: "clearIcon", color: "color", debounce: "debounce", disabled: "disabled", enterkeyhint: "enterkeyhint", inputmode: "inputmode", placeholder: "placeholder", searchIcon: "searchIcon", showCancelButton: "showCancelButton", showClearButton: "showClearButton", spellcheck: "spellcheck", type: "type", value: "value", queryKeys: "queryKeys", isVisible: "isVisible", wrapper: "wrapper", wrapperColor: "wrapperColor", emitEventToWindow: "emitEventToWindow" }, outputs: { searchEvent: "searchEvent" }, host: { listeners: { "window:toggleSearchbarVisibility": "handleToggleVisibility($event)" } }, usesInheritance: true, ngImport: i0, template: "<ion-searchbar\n ngClass=\"dcf-searchbar\"\n name=\"search\"\n mode=\"ios\"\n (keyup.enter)=\"preventChange($event)\"\n (ionChange)=\"handleChange($event)\"\n (ionInput)=\"handleInput($event)\"\n (ionClear)=\"handleClear()\"\n [autocomplete]=\"autocomplete\"\n [showCancelButton]=\"showCancelButton\"\n [cancelButtonText]=\"buttonCancelText\"\n [clearIcon]=\"clearIcon\"\n [color]=\"color\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n [enterkeyhint]=\"enterkeyhint\"\n [inputmode]=\"inputmode\"\n [placeholder]=\"placeholder\"\n [searchIcon]=\"searchIcon\"\n [showClearButton]=\"showClearButton\"\n [spellcheck]=\"spellcheck\"\n [type]=\"type\"\n #component\n />\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }] }); }
4518
+ static { this.ɵfac = function SearchbarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchbarComponent)(); }; }
4519
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchbarComponent, selectors: [["ngx-decaf-searchbar"]], hostBindings: function SearchbarComponent_HostBindings(rf, ctx) { if (rf & 1) {
4520
+ i0.ɵɵlistener("toggleSearchbarVisibility", function SearchbarComponent_toggleSearchbarVisibility_HostBindingHandler($event) { return ctx.handleToggleVisibility($event); }, false, i0.ɵɵresolveWindow);
4521
+ } }, inputs: { autocomplete: "autocomplete", autocorrect: "autocorrect", animated: "animated", buttonCancelText: "buttonCancelText", clearIcon: "clearIcon", color: "color", debounce: "debounce", disabled: "disabled", enterkeyhint: "enterkeyhint", inputmode: "inputmode", placeholder: "placeholder", searchIcon: "searchIcon", showCancelButton: "showCancelButton", showClearButton: "showClearButton", spellcheck: "spellcheck", type: "type", value: "value", queryKeys: "queryKeys", isVisible: "isVisible", wrapper: "wrapper", wrapperColor: "wrapperColor", emitEventToWindow: "emitEventToWindow" }, outputs: { searchEvent: "searchEvent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 2, vars: 14, consts: [["component", ""], ["ngClass", "dcf-searchbar", "name", "search", "mode", "ios", 3, "keyup.enter", "ionChange", "ionInput", "ionClear", "autocomplete", "showCancelButton", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "placeholder", "searchIcon", "showClearButton", "spellcheck", "type"]], template: function SearchbarComponent_Template(rf, ctx) { if (rf & 1) {
4522
+ const _r1 = i0.ɵɵgetCurrentView();
4523
+ i0.ɵɵelementStart(0, "ion-searchbar", 1, 0);
4524
+ i0.ɵɵlistener("keyup.enter", function SearchbarComponent_Template_ion_searchbar_keyup_enter_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.preventChange($event)); })("ionChange", function SearchbarComponent_Template_ion_searchbar_ionChange_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleChange($event)); })("ionInput", function SearchbarComponent_Template_ion_searchbar_ionInput_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleInput($event)); })("ionClear", function SearchbarComponent_Template_ion_searchbar_ionClear_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleClear()); });
4525
+ i0.ɵɵelementEnd();
4526
+ } if (rf & 2) {
4527
+ i0.ɵɵproperty("autocomplete", ctx.autocomplete)("showCancelButton", ctx.showCancelButton)("cancelButtonText", ctx.buttonCancelText)("clearIcon", ctx.clearIcon)("color", ctx.color)("debounce", ctx.debounce)("disabled", ctx.disabled)("enterkeyhint", ctx.enterkeyhint)("inputmode", ctx.inputmode)("placeholder", ctx.placeholder)("searchIcon", ctx.searchIcon)("showClearButton", ctx.showClearButton)("spellcheck", ctx.spellcheck)("type", ctx.type);
4528
+ } }, dependencies: [ForAngularModule, i2.NgClass, IonSearchbar] }); }
4091
4529
  }
4092
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchbarComponent, decorators: [{
4093
- type: Component,
4094
- args: [{ selector: 'ngx-decaf-searchbar', standalone: true, imports: [ForAngularModule, IonSearchbar], template: "<ion-searchbar\n ngClass=\"dcf-searchbar\"\n name=\"search\"\n mode=\"ios\"\n (keyup.enter)=\"preventChange($event)\"\n (ionChange)=\"handleChange($event)\"\n (ionInput)=\"handleInput($event)\"\n (ionClear)=\"handleClear()\"\n [autocomplete]=\"autocomplete\"\n [showCancelButton]=\"showCancelButton\"\n [cancelButtonText]=\"buttonCancelText\"\n [clearIcon]=\"clearIcon\"\n [color]=\"color\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n [enterkeyhint]=\"enterkeyhint\"\n [inputmode]=\"inputmode\"\n [placeholder]=\"placeholder\"\n [searchIcon]=\"searchIcon\"\n [showClearButton]=\"showClearButton\"\n [spellcheck]=\"spellcheck\"\n [type]=\"type\"\n #component\n />\n" }]
4095
- }], ctorParameters: () => [], propDecorators: { autocomplete: [{
4096
- type: Input
4097
- }], autocorrect: [{
4098
- type: Input
4099
- }], animated: [{
4100
- type: Input
4101
- }], buttonCancelText: [{
4102
- type: Input
4103
- }], clearIcon: [{
4104
- type: Input
4105
- }], color: [{
4106
- type: Input
4107
- }], debounce: [{
4108
- type: Input
4109
- }], disabled: [{
4110
- type: Input
4111
- }], enterkeyhint: [{
4112
- type: Input
4113
- }], inputmode: [{
4114
- type: Input
4115
- }], placeholder: [{
4116
- type: Input
4117
- }], searchIcon: [{
4118
- type: Input
4119
- }], showCancelButton: [{
4120
- type: Input
4121
- }], showClearButton: [{
4122
- type: Input
4123
- }], spellcheck: [{
4124
- type: Input
4125
- }], type: [{
4126
- type: Input
4127
- }], value: [{
4128
- type: Input
4129
- }], queryKeys: [{
4130
- type: Input
4131
- }], isVisible: [{
4132
- type: Input
4133
- }], wrapper: [{
4134
- type: Input
4135
- }], wrapperColor: [{
4136
- type: Input
4137
- }], emitEventToWindow: [{
4138
- type: Input
4139
- }], searchEvent: [{
4140
- type: Output
4141
- }], handleToggleVisibility: [{
4142
- type: HostListener,
4143
- args: ["window:toggleSearchbarVisibility", ['$event']]
4144
- }] } });
4530
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchbarComponent, [{
4531
+ type: Component,
4532
+ args: [{ selector: 'ngx-decaf-searchbar', standalone: true, imports: [ForAngularModule, IonSearchbar], template: "<ion-searchbar\n ngClass=\"dcf-searchbar\"\n name=\"search\"\n mode=\"ios\"\n (keyup.enter)=\"preventChange($event)\"\n (ionChange)=\"handleChange($event)\"\n (ionInput)=\"handleInput($event)\"\n (ionClear)=\"handleClear()\"\n [autocomplete]=\"autocomplete\"\n [showCancelButton]=\"showCancelButton\"\n [cancelButtonText]=\"buttonCancelText\"\n [clearIcon]=\"clearIcon\"\n [color]=\"color\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n [enterkeyhint]=\"enterkeyhint\"\n [inputmode]=\"inputmode\"\n [placeholder]=\"placeholder\"\n [searchIcon]=\"searchIcon\"\n [showClearButton]=\"showClearButton\"\n [spellcheck]=\"spellcheck\"\n [type]=\"type\"\n #component\n />\n" }]
4533
+ }], () => [], { autocomplete: [{
4534
+ type: Input
4535
+ }], autocorrect: [{
4536
+ type: Input
4537
+ }], animated: [{
4538
+ type: Input
4539
+ }], buttonCancelText: [{
4540
+ type: Input
4541
+ }], clearIcon: [{
4542
+ type: Input
4543
+ }], color: [{
4544
+ type: Input
4545
+ }], debounce: [{
4546
+ type: Input
4547
+ }], disabled: [{
4548
+ type: Input
4549
+ }], enterkeyhint: [{
4550
+ type: Input
4551
+ }], inputmode: [{
4552
+ type: Input
4553
+ }], placeholder: [{
4554
+ type: Input
4555
+ }], searchIcon: [{
4556
+ type: Input
4557
+ }], showCancelButton: [{
4558
+ type: Input
4559
+ }], showClearButton: [{
4560
+ type: Input
4561
+ }], spellcheck: [{
4562
+ type: Input
4563
+ }], type: [{
4564
+ type: Input
4565
+ }], value: [{
4566
+ type: Input
4567
+ }], queryKeys: [{
4568
+ type: Input
4569
+ }], isVisible: [{
4570
+ type: Input
4571
+ }], wrapper: [{
4572
+ type: Input
4573
+ }], wrapperColor: [{
4574
+ type: Input
4575
+ }], emitEventToWindow: [{
4576
+ type: Input
4577
+ }], searchEvent: [{
4578
+ type: Output
4579
+ }], handleToggleVisibility: [{
4580
+ type: HostListener,
4581
+ args: ["window:toggleSearchbarVisibility", ['$event']]
4582
+ }] }); })();
4583
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchbarComponent, { className: "SearchbarComponent", filePath: "components/searchbar/searchbar.component.ts", lineNumber: 32 }); })();
4145
4584
 
4585
+ const _c0$5 = ["optionsFilterElement"];
4586
+ function _forTrack0$1($index, $item) { return this.trackItemFn($index, $item == null ? null : $item["index"]); }
4587
+ const _c1$4 = a0 => ({ "dcf-hidden": a0 });
4588
+ function FilterComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
4589
+ const _r2 = i0.ɵɵgetCurrentView();
4590
+ i0.ɵɵelementStart(0, "ngx-decaf-searchbar", 15);
4591
+ i0.ɵɵlistener("searchEvent", function FilterComponent_Conditional_0_Template_ngx_decaf_searchbar_searchEvent_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleSearch($event)); });
4592
+ i0.ɵɵelementEnd();
4593
+ } if (rf & 2) {
4594
+ i0.ɵɵproperty("emitEventToWindow", false)("debounce", 500);
4595
+ } }
4596
+ function FilterComponent_For_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
4597
+ i0.ɵɵelementStart(0, "ion-chip", 16);
4598
+ i0.ɵɵtext(1);
4599
+ i0.ɵɵelementEnd();
4600
+ } if (rf & 2) {
4601
+ const filter_r4 = i0.ɵɵnextContext().$implicit;
4602
+ i0.ɵɵproperty("outline", true);
4603
+ i0.ɵɵadvance();
4604
+ i0.ɵɵtextInterpolate(filter_r4 == null ? null : filter_r4["index"]);
4605
+ } }
4606
+ function FilterComponent_For_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
4607
+ i0.ɵɵelementStart(0, "ion-chip", 16);
4608
+ i0.ɵɵtext(1);
4609
+ i0.ɵɵelementEnd();
4610
+ } if (rf & 2) {
4611
+ const filter_r4 = i0.ɵɵnextContext().$implicit;
4612
+ i0.ɵɵproperty("outline", true);
4613
+ i0.ɵɵadvance();
4614
+ i0.ɵɵtextInterpolate(filter_r4 == null ? null : filter_r4["condition"]);
4615
+ } }
4616
+ function FilterComponent_For_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
4617
+ const _r5 = i0.ɵɵgetCurrentView();
4618
+ i0.ɵɵelementStart(0, "ion-chip", 17);
4619
+ i0.ɵɵtext(1);
4620
+ i0.ɵɵelementStart(2, "ion-icon", 18);
4621
+ i0.ɵɵlistener("click", function FilterComponent_For_6_Conditional_2_Template_ion_icon_click_2_listener() { i0.ɵɵrestoreView(_r5); const filter_r4 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.removeFilter(filter_r4 == null ? null : filter_r4["value"])); });
4622
+ i0.ɵɵelementEnd()();
4623
+ } if (rf & 2) {
4624
+ const filter_r4 = i0.ɵɵnextContext().$implicit;
4625
+ i0.ɵɵproperty("outline", true);
4626
+ i0.ɵɵadvance();
4627
+ i0.ɵɵtextInterpolate1(" ", filter_r4 == null ? null : filter_r4["value"], " ");
4628
+ } }
4629
+ function FilterComponent_For_6_Template(rf, ctx) { if (rf & 1) {
4630
+ i0.ɵɵtemplate(0, FilterComponent_For_6_Conditional_0_Template, 2, 2, "ion-chip", 16)(1, FilterComponent_For_6_Conditional_1_Template, 2, 2, "ion-chip", 16)(2, FilterComponent_For_6_Conditional_2_Template, 3, 2, "ion-chip", 17);
4631
+ } if (rf & 2) {
4632
+ const filter_r4 = ctx.$implicit;
4633
+ i0.ɵɵconditional((filter_r4 == null ? null : filter_r4["index"]) ? 0 : -1);
4634
+ i0.ɵɵadvance();
4635
+ i0.ɵɵconditional((filter_r4 == null ? null : filter_r4["condition"]) ? 1 : -1);
4636
+ i0.ɵɵadvance();
4637
+ i0.ɵɵconditional((filter_r4 == null ? null : filter_r4["value"]) ? 2 : -1);
4638
+ } }
4639
+ function FilterComponent_Conditional_11_Conditional_3_For_1_Template(rf, ctx) { if (rf & 1) {
4640
+ const _r6 = i0.ɵɵgetCurrentView();
4641
+ i0.ɵɵelementStart(0, "div", 21);
4642
+ i0.ɵɵlistener("keydown.enter", function FilterComponent_Conditional_11_Conditional_3_For_1_Template_div_keydown_enter_0_listener() { const key_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectOption(key_r7)); })("click", function FilterComponent_Conditional_11_Conditional_3_For_1_Template_div_click_0_listener() { const key_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectOption(key_r7)); });
4643
+ i0.ɵɵtext(1);
4644
+ i0.ɵɵelementEnd();
4645
+ } if (rf & 2) {
4646
+ const key_r7 = ctx.$implicit;
4647
+ i0.ɵɵadvance();
4648
+ i0.ɵɵtextInterpolate1(" ", key_r7, " ");
4649
+ } }
4650
+ function FilterComponent_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
4651
+ i0.ɵɵrepeaterCreate(0, FilterComponent_Conditional_11_Conditional_3_For_1_Template, 2, 1, "div", 20, i0.ɵɵrepeaterTrackByIdentity);
4652
+ } if (rf & 2) {
4653
+ const ctx_r2 = i0.ɵɵnextContext(2);
4654
+ i0.ɵɵrepeater(ctx_r2.filteredOptions);
4655
+ } }
4656
+ function FilterComponent_Conditional_11_Conditional_4_Template(rf, ctx) { if (rf & 1) {
4657
+ const _r8 = i0.ɵɵgetCurrentView();
4658
+ i0.ɵɵelementStart(0, "div", 22);
4659
+ i0.ɵɵlistener("click", function FilterComponent_Conditional_11_Conditional_4_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.filteredOptions = ctx_r2.options; return i0.ɵɵresetView(ctx_r2.value = ""); })("keydown.enter", function FilterComponent_Conditional_11_Conditional_4_Template_div_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.filteredOptions = ctx_r2.options; return i0.ɵɵresetView(ctx_r2.value = ""); });
4660
+ i0.ɵɵtext(1);
4661
+ i0.ɵɵpipe(2, "translate");
4662
+ i0.ɵɵelementEnd();
4663
+ } if (rf & 2) {
4664
+ i0.ɵɵadvance();
4665
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "no_suggestions"), " ");
4666
+ } }
4667
+ function FilterComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
4668
+ i0.ɵɵelementStart(0, "div", null, 1)(2, "div");
4669
+ i0.ɵɵtemplate(3, FilterComponent_Conditional_11_Conditional_3_Template, 2, 0)(4, FilterComponent_Conditional_11_Conditional_4_Template, 3, 3, "div", 19);
4670
+ i0.ɵɵelementEnd()();
4671
+ } if (rf & 2) {
4672
+ const ctx_r2 = i0.ɵɵnextContext();
4673
+ i0.ɵɵclassMap("dcf-dropdown " + (ctx_r2.options.length > 0 ? " dcf-active" : ""));
4674
+ i0.ɵɵadvance(3);
4675
+ i0.ɵɵconditional(ctx_r2.filteredOptions.length > 0 ? 3 : 4);
4676
+ } }
4677
+ function FilterComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
4678
+ const _r9 = i0.ɵɵgetCurrentView();
4679
+ i0.ɵɵelementStart(0, "div", 10)(1, "ion-button", 12);
4680
+ i0.ɵɵlistener("click", function FilterComponent_Conditional_12_Template_ion_button_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clear()); });
4681
+ i0.ɵɵelement(2, "ion-icon", 23);
4682
+ i0.ɵɵelementEnd()();
4683
+ } }
4684
+ function FilterComponent_Conditional_16_Conditional_3_For_1_Template(rf, ctx) { if (rf & 1) {
4685
+ const _r10 = i0.ɵɵgetCurrentView();
4686
+ i0.ɵɵelementStart(0, "div", 21);
4687
+ i0.ɵɵlistener("keydown.enter", function FilterComponent_Conditional_16_Conditional_3_For_1_Template_div_keydown_enter_0_listener() { const key_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectOption(key_r11)); })("click", function FilterComponent_Conditional_16_Conditional_3_For_1_Template_div_click_0_listener() { const key_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectOption(key_r11)); });
4688
+ i0.ɵɵtext(1);
4689
+ i0.ɵɵelementEnd();
4690
+ } if (rf & 2) {
4691
+ const key_r11 = ctx.$implicit;
4692
+ i0.ɵɵadvance();
4693
+ i0.ɵɵtextInterpolate1(" ", key_r11, " ");
4694
+ } }
4695
+ function FilterComponent_Conditional_16_Conditional_3_Template(rf, ctx) { if (rf & 1) {
4696
+ i0.ɵɵrepeaterCreate(0, FilterComponent_Conditional_16_Conditional_3_For_1_Template, 2, 1, "div", 20, i0.ɵɵrepeaterTrackByIdentity);
4697
+ } if (rf & 2) {
4698
+ const ctx_r2 = i0.ɵɵnextContext(2);
4699
+ i0.ɵɵrepeater(ctx_r2.filteredOptions);
4700
+ } }
4701
+ function FilterComponent_Conditional_16_Conditional_4_Template(rf, ctx) { if (rf & 1) {
4702
+ const _r12 = i0.ɵɵgetCurrentView();
4703
+ i0.ɵɵelementStart(0, "div", 22);
4704
+ i0.ɵɵlistener("click", function FilterComponent_Conditional_16_Conditional_4_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.filteredOptions = ctx_r2.options; return i0.ɵɵresetView(ctx_r2.value = ""); })("keydown.enter", function FilterComponent_Conditional_16_Conditional_4_Template_div_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.filteredOptions = ctx_r2.options; return i0.ɵɵresetView(ctx_r2.value = ""); });
4705
+ i0.ɵɵtext(1);
4706
+ i0.ɵɵpipe(2, "translate");
4707
+ i0.ɵɵelementEnd();
4708
+ } if (rf & 2) {
4709
+ i0.ɵɵadvance();
4710
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "no_suggestions"), " ");
4711
+ } }
4712
+ function FilterComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
4713
+ i0.ɵɵelementStart(0, "div", null, 1)(2, "div");
4714
+ i0.ɵɵtemplate(3, FilterComponent_Conditional_16_Conditional_3_Template, 2, 0)(4, FilterComponent_Conditional_16_Conditional_4_Template, 3, 3, "div", 19);
4715
+ i0.ɵɵelementEnd()();
4716
+ } if (rf & 2) {
4717
+ const ctx_r2 = i0.ɵɵnextContext();
4718
+ i0.ɵɵclassMap("dcf-dropdown " + (ctx_r2.options.length > 0 ? " dcf-active" : ""));
4719
+ i0.ɵɵadvance(3);
4720
+ i0.ɵɵconditional(ctx_r2.filteredOptions.length > 0 ? 3 : 4);
4721
+ } }
4722
+ function FilterComponent_Conditional_17_For_5_Template(rf, ctx) { if (rf & 1) {
4723
+ i0.ɵɵtext(0, " aa ");
4724
+ i0.ɵɵelementStart(1, "ion-select-option", 26);
4725
+ i0.ɵɵtext(2);
4726
+ i0.ɵɵpipe(3, "translate");
4727
+ i0.ɵɵelementEnd();
4728
+ } if (rf & 2) {
4729
+ const sort_r14 = ctx.$implicit;
4730
+ i0.ɵɵadvance();
4731
+ i0.ɵɵproperty("value", sort_r14);
4732
+ i0.ɵɵadvance();
4733
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, sort_r14));
4734
+ } }
4735
+ function FilterComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
4736
+ const _r13 = i0.ɵɵgetCurrentView();
4737
+ i0.ɵɵelementStart(0, "div", 14)(1, "div", 24)(2, "div", 4)(3, "ion-select", 25);
4738
+ i0.ɵɵlistener("ionChange", function FilterComponent_Conditional_17_Template_ion_select_ionChange_3_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleSortChange($event)); });
4739
+ i0.ɵɵrepeaterCreate(4, FilterComponent_Conditional_17_For_5_Template, 4, 4, "ion-select-option", 26, i0.ɵɵrepeaterTrackByIdentity);
4740
+ i0.ɵɵelementEnd()();
4741
+ i0.ɵɵelementStart(6, "div", 27)(7, "ion-button", 28);
4742
+ i0.ɵɵlistener("click", function FilterComponent_Conditional_17_Template_ion_button_click_7_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleSortDirectionChange()); });
4743
+ i0.ɵɵelement(8, "ion-icon", 29);
4744
+ i0.ɵɵelementEnd()()()();
4745
+ } if (rf & 2) {
4746
+ const ctx_r2 = i0.ɵɵnextContext();
4747
+ i0.ɵɵadvance(3);
4748
+ i0.ɵɵproperty("value", ctx_r2.sortValue);
4749
+ i0.ɵɵadvance();
4750
+ i0.ɵɵrepeater(ctx_r2.sortBy);
4751
+ i0.ɵɵadvance(4);
4752
+ i0.ɵɵproperty("name", ctx_r2.sortDirection === "desc" ? "arrow-down-outline" : "arrow-up-outline");
4753
+ } }
4146
4754
  /**
4147
4755
  * @description Advanced filter component for creating dynamic search filters with step-by-step construction.
4148
4756
  * @summary This component provides a comprehensive filtering interface that allows users to build
@@ -4778,42 +5386,124 @@ let FilterComponent = class FilterComponent extends NgxBaseComponent {
4778
5386
  handleSearch(value) {
4779
5387
  this.searchEvent.emit(value);
4780
5388
  }
4781
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4782
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FilterComponent, isStandalone: true, selector: "ngx-decaf-filter", inputs: { indexes: "indexes", conditions: "conditions", sortBy: "sortBy", disableSort: "disableSort" }, outputs: { filterEvent: "filterEvent", searchEvent: "searchEvent" }, viewQueries: [{ propertyName: "optionsFilterElement", first: true, predicate: ["optionsFilterElement"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "\n@if(!indexes.length) {\n <ngx-decaf-searchbar [emitEventToWindow]=\"false\" [debounce]=\"500\" (searchEvent)=\"handleSearch($event)\" />\n}\n\n<div class=\"dcf-grid dcf-grid-small dcf-grid-match dcf-filter-grid\" [ngClass]=\"{'dcf-hidden': !indexes.length}\">\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-filter\">\n <div class=\"dcf-input\">\n @for(filter of filterValue; track trackItemFn($index, filter?.['index'])) {\n @if(filter?.['index']) {\n <ion-chip [outline]=\"true\">{{ filter?.['index'] }}</ion-chip>\n }\n @if(filter?.['condition']) {\n <ion-chip [outline]=\"true\">{{ filter?.['condition'] }}</ion-chip>\n }\n @if(filter?.['value']) {\n <ion-chip [outline]=\"true\" class=\"dcf-filter-value\">\n {{ filter?.['value'] }}\n <ion-icon name=\"close\" (click)=\"removeFilter(filter?.['value'])\" size=\"small\"></ion-icon>\n </ion-chip>\n }\n }\n <div class=\"dcf-width-1-1\">\n <input\n fill=\"none\"\n [(ngModel)]=\"value\"\n (keydown.enter)=\"addFilter(value, $event)\"\n (keydown.backspace)=\"clear(value)\"\n (input)=\"handleInput($event)\"\n (click)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n type=\"text\"\n [readonly]=\"step !== 3\"\n placeholder=\"{{ locale + (step === 3 ? '.type' : '.select') | translate }}\"\n #component\n />\n @if(windowWidth >= 768) {\n <div [class]=\"'dcf-dropdown ' + (options.length > 0 ? ' dcf-active' : '')\" #optionsFilterElement>\n <div>\n @if(filteredOptions.length > 0) {\n @for(key of filteredOptions; track key) {\n <div\n class=\"dcf-item\"\n tabindex=\"0\"\n (keydown.enter)=\"selectOption(key)\"\n (click)=\"selectOption(key)\">\n {{ key }}\n </div>\n }\n } @else {\n <div class=\"dcf-empty\"\n (click)=\"filteredOptions = options; value = ''\"\n tabindex=\"0\"\n (keydown.enter)=\"filteredOptions = options; value = ''\"\n >\n {{ 'no_suggestions' | translate }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n @if(filterValue.length > 0) {\n <div class=\"dcf-icon-clear\">\n <ion-button fill=\"clear\" size=\"small\" (click)=\"clear()\">\n <ion-icon name=\"trash-outline\" color=\"dark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-icon-search\">\n <ion-button fill=\"clear\" size=\"small\" (click)=\"submit()\">\n <ion-icon name=\"search-outline\" color=\"dark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </div>\n </div>\n @if(windowWidth < 768) {\n <div [class]=\"'dcf-dropdown ' + (options.length > 0 ? ' dcf-active' : '')\" #optionsFilterElement>\n <div>\n @if(filteredOptions.length > 0) {\n @for(key of filteredOptions; track key) {\n <div\n class=\"dcf-item\"\n tabindex=\"0\"\n (keydown.enter)=\"selectOption(key)\"\n (click)=\"selectOption(key)\">\n {{ key }}\n </div>\n }\n } @else {\n <div class=\"dcf-empty\"\n (click)=\"filteredOptions = options; value = ''\"\n tabindex=\"0\"\n (keydown.enter)=\"filteredOptions = options; value = ''\"\n >\n {{ 'no_suggestions' | translate }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n @if(!disableSort) {\n <div class=\"dcf-width-1-5@m dcf-width-1-1 dcf-sort-container\">\n <div class=\"dcf-grid dcf-grid-collapse dcf-flex dcf-flex-middle dcf-grid-match\">\n <div class=\"dcf-width-expand\">\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n class=\"dcf-sort-select\"\n (ionChange)=\"handleSortChange($event)\"\n interface=\"popover\"\n [value]=\"sortValue\"\n label-placement=\"floating\"\n fill=\"outline\"\n >\n @for(sort of sortBy; track sort) {\n aa\n <ion-select-option [value]=\"sort\">{{ sort | translate }}</ion-select-option>\n }\n </ion-select>\n </div>\n <div class=\"dcf-width-auto\">\n <ion-button (click)=\"handleSortDirectionChange()\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" [name]=\"sortDirection === 'desc' ? 'arrow-down-outline' : 'arrow-up-outline'\"></ion-icon>\n </ion-button>\n </div>\n </div>\n </div>\n }\n</div>\n\n\n", styles: [".dcf-filter-grid{padding:0 .5rem;margin-top:.75rem;margin-bottom:.75rem}ion-select{min-height:44px!important}.dcf-hidden{display:none!important}.dcf-filter{display:flex;width:100%;min-height:40px;border:1px solid var(--ion-color-gray-3);box-shadow:0 1px 2px #0a0d120d;background-color:#fff;border-radius:var(--dcf-border-radius);box-sizing:border-box}.dcf-filter:focus-within{border-color:var(--ion-color-primary);background-color:#fff}.dcf-filter ion-chip{border-radius:6px;padding:0 8px!important;height:24px;min-height:24px;font-size:.75rem;border:1px solid var(--ion-color-gray-3);color:var(--ion-color-gray-7);font-style:normal;font-weight:500;flex-shrink:0;margin-right:2px;white-space:nowrap}.dcf-filter ion-chip.dcf-filter-value{background:var(--ion-color-gray-2);border-color:var(--ion-color-gray-4)!important;color:var(--ion-color-gray-8)!important}.dcf-filter ion-chip.sc-ion-chip-md-h,.dcf-filter ion-chip.sc-ion-chip-ios-h{height:24px;min-height:24px}.dcf-filter ion-chip.sc-ion-chip-md-h .chip-native,.dcf-filter ion-chip.sc-ion-chip-ios-h .chip-native{padding:0 8px!important;height:24px;min-height:24px}.dcf-filter ion-chip ion-label{padding:0 4px;margin:0;font-size:.75rem;white-space:nowrap}.dcf-filter ion-chip ion-icon{margin:0 2px;font-size:.75rem}.dcf-filter .dcf-input{width:100%;display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-left:.5rem}.dcf-filter .dcf-input input{min-height:40px;color:var(--ion-color-gray-7);min-width:100px;width:100%;font-size:1rem;border:none;outline:none;background:transparent;border:0px!important;outline:none!important}.dcf-filter .dcf-input input:focus{border:0px!important;outline:none!important}.dcf-filter .dcf-icon-clear,.dcf-filter .dcf-icon-search{display:flex;justify-content:center;text-align:center;align-items:center;min-width:40px}.dcf-filter .dcf-icon-search ion-icon{font-size:1.25rem}.dcf-sort-container{min-width:200px!important;width:auto}@media (min-width: 990px){.dcf-sort-container{max-width:20%!important}}@media (max-width: 680px){.dcf-sort-container{min-width:100%!important;margin:.75rem 0rem}}.dcf-dropdown{position:absolute;max-height:200px;overflow-y:auto;background-color:#fff;border-radius:4px;z-index:1000!important;min-width:200px;max-width:300px;display:none}.dcf-dropdown.dcf-active{display:block;margin-top:-3px;box-shadow:0 12px 16px -4px #0a0d1214,0 4px 6px -2px #0a0d1208,0 2px 2px -1px #0a0d120a!important;border:1px solid var(--ion-color-gray-2);border-radius:var(--dcf-border-radius);padding:.5rem .25rem}@media (max-width: 768px){.dcf-dropdown.dcf-active{margin-top:55px}}.dcf-dropdown.dcf-active>div>div{cursor:pointer;height:35px;padding:.5rem 1rem;border:1px solid transparent;font-size:1rem;display:flex;align-items:center;color:var(--ion-color-gray-8);border-radius:6px}.dcf-dropdown.dcf-active>div>div.dcf-filtering-item,.dcf-dropdown.dcf-active>div>div:only-child{border-color:var(--ion-color-primary)}.dcf-dropdown.dcf-active>div>div.dcf-filtering-item.dcf-empty,.dcf-dropdown.dcf-active>div>div:only-child.dcf-empty{border-color:var(--ion-color-gray-7)!important}.dcf-dropdown.dcf-active>div>div:hover{background-color:var(--ion-color-gray-1)}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: SearchbarComponent, selector: "ngx-decaf-searchbar", inputs: ["autocomplete", "autocorrect", "animated", "buttonCancelText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value", "queryKeys", "isVisible", "wrapper", "wrapperColor", "emitEventToWindow"], outputs: ["searchEvent"] }] }); }
5389
+ static { this.ɵfac = function FilterComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FilterComponent)(); }; }
5390
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FilterComponent, selectors: [["ngx-decaf-filter"]], viewQuery: function FilterComponent_Query(rf, ctx) { if (rf & 1) {
5391
+ i0.ɵɵviewQuery(_c0$5, 5, ElementRef);
5392
+ } if (rf & 2) {
5393
+ let _t;
5394
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionsFilterElement = _t.first);
5395
+ } }, inputs: { indexes: "indexes", conditions: "conditions", sortBy: "sortBy", disableSort: "disableSort" }, outputs: { filterEvent: "filterEvent", searchEvent: "searchEvent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 18, vars: 13, consts: [["component", ""], ["optionsFilterElement", ""], [3, "emitEventToWindow", "debounce"], [1, "dcf-grid", "dcf-grid-small", "dcf-grid-match", "dcf-filter-grid", 3, "ngClass"], [1, "dcf-width-expand"], [1, "dcf-filter"], [1, "dcf-input"], [1, "dcf-width-1-1"], ["fill", "none", "type", "text", 3, "ngModelChange", "keydown.enter", "keydown.backspace", "input", "click", "blur", "ngModel", "readonly", "placeholder"], [3, "class"], [1, "dcf-icon-clear"], [1, "dcf-icon-search"], ["fill", "clear", "size", "small", 3, "click"], ["name", "search-outline", "color", "dark", "slot", "icon-only"], [1, "dcf-width-1-5@m", "dcf-width-1-1", "dcf-sort-container"], [3, "searchEvent", "emitEventToWindow", "debounce"], [3, "outline"], [1, "dcf-filter-value", 3, "outline"], ["name", "close", "size", "small", 3, "click"], ["tabindex", "0", 1, "dcf-empty"], ["tabindex", "0", 1, "dcf-item"], ["tabindex", "0", 1, "dcf-item", 3, "keydown.enter", "click"], ["tabindex", "0", 1, "dcf-empty", 3, "click", "keydown.enter"], ["name", "trash-outline", "color", "dark", "slot", "icon-only"], [1, "dcf-grid", "dcf-grid-collapse", "dcf-flex", "dcf-flex-middle", "dcf-grid-match"], ["toggleIcon", "chevron-down-outline", "expandedIcon", "chevron-up-outline", "interface", "popover", "label-placement", "floating", "fill", "outline", 1, "dcf-sort-select", 3, "ionChange", "value"], [3, "value"], [1, "dcf-width-auto"], ["fill", "clear", 3, "click"], ["slot", "icon-only", 3, "name"]], template: function FilterComponent_Template(rf, ctx) { if (rf & 1) {
5396
+ const _r1 = i0.ɵɵgetCurrentView();
5397
+ i0.ɵɵtemplate(0, FilterComponent_Conditional_0_Template, 1, 2, "ngx-decaf-searchbar", 2);
5398
+ i0.ɵɵelementStart(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "div", 6);
5399
+ i0.ɵɵrepeaterCreate(5, FilterComponent_For_6_Template, 3, 3, null, null, _forTrack0$1, true);
5400
+ i0.ɵɵelementStart(7, "div", 7)(8, "input", 8, 0);
5401
+ i0.ɵɵpipe(10, "translate");
5402
+ i0.ɵɵtwoWayListener("ngModelChange", function FilterComponent_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.value, $event) || (ctx.value = $event); return i0.ɵɵresetView($event); });
5403
+ i0.ɵɵlistener("keydown.enter", function FilterComponent_Template_input_keydown_enter_8_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.addFilter(ctx.value, $event)); })("keydown.backspace", function FilterComponent_Template_input_keydown_backspace_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.clear(ctx.value)); })("input", function FilterComponent_Template_input_input_8_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleInput($event)); })("click", function FilterComponent_Template_input_click_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleFocus()); })("blur", function FilterComponent_Template_input_blur_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleBlur()); });
5404
+ i0.ɵɵelementEnd();
5405
+ i0.ɵɵtemplate(11, FilterComponent_Conditional_11_Template, 5, 3, "div", 9);
5406
+ i0.ɵɵelementEnd()();
5407
+ i0.ɵɵtemplate(12, FilterComponent_Conditional_12_Template, 3, 0, "div", 10);
5408
+ i0.ɵɵelementStart(13, "div", 11)(14, "ion-button", 12);
5409
+ i0.ɵɵlistener("click", function FilterComponent_Template_ion_button_click_14_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.submit()); });
5410
+ i0.ɵɵelement(15, "ion-icon", 13);
5411
+ i0.ɵɵelementEnd()()();
5412
+ i0.ɵɵtemplate(16, FilterComponent_Conditional_16_Template, 5, 3, "div", 9);
5413
+ i0.ɵɵelementEnd();
5414
+ i0.ɵɵtemplate(17, FilterComponent_Conditional_17_Template, 9, 2, "div", 14);
5415
+ i0.ɵɵelementEnd();
5416
+ } if (rf & 2) {
5417
+ i0.ɵɵconditional(!ctx.indexes.length ? 0 : -1);
5418
+ i0.ɵɵadvance();
5419
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c1$4, !ctx.indexes.length));
5420
+ i0.ɵɵadvance(4);
5421
+ i0.ɵɵrepeater(ctx.filterValue);
5422
+ i0.ɵɵadvance(3);
5423
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(10, 9, ctx.locale + (ctx.step === 3 ? ".type" : ".select")));
5424
+ i0.ɵɵtwoWayProperty("ngModel", ctx.value);
5425
+ i0.ɵɵproperty("readonly", ctx.step !== 3);
5426
+ i0.ɵɵadvance(3);
5427
+ i0.ɵɵconditional(ctx.windowWidth >= 768 ? 11 : -1);
5428
+ i0.ɵɵadvance();
5429
+ i0.ɵɵconditional(ctx.filterValue.length > 0 ? 12 : -1);
5430
+ i0.ɵɵadvance(4);
5431
+ i0.ɵɵconditional(ctx.windowWidth < 768 ? 16 : -1);
5432
+ i0.ɵɵadvance();
5433
+ i0.ɵɵconditional(!ctx.disableSort ? 17 : -1);
5434
+ } }, dependencies: [ForAngularModule, i1.IonButton, i2.NgClass, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.NgModel, i3.TranslatePipe, IonChip,
5435
+ IonIcon,
5436
+ IonSelect,
5437
+ SearchbarComponent], styles: [".dcf-filter-grid[_ngcontent-%COMP%]{padding:0 .5rem;margin-top:.75rem;margin-bottom:.75rem}ion-select[_ngcontent-%COMP%]{min-height:44px!important}.dcf-hidden[_ngcontent-%COMP%]{display:none!important}.dcf-filter[_ngcontent-%COMP%]{display:flex;width:100%;min-height:40px;border:1px solid var(--ion-color-gray-3);box-shadow:0 1px 2px #0a0d120d;background-color:#fff;border-radius:var(--dcf-border-radius);box-sizing:border-box}.dcf-filter[_ngcontent-%COMP%]:focus-within{border-color:var(--ion-color-primary);background-color:#fff}.dcf-filter[_ngcontent-%COMP%] ion-chip[_ngcontent-%COMP%]{border-radius:6px;padding:0 8px!important;height:24px;min-height:24px;font-size:.75rem;border:1px solid var(--ion-color-gray-3);color:var(--ion-color-gray-7);font-style:normal;font-weight:500;flex-shrink:0;margin-right:2px;white-space:nowrap}.dcf-filter[_ngcontent-%COMP%] ion-chip.dcf-filter-value[_ngcontent-%COMP%]{background:var(--ion-color-gray-2);border-color:var(--ion-color-gray-4)!important;color:var(--ion-color-gray-8)!important}.dcf-filter[_ngcontent-%COMP%] ion-chip.sc-ion-chip-md-h[_ngcontent-%COMP%], .dcf-filter[_ngcontent-%COMP%] ion-chip.sc-ion-chip-ios-h[_ngcontent-%COMP%]{height:24px;min-height:24px}.dcf-filter[_ngcontent-%COMP%] ion-chip.sc-ion-chip-md-h[_ngcontent-%COMP%] .chip-native[_ngcontent-%COMP%], .dcf-filter[_ngcontent-%COMP%] ion-chip.sc-ion-chip-ios-h[_ngcontent-%COMP%] .chip-native[_ngcontent-%COMP%]{padding:0 8px!important;height:24px;min-height:24px}.dcf-filter[_ngcontent-%COMP%] ion-chip[_ngcontent-%COMP%] ion-label[_ngcontent-%COMP%]{padding:0 4px;margin:0;font-size:.75rem;white-space:nowrap}.dcf-filter[_ngcontent-%COMP%] ion-chip[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{margin:0 2px;font-size:.75rem}.dcf-filter[_ngcontent-%COMP%] .dcf-input[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-left:.5rem}.dcf-filter[_ngcontent-%COMP%] .dcf-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{min-height:40px;color:var(--ion-color-gray-7);min-width:100px;width:100%;font-size:1rem;border:none;outline:none;background:transparent;border:0px!important;outline:none!important}.dcf-filter[_ngcontent-%COMP%] .dcf-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border:0px!important;outline:none!important}.dcf-filter[_ngcontent-%COMP%] .dcf-icon-clear[_ngcontent-%COMP%], .dcf-filter[_ngcontent-%COMP%] .dcf-icon-search[_ngcontent-%COMP%]{display:flex;justify-content:center;text-align:center;align-items:center;min-width:40px}.dcf-filter[_ngcontent-%COMP%] .dcf-icon-search[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{font-size:1.25rem}.dcf-sort-container[_ngcontent-%COMP%]{min-width:200px!important;width:auto}@media (min-width: 990px){.dcf-sort-container[_ngcontent-%COMP%]{max-width:20%!important}}@media (max-width: 680px){.dcf-sort-container[_ngcontent-%COMP%]{min-width:100%!important;margin:.75rem 0rem}}.dcf-dropdown[_ngcontent-%COMP%]{position:absolute;max-height:200px;overflow-y:auto;background-color:#fff;border-radius:4px;z-index:1000!important;min-width:200px;max-width:300px;display:none}.dcf-dropdown.dcf-active[_ngcontent-%COMP%]{display:block;margin-top:-3px;box-shadow:0 12px 16px -4px #0a0d1214,0 4px 6px -2px #0a0d1208,0 2px 2px -1px #0a0d120a!important;border:1px solid var(--ion-color-gray-2);border-radius:var(--dcf-border-radius);padding:.5rem .25rem}@media (max-width: 768px){.dcf-dropdown.dcf-active[_ngcontent-%COMP%]{margin-top:55px}}.dcf-dropdown.dcf-active[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{cursor:pointer;height:35px;padding:.5rem 1rem;border:1px solid transparent;font-size:1rem;display:flex;align-items:center;color:var(--ion-color-gray-8);border-radius:6px}.dcf-dropdown.dcf-active[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] > div.dcf-filtering-item[_ngcontent-%COMP%], .dcf-dropdown.dcf-active[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:only-child{border-color:var(--ion-color-primary)}.dcf-dropdown.dcf-active[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] > div.dcf-filtering-item.dcf-empty[_ngcontent-%COMP%], .dcf-dropdown.dcf-active[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:only-child.dcf-empty{border-color:var(--ion-color-gray-7)!important}.dcf-dropdown.dcf-active[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:hover{background-color:var(--ion-color-gray-1)}"] }); }
4783
5438
  };
4784
5439
  FilterComponent = __decorate([
4785
5440
  Dynamic(),
4786
5441
  __metadata("design:paramtypes", [])
4787
5442
  ], FilterComponent);
4788
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterComponent, decorators: [{
4789
- type: Component,
4790
- args: [{ selector: 'ngx-decaf-filter', imports: [
4791
- ForAngularModule,
4792
- IonLabel,
4793
- IonItem,
4794
- IonChip,
4795
- IonIcon,
4796
- IonSelect,
4797
- IonIcon,
4798
- SearchbarComponent
4799
- ], standalone: true, template: "\n@if(!indexes.length) {\n <ngx-decaf-searchbar [emitEventToWindow]=\"false\" [debounce]=\"500\" (searchEvent)=\"handleSearch($event)\" />\n}\n\n<div class=\"dcf-grid dcf-grid-small dcf-grid-match dcf-filter-grid\" [ngClass]=\"{'dcf-hidden': !indexes.length}\">\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-filter\">\n <div class=\"dcf-input\">\n @for(filter of filterValue; track trackItemFn($index, filter?.['index'])) {\n @if(filter?.['index']) {\n <ion-chip [outline]=\"true\">{{ filter?.['index'] }}</ion-chip>\n }\n @if(filter?.['condition']) {\n <ion-chip [outline]=\"true\">{{ filter?.['condition'] }}</ion-chip>\n }\n @if(filter?.['value']) {\n <ion-chip [outline]=\"true\" class=\"dcf-filter-value\">\n {{ filter?.['value'] }}\n <ion-icon name=\"close\" (click)=\"removeFilter(filter?.['value'])\" size=\"small\"></ion-icon>\n </ion-chip>\n }\n }\n <div class=\"dcf-width-1-1\">\n <input\n fill=\"none\"\n [(ngModel)]=\"value\"\n (keydown.enter)=\"addFilter(value, $event)\"\n (keydown.backspace)=\"clear(value)\"\n (input)=\"handleInput($event)\"\n (click)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n type=\"text\"\n [readonly]=\"step !== 3\"\n placeholder=\"{{ locale + (step === 3 ? '.type' : '.select') | translate }}\"\n #component\n />\n @if(windowWidth >= 768) {\n <div [class]=\"'dcf-dropdown ' + (options.length > 0 ? ' dcf-active' : '')\" #optionsFilterElement>\n <div>\n @if(filteredOptions.length > 0) {\n @for(key of filteredOptions; track key) {\n <div\n class=\"dcf-item\"\n tabindex=\"0\"\n (keydown.enter)=\"selectOption(key)\"\n (click)=\"selectOption(key)\">\n {{ key }}\n </div>\n }\n } @else {\n <div class=\"dcf-empty\"\n (click)=\"filteredOptions = options; value = ''\"\n tabindex=\"0\"\n (keydown.enter)=\"filteredOptions = options; value = ''\"\n >\n {{ 'no_suggestions' | translate }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n @if(filterValue.length > 0) {\n <div class=\"dcf-icon-clear\">\n <ion-button fill=\"clear\" size=\"small\" (click)=\"clear()\">\n <ion-icon name=\"trash-outline\" color=\"dark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-icon-search\">\n <ion-button fill=\"clear\" size=\"small\" (click)=\"submit()\">\n <ion-icon name=\"search-outline\" color=\"dark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </div>\n </div>\n @if(windowWidth < 768) {\n <div [class]=\"'dcf-dropdown ' + (options.length > 0 ? ' dcf-active' : '')\" #optionsFilterElement>\n <div>\n @if(filteredOptions.length > 0) {\n @for(key of filteredOptions; track key) {\n <div\n class=\"dcf-item\"\n tabindex=\"0\"\n (keydown.enter)=\"selectOption(key)\"\n (click)=\"selectOption(key)\">\n {{ key }}\n </div>\n }\n } @else {\n <div class=\"dcf-empty\"\n (click)=\"filteredOptions = options; value = ''\"\n tabindex=\"0\"\n (keydown.enter)=\"filteredOptions = options; value = ''\"\n >\n {{ 'no_suggestions' | translate }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n @if(!disableSort) {\n <div class=\"dcf-width-1-5@m dcf-width-1-1 dcf-sort-container\">\n <div class=\"dcf-grid dcf-grid-collapse dcf-flex dcf-flex-middle dcf-grid-match\">\n <div class=\"dcf-width-expand\">\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n class=\"dcf-sort-select\"\n (ionChange)=\"handleSortChange($event)\"\n interface=\"popover\"\n [value]=\"sortValue\"\n label-placement=\"floating\"\n fill=\"outline\"\n >\n @for(sort of sortBy; track sort) {\n aa\n <ion-select-option [value]=\"sort\">{{ sort | translate }}</ion-select-option>\n }\n </ion-select>\n </div>\n <div class=\"dcf-width-auto\">\n <ion-button (click)=\"handleSortDirectionChange()\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" [name]=\"sortDirection === 'desc' ? 'arrow-down-outline' : 'arrow-up-outline'\"></ion-icon>\n </ion-button>\n </div>\n </div>\n </div>\n }\n</div>\n\n\n", styles: [".dcf-filter-grid{padding:0 .5rem;margin-top:.75rem;margin-bottom:.75rem}ion-select{min-height:44px!important}.dcf-hidden{display:none!important}.dcf-filter{display:flex;width:100%;min-height:40px;border:1px solid var(--ion-color-gray-3);box-shadow:0 1px 2px #0a0d120d;background-color:#fff;border-radius:var(--dcf-border-radius);box-sizing:border-box}.dcf-filter:focus-within{border-color:var(--ion-color-primary);background-color:#fff}.dcf-filter ion-chip{border-radius:6px;padding:0 8px!important;height:24px;min-height:24px;font-size:.75rem;border:1px solid var(--ion-color-gray-3);color:var(--ion-color-gray-7);font-style:normal;font-weight:500;flex-shrink:0;margin-right:2px;white-space:nowrap}.dcf-filter ion-chip.dcf-filter-value{background:var(--ion-color-gray-2);border-color:var(--ion-color-gray-4)!important;color:var(--ion-color-gray-8)!important}.dcf-filter ion-chip.sc-ion-chip-md-h,.dcf-filter ion-chip.sc-ion-chip-ios-h{height:24px;min-height:24px}.dcf-filter ion-chip.sc-ion-chip-md-h .chip-native,.dcf-filter ion-chip.sc-ion-chip-ios-h .chip-native{padding:0 8px!important;height:24px;min-height:24px}.dcf-filter ion-chip ion-label{padding:0 4px;margin:0;font-size:.75rem;white-space:nowrap}.dcf-filter ion-chip ion-icon{margin:0 2px;font-size:.75rem}.dcf-filter .dcf-input{width:100%;display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-left:.5rem}.dcf-filter .dcf-input input{min-height:40px;color:var(--ion-color-gray-7);min-width:100px;width:100%;font-size:1rem;border:none;outline:none;background:transparent;border:0px!important;outline:none!important}.dcf-filter .dcf-input input:focus{border:0px!important;outline:none!important}.dcf-filter .dcf-icon-clear,.dcf-filter .dcf-icon-search{display:flex;justify-content:center;text-align:center;align-items:center;min-width:40px}.dcf-filter .dcf-icon-search ion-icon{font-size:1.25rem}.dcf-sort-container{min-width:200px!important;width:auto}@media (min-width: 990px){.dcf-sort-container{max-width:20%!important}}@media (max-width: 680px){.dcf-sort-container{min-width:100%!important;margin:.75rem 0rem}}.dcf-dropdown{position:absolute;max-height:200px;overflow-y:auto;background-color:#fff;border-radius:4px;z-index:1000!important;min-width:200px;max-width:300px;display:none}.dcf-dropdown.dcf-active{display:block;margin-top:-3px;box-shadow:0 12px 16px -4px #0a0d1214,0 4px 6px -2px #0a0d1208,0 2px 2px -1px #0a0d120a!important;border:1px solid var(--ion-color-gray-2);border-radius:var(--dcf-border-radius);padding:.5rem .25rem}@media (max-width: 768px){.dcf-dropdown.dcf-active{margin-top:55px}}.dcf-dropdown.dcf-active>div>div{cursor:pointer;height:35px;padding:.5rem 1rem;border:1px solid transparent;font-size:1rem;display:flex;align-items:center;color:var(--ion-color-gray-8);border-radius:6px}.dcf-dropdown.dcf-active>div>div.dcf-filtering-item,.dcf-dropdown.dcf-active>div>div:only-child{border-color:var(--ion-color-primary)}.dcf-dropdown.dcf-active>div>div.dcf-filtering-item.dcf-empty,.dcf-dropdown.dcf-active>div>div:only-child.dcf-empty{border-color:var(--ion-color-gray-7)!important}.dcf-dropdown.dcf-active>div>div:hover{background-color:var(--ion-color-gray-1)}\n"] }]
4800
- }], ctorParameters: () => [], propDecorators: { optionsFilterElement: [{
4801
- type: ViewChild,
4802
- args: ['optionsFilterElement', { read: ElementRef, static: false }]
4803
- }], indexes: [{
4804
- type: Input
4805
- }], conditions: [{
4806
- type: Input
4807
- }], sortBy: [{
4808
- type: Input
4809
- }], disableSort: [{
4810
- type: Input
4811
- }], filterEvent: [{
4812
- type: Output
4813
- }], searchEvent: [{
4814
- type: Output
4815
- }] } });
5443
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterComponent, [{
5444
+ type: Component,
5445
+ args: [{ selector: 'ngx-decaf-filter', imports: [
5446
+ ForAngularModule,
5447
+ IonLabel,
5448
+ IonItem,
5449
+ IonChip,
5450
+ IonIcon,
5451
+ IonSelect,
5452
+ IonIcon,
5453
+ SearchbarComponent
5454
+ ], standalone: true, template: "\n@if(!indexes.length) {\n <ngx-decaf-searchbar [emitEventToWindow]=\"false\" [debounce]=\"500\" (searchEvent)=\"handleSearch($event)\" />\n}\n\n<div class=\"dcf-grid dcf-grid-small dcf-grid-match dcf-filter-grid\" [ngClass]=\"{'dcf-hidden': !indexes.length}\">\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-filter\">\n <div class=\"dcf-input\">\n @for(filter of filterValue; track trackItemFn($index, filter?.['index'])) {\n @if(filter?.['index']) {\n <ion-chip [outline]=\"true\">{{ filter?.['index'] }}</ion-chip>\n }\n @if(filter?.['condition']) {\n <ion-chip [outline]=\"true\">{{ filter?.['condition'] }}</ion-chip>\n }\n @if(filter?.['value']) {\n <ion-chip [outline]=\"true\" class=\"dcf-filter-value\">\n {{ filter?.['value'] }}\n <ion-icon name=\"close\" (click)=\"removeFilter(filter?.['value'])\" size=\"small\"></ion-icon>\n </ion-chip>\n }\n }\n <div class=\"dcf-width-1-1\">\n <input\n fill=\"none\"\n [(ngModel)]=\"value\"\n (keydown.enter)=\"addFilter(value, $event)\"\n (keydown.backspace)=\"clear(value)\"\n (input)=\"handleInput($event)\"\n (click)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n type=\"text\"\n [readonly]=\"step !== 3\"\n placeholder=\"{{ locale + (step === 3 ? '.type' : '.select') | translate }}\"\n #component\n />\n @if(windowWidth >= 768) {\n <div [class]=\"'dcf-dropdown ' + (options.length > 0 ? ' dcf-active' : '')\" #optionsFilterElement>\n <div>\n @if(filteredOptions.length > 0) {\n @for(key of filteredOptions; track key) {\n <div\n class=\"dcf-item\"\n tabindex=\"0\"\n (keydown.enter)=\"selectOption(key)\"\n (click)=\"selectOption(key)\">\n {{ key }}\n </div>\n }\n } @else {\n <div class=\"dcf-empty\"\n (click)=\"filteredOptions = options; value = ''\"\n tabindex=\"0\"\n (keydown.enter)=\"filteredOptions = options; value = ''\"\n >\n {{ 'no_suggestions' | translate }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n @if(filterValue.length > 0) {\n <div class=\"dcf-icon-clear\">\n <ion-button fill=\"clear\" size=\"small\" (click)=\"clear()\">\n <ion-icon name=\"trash-outline\" color=\"dark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-icon-search\">\n <ion-button fill=\"clear\" size=\"small\" (click)=\"submit()\">\n <ion-icon name=\"search-outline\" color=\"dark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </div>\n </div>\n @if(windowWidth < 768) {\n <div [class]=\"'dcf-dropdown ' + (options.length > 0 ? ' dcf-active' : '')\" #optionsFilterElement>\n <div>\n @if(filteredOptions.length > 0) {\n @for(key of filteredOptions; track key) {\n <div\n class=\"dcf-item\"\n tabindex=\"0\"\n (keydown.enter)=\"selectOption(key)\"\n (click)=\"selectOption(key)\">\n {{ key }}\n </div>\n }\n } @else {\n <div class=\"dcf-empty\"\n (click)=\"filteredOptions = options; value = ''\"\n tabindex=\"0\"\n (keydown.enter)=\"filteredOptions = options; value = ''\"\n >\n {{ 'no_suggestions' | translate }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n @if(!disableSort) {\n <div class=\"dcf-width-1-5@m dcf-width-1-1 dcf-sort-container\">\n <div class=\"dcf-grid dcf-grid-collapse dcf-flex dcf-flex-middle dcf-grid-match\">\n <div class=\"dcf-width-expand\">\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n class=\"dcf-sort-select\"\n (ionChange)=\"handleSortChange($event)\"\n interface=\"popover\"\n [value]=\"sortValue\"\n label-placement=\"floating\"\n fill=\"outline\"\n >\n @for(sort of sortBy; track sort) {\n aa\n <ion-select-option [value]=\"sort\">{{ sort | translate }}</ion-select-option>\n }\n </ion-select>\n </div>\n <div class=\"dcf-width-auto\">\n <ion-button (click)=\"handleSortDirectionChange()\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" [name]=\"sortDirection === 'desc' ? 'arrow-down-outline' : 'arrow-up-outline'\"></ion-icon>\n </ion-button>\n </div>\n </div>\n </div>\n }\n</div>\n\n\n", styles: [".dcf-filter-grid{padding:0 .5rem;margin-top:.75rem;margin-bottom:.75rem}ion-select{min-height:44px!important}.dcf-hidden{display:none!important}.dcf-filter{display:flex;width:100%;min-height:40px;border:1px solid var(--ion-color-gray-3);box-shadow:0 1px 2px #0a0d120d;background-color:#fff;border-radius:var(--dcf-border-radius);box-sizing:border-box}.dcf-filter:focus-within{border-color:var(--ion-color-primary);background-color:#fff}.dcf-filter ion-chip{border-radius:6px;padding:0 8px!important;height:24px;min-height:24px;font-size:.75rem;border:1px solid var(--ion-color-gray-3);color:var(--ion-color-gray-7);font-style:normal;font-weight:500;flex-shrink:0;margin-right:2px;white-space:nowrap}.dcf-filter ion-chip.dcf-filter-value{background:var(--ion-color-gray-2);border-color:var(--ion-color-gray-4)!important;color:var(--ion-color-gray-8)!important}.dcf-filter ion-chip.sc-ion-chip-md-h,.dcf-filter ion-chip.sc-ion-chip-ios-h{height:24px;min-height:24px}.dcf-filter ion-chip.sc-ion-chip-md-h .chip-native,.dcf-filter ion-chip.sc-ion-chip-ios-h .chip-native{padding:0 8px!important;height:24px;min-height:24px}.dcf-filter ion-chip ion-label{padding:0 4px;margin:0;font-size:.75rem;white-space:nowrap}.dcf-filter ion-chip ion-icon{margin:0 2px;font-size:.75rem}.dcf-filter .dcf-input{width:100%;display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-left:.5rem}.dcf-filter .dcf-input input{min-height:40px;color:var(--ion-color-gray-7);min-width:100px;width:100%;font-size:1rem;border:none;outline:none;background:transparent;border:0px!important;outline:none!important}.dcf-filter .dcf-input input:focus{border:0px!important;outline:none!important}.dcf-filter .dcf-icon-clear,.dcf-filter .dcf-icon-search{display:flex;justify-content:center;text-align:center;align-items:center;min-width:40px}.dcf-filter .dcf-icon-search ion-icon{font-size:1.25rem}.dcf-sort-container{min-width:200px!important;width:auto}@media (min-width: 990px){.dcf-sort-container{max-width:20%!important}}@media (max-width: 680px){.dcf-sort-container{min-width:100%!important;margin:.75rem 0rem}}.dcf-dropdown{position:absolute;max-height:200px;overflow-y:auto;background-color:#fff;border-radius:4px;z-index:1000!important;min-width:200px;max-width:300px;display:none}.dcf-dropdown.dcf-active{display:block;margin-top:-3px;box-shadow:0 12px 16px -4px #0a0d1214,0 4px 6px -2px #0a0d1208,0 2px 2px -1px #0a0d120a!important;border:1px solid var(--ion-color-gray-2);border-radius:var(--dcf-border-radius);padding:.5rem .25rem}@media (max-width: 768px){.dcf-dropdown.dcf-active{margin-top:55px}}.dcf-dropdown.dcf-active>div>div{cursor:pointer;height:35px;padding:.5rem 1rem;border:1px solid transparent;font-size:1rem;display:flex;align-items:center;color:var(--ion-color-gray-8);border-radius:6px}.dcf-dropdown.dcf-active>div>div.dcf-filtering-item,.dcf-dropdown.dcf-active>div>div:only-child{border-color:var(--ion-color-primary)}.dcf-dropdown.dcf-active>div>div.dcf-filtering-item.dcf-empty,.dcf-dropdown.dcf-active>div>div:only-child.dcf-empty{border-color:var(--ion-color-gray-7)!important}.dcf-dropdown.dcf-active>div>div:hover{background-color:var(--ion-color-gray-1)}\n"] }]
5455
+ }], () => [], { optionsFilterElement: [{
5456
+ type: ViewChild,
5457
+ args: ['optionsFilterElement', { read: ElementRef, static: false }]
5458
+ }], indexes: [{
5459
+ type: Input
5460
+ }], conditions: [{
5461
+ type: Input
5462
+ }], sortBy: [{
5463
+ type: Input
5464
+ }], disableSort: [{
5465
+ type: Input
5466
+ }], filterEvent: [{
5467
+ type: Output
5468
+ }], searchEvent: [{
5469
+ type: Output
5470
+ }] }); })();
5471
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterComponent, { className: "FilterComponent", filePath: "components/filter/filter.component.ts", lineNumber: 72 }); })();
4816
5472
 
5473
+ const _c0$4 = ["inner"];
5474
+ const _c1$3 = ["componentOuter"];
5475
+ function ModelRendererComponent_ng_template_0_Template(rf, ctx) { }
5476
+ function ModelRendererComponent_ng_template_2_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
5477
+ i0.ɵɵelement(0, "ngx-decaf-component-renderer", 4);
5478
+ } if (rf & 2) {
5479
+ const child_r1 = i0.ɵɵnextContext().$implicit;
5480
+ i0.ɵɵproperty("parent", child_r1);
5481
+ } }
5482
+ function ModelRendererComponent_ng_template_2_For_2_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
5483
+ i0.ɵɵelementContainer(0, null, 2);
5484
+ } }
5485
+ function ModelRendererComponent_ng_template_2_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
5486
+ i0.ɵɵtemplate(0, ModelRendererComponent_ng_template_2_For_2_Conditional_1_ng_container_0_Template, 2, 0, "ng-container", 5);
5487
+ } if (rf & 2) {
5488
+ const child_r1 = i0.ɵɵnextContext().$implicit;
5489
+ i0.ɵɵproperty("ngComponentOutlet", child_r1.component)("ngComponentOutletInjector", child_r1.injector)("ngComponentOutletInputs", child_r1.inputs)("ngComponentOutletContent", child_r1.content);
5490
+ } }
5491
+ function ModelRendererComponent_ng_template_2_For_2_Template(rf, ctx) { if (rf & 1) {
5492
+ i0.ɵɵtemplate(0, ModelRendererComponent_ng_template_2_For_2_Conditional_0_Template, 1, 1, "ngx-decaf-component-renderer", 4)(1, ModelRendererComponent_ng_template_2_For_2_Conditional_1_Template, 1, 4, "ng-container");
5493
+ } if (rf & 2) {
5494
+ const child_r1 = ctx.$implicit;
5495
+ i0.ɵɵconditional((child_r1 == null ? null : child_r1.children == null ? null : child_r1.children.length) ? 0 : 1);
5496
+ } }
5497
+ function ModelRendererComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
5498
+ i0.ɵɵelementStart(0, "div", 3);
5499
+ i0.ɵɵrepeaterCreate(1, ModelRendererComponent_ng_template_2_For_2_Template, 2, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
5500
+ i0.ɵɵelementEnd();
5501
+ } if (rf & 2) {
5502
+ const ctx_r1 = i0.ɵɵnextContext();
5503
+ i0.ɵɵproperty("id", ctx_r1.rendererId || null);
5504
+ i0.ɵɵadvance();
5505
+ i0.ɵɵrepeater(ctx_r1.output == null ? null : ctx_r1.output.children);
5506
+ } }
4817
5507
  /**
4818
5508
  * @description Component for rendering dynamic models
4819
5509
  * @summary This component is responsible for dynamically rendering models,
@@ -4921,29 +5611,103 @@ class ModelRendererComponent {
4921
5611
  }
4922
5612
  }
4923
5613
  }
4924
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModelRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4925
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ModelRendererComponent, isStandalone: true, selector: "ngx-decaf-model-renderer", inputs: { model: "model", globals: "globals", rendererId: "rendererId" }, outputs: { listenEvent: "listenEvent" }, viewQueries: [{ propertyName: "inner", first: true, predicate: ["inner"], descendants: true, read: TemplateRef, static: true }, { propertyName: "vcr", first: true, predicate: ["componentOuter"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: " <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "model", "parent"], outputs: ["listenEvent"] }] }); }
5614
+ static { this.ɵfac = function ModelRendererComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ModelRendererComponent)(); }; }
5615
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ModelRendererComponent, selectors: [["ngx-decaf-model-renderer"]], viewQuery: function ModelRendererComponent_Query(rf, ctx) { if (rf & 1) {
5616
+ i0.ɵɵviewQuery(_c0$4, 7, TemplateRef);
5617
+ i0.ɵɵviewQuery(_c1$3, 7, ViewContainerRef);
5618
+ } if (rf & 2) {
5619
+ let _t;
5620
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inner = _t.first);
5621
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.vcr = _t.first);
5622
+ } }, inputs: { model: "model", globals: "globals", rendererId: "rendererId" }, outputs: { listenEvent: "listenEvent" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 4, vars: 0, consts: [["componentOuter", ""], ["inner", ""], ["childComponents", ""], [3, "id"], [3, "parent"], [4, "ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletInputs", "ngComponentOutletContent"]], template: function ModelRendererComponent_Template(rf, ctx) { if (rf & 1) {
5623
+ i0.ɵɵtemplate(0, ModelRendererComponent_ng_template_0_Template, 0, 0, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(2, ModelRendererComponent_ng_template_2_Template, 3, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
5624
+ } }, dependencies: [ForAngularModule, i2.NgComponentOutlet, ComponentRendererComponent] }); }
4926
5625
  }
4927
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModelRendererComponent, decorators: [{
4928
- type: Component,
4929
- args: [{ standalone: true, imports: [ForAngularModule, NgComponentOutlet, ComponentRendererComponent], selector: 'ngx-decaf-model-renderer', template: " <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n" }]
4930
- }], propDecorators: { model: [{
4931
- type: Input,
4932
- args: [{ required: true }]
4933
- }], globals: [{
4934
- type: Input
4935
- }], inner: [{
4936
- type: ViewChild,
4937
- args: ['inner', { read: TemplateRef, static: true }]
4938
- }], rendererId: [{
4939
- type: Input
4940
- }], vcr: [{
4941
- type: ViewChild,
4942
- args: ['componentOuter', { static: true, read: ViewContainerRef }]
4943
- }], listenEvent: [{
4944
- type: Output
4945
- }] } });
5626
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ModelRendererComponent, [{
5627
+ type: Component,
5628
+ args: [{ standalone: true, imports: [ForAngularModule, NgComponentOutlet, ComponentRendererComponent], selector: 'ngx-decaf-model-renderer', template: " <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n" }]
5629
+ }], null, { model: [{
5630
+ type: Input,
5631
+ args: [{ required: true }]
5632
+ }], globals: [{
5633
+ type: Input
5634
+ }], inner: [{
5635
+ type: ViewChild,
5636
+ args: ['inner', { read: TemplateRef, static: true }]
5637
+ }], rendererId: [{
5638
+ type: Input
5639
+ }], vcr: [{
5640
+ type: ViewChild,
5641
+ args: ['componentOuter', { static: true, read: ViewContainerRef }]
5642
+ }], listenEvent: [{
5643
+ type: Output
5644
+ }] }); })();
5645
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ModelRendererComponent, { className: "ModelRendererComponent", filePath: "components/model-renderer/model-renderer.component.ts", lineNumber: 65 }); })();
4946
5646
 
5647
+ function _forTrack0($index, $item) { return this.trackItemFn($index, $item.col); }
5648
+ const _c0$3 = a0 => ({ props: a0 });
5649
+ function LayoutComponent_Conditional_0_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
5650
+ i0.ɵɵelementStart(0, "div", 1)(1, "ion-card", 3);
5651
+ i0.ɵɵtext(2);
5652
+ i0.ɵɵpipe(3, "translate");
5653
+ i0.ɵɵelementEnd()();
5654
+ } if (rf & 2) {
5655
+ const row_r1 = i0.ɵɵnextContext().$implicit;
5656
+ i0.ɵɵadvance(2);
5657
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, row_r1.title), " ");
5658
+ } }
5659
+ function LayoutComponent_Conditional_0_For_1_For_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
5660
+ const _r2 = i0.ɵɵgetCurrentView();
5661
+ i0.ɵɵelementStart(0, "ion-card")(1, "ion-card-content")(2, "ngx-decaf-model-renderer", 5);
5662
+ i0.ɵɵlistener("listenEvent", function LayoutComponent_Conditional_0_For_1_For_3_Conditional_2_Template_ngx_decaf_model_renderer_listenEvent_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleEvent($event)); });
5663
+ i0.ɵɵelementEnd()()();
5664
+ } if (rf & 2) {
5665
+ const child_r4 = i0.ɵɵnextContext().$implicit;
5666
+ const ctx_r2 = i0.ɵɵnextContext(3);
5667
+ i0.ɵɵclassMap("dcf-height-1-1 " + ctx_r2.className);
5668
+ i0.ɵɵadvance(2);
5669
+ i0.ɵɵproperty("model", child_r4.props.name);
5670
+ } }
5671
+ function LayoutComponent_Conditional_0_For_1_For_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
5672
+ const _r5 = i0.ɵɵgetCurrentView();
5673
+ i0.ɵɵelementStart(0, "ngx-decaf-component-renderer", 6);
5674
+ i0.ɵɵlistener("listenEvent", function LayoutComponent_Conditional_0_For_1_For_3_Conditional_3_Template_ngx_decaf_component_renderer_listenEvent_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleEvent($event)); });
5675
+ i0.ɵɵelementEnd();
5676
+ } if (rf & 2) {
5677
+ const child_r4 = i0.ɵɵnextContext().$implicit;
5678
+ i0.ɵɵproperty("tag", child_r4.tag)("globals", i0.ɵɵpureFunction1(2, _c0$3, child_r4.props));
5679
+ } }
5680
+ function LayoutComponent_Conditional_0_For_1_For_3_Template(rf, ctx) { if (rf & 1) {
5681
+ i0.ɵɵelementStart(0, "div")(1, "div");
5682
+ i0.ɵɵtemplate(2, LayoutComponent_Conditional_0_For_1_For_3_Conditional_2_Template, 3, 3, "ion-card", 2)(3, LayoutComponent_Conditional_0_For_1_For_3_Conditional_3_Template, 1, 4, "ngx-decaf-component-renderer", 4);
5683
+ i0.ɵɵelementEnd()();
5684
+ } if (rf & 2) {
5685
+ const child_r4 = ctx.$implicit;
5686
+ const ctx_r2 = i0.ɵɵnextContext(3);
5687
+ i0.ɵɵclassMap(child_r4.col === ctx_r2.cols.length ? "dcf-width-1-1" : "dcf-width-" + child_r4.col + "-" + ctx_r2.cols.length + "@" + ctx_r2.breakpoint);
5688
+ i0.ɵɵadvance();
5689
+ i0.ɵɵclassMap("dcf-grid-child " + child_r4.col);
5690
+ i0.ɵɵadvance();
5691
+ i0.ɵɵconditional(child_r4.tag === "ngx-decaf-crud-form" ? 2 : 3);
5692
+ } }
5693
+ function LayoutComponent_Conditional_0_For_1_Template(rf, ctx) { if (rf & 1) {
5694
+ i0.ɵɵelementStart(0, "div", 0);
5695
+ i0.ɵɵtemplate(1, LayoutComponent_Conditional_0_For_1_Conditional_1_Template, 4, 3, "div", 1);
5696
+ i0.ɵɵrepeaterCreate(2, LayoutComponent_Conditional_0_For_1_For_3_Template, 4, 5, "div", 2, _forTrack0, true);
5697
+ i0.ɵɵelementEnd();
5698
+ } if (rf & 2) {
5699
+ const row_r1 = ctx.$implicit;
5700
+ i0.ɵɵadvance();
5701
+ i0.ɵɵconditional(row_r1 ? 1 : -1);
5702
+ i0.ɵɵadvance();
5703
+ i0.ɵɵrepeater(row_r1.cols);
5704
+ } }
5705
+ function LayoutComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
5706
+ i0.ɵɵrepeaterCreate(0, LayoutComponent_Conditional_0_For_1_Template, 4, 1, "div", 0, i0.ɵɵcomponentInstance().trackItemFn, true);
5707
+ } if (rf & 2) {
5708
+ const ctx_r2 = i0.ɵɵnextContext();
5709
+ i0.ɵɵrepeater(ctx_r2.rows);
5710
+ } }
4947
5711
  /**
4948
5712
  * @description Layout component for creating responsive grid layouts in Angular applications.
4949
5713
  * @summary This component provides a flexible grid system that can be configured with dynamic
@@ -5097,22 +5861,210 @@ class LayoutComponent extends NgxBaseComponent {
5097
5861
  this.rows = this._rows;
5098
5862
  this.initialized = true;
5099
5863
  }
5100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LayoutComponent, isStandalone: true, selector: "ngx-decaf-layout", inputs: { cols: "cols", rows: "rows", breakpoint: "breakpoint", children: "children" }, usesInheritance: true, ngImport: i0, template: "\n@if(initialized) {\n @for (row of rows; track trackItemFn($index, row); let rowIndex = $index) {\n <div class=\"dcf-grid dcf-grid-collapse dcf-grid-match\">\n @if(row) {\n <div class=\"dcf-width-1-1 dcf-grid-title\">\n <ion-card class=\"dcf-grid-title\">\n {{row.title | translate}}\n </ion-card>\n </div>\n }\n @for (child of row.cols; track trackItemFn($index, child.col); let colIndex = $index) {\n <div [class]=\"(child.col === cols.length ? 'dcf-width-1-1' : 'dcf-width-'+child.col+'-'+cols.length+'@'+breakpoint)\">\n <div [class]=\"'dcf-grid-child '+child.col \">\n @if(child.tag === 'ngx-decaf-crud-form') {\n <ion-card [class]=\"'dcf-height-1-1 ' + className\">\n <ion-card-content>\n <ngx-decaf-model-renderer\n [model]=\"child.props.name\"\n (listenEvent)=\"handleEvent($event)\"\n />\n </ion-card-content>\n </ion-card>\n } @else {\n <ngx-decaf-component-renderer\n [tag]=\"child.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]=\"{props: child.props}\"\n />\n }\n </div>\n </div>\n }\n </div>\n }\n}\n", styles: [".dcf-grid>div:not(.dcf-grid-title) ::ng-deep ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small .dcf-grid-child{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child ion-card{margin-bottom:1.25rem}.dcf-grid-title{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: ModelRendererComponent, selector: "ngx-decaf-model-renderer", inputs: ["model", "globals", "rendererId"], outputs: ["listenEvent"] }, { kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "model", "parent"], outputs: ["listenEvent"] }] }); }
5864
+ static { this.ɵfac = function LayoutComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LayoutComponent)(); }; }
5865
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayoutComponent, selectors: [["ngx-decaf-layout"]], inputs: { cols: "cols", rows: "rows", breakpoint: "breakpoint", children: "children" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 1, vars: 1, consts: [[1, "dcf-grid", "dcf-grid-collapse", "dcf-grid-match"], [1, "dcf-width-1-1", "dcf-grid-title"], [3, "class"], [1, "dcf-grid-title"], [3, "tag", "globals"], [3, "listenEvent", "model"], [3, "listenEvent", "tag", "globals"]], template: function LayoutComponent_Template(rf, ctx) { if (rf & 1) {
5866
+ i0.ɵɵtemplate(0, LayoutComponent_Conditional_0_Template, 2, 0);
5867
+ } if (rf & 2) {
5868
+ i0.ɵɵconditional(ctx.initialized ? 0 : -1);
5869
+ } }, dependencies: [ForAngularModule, i3.TranslatePipe, ModelRendererComponent, ComponentRendererComponent], styles: [".dcf-grid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(.dcf-grid-title) ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small[_ngcontent-%COMP%] .dcf-grid-child[_ngcontent-%COMP%]{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse[_ngcontent-%COMP%] .dcf-grid-child[_ngcontent-%COMP%]{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse[_ngcontent-%COMP%] .dcf-grid-child[_ngcontent-%COMP%] ion-card[_ngcontent-%COMP%]{margin-bottom:1.25rem}.dcf-grid-title[_ngcontent-%COMP%]{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}"] }); }
5102
5870
  }
5103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutComponent, decorators: [{
5104
- type: Component,
5105
- args: [{ selector: 'ngx-decaf-layout', imports: [ForAngularModule, ModelRendererComponent, ComponentRendererComponent], standalone: true, template: "\n@if(initialized) {\n @for (row of rows; track trackItemFn($index, row); let rowIndex = $index) {\n <div class=\"dcf-grid dcf-grid-collapse dcf-grid-match\">\n @if(row) {\n <div class=\"dcf-width-1-1 dcf-grid-title\">\n <ion-card class=\"dcf-grid-title\">\n {{row.title | translate}}\n </ion-card>\n </div>\n }\n @for (child of row.cols; track trackItemFn($index, child.col); let colIndex = $index) {\n <div [class]=\"(child.col === cols.length ? 'dcf-width-1-1' : 'dcf-width-'+child.col+'-'+cols.length+'@'+breakpoint)\">\n <div [class]=\"'dcf-grid-child '+child.col \">\n @if(child.tag === 'ngx-decaf-crud-form') {\n <ion-card [class]=\"'dcf-height-1-1 ' + className\">\n <ion-card-content>\n <ngx-decaf-model-renderer\n [model]=\"child.props.name\"\n (listenEvent)=\"handleEvent($event)\"\n />\n </ion-card-content>\n </ion-card>\n } @else {\n <ngx-decaf-component-renderer\n [tag]=\"child.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]=\"{props: child.props}\"\n />\n }\n </div>\n </div>\n }\n </div>\n }\n}\n", styles: [".dcf-grid>div:not(.dcf-grid-title) ::ng-deep ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small .dcf-grid-child{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child ion-card{margin-bottom:1.25rem}.dcf-grid-title{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\n"] }]
5106
- }], ctorParameters: () => [], propDecorators: { cols: [{
5107
- type: Input
5108
- }], rows: [{
5109
- type: Input
5110
- }], breakpoint: [{
5111
- type: Input
5112
- }], children: [{
5113
- type: Input
5114
- }] } });
5871
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayoutComponent, [{
5872
+ type: Component,
5873
+ args: [{ selector: 'ngx-decaf-layout', imports: [ForAngularModule, ModelRendererComponent, ComponentRendererComponent], standalone: true, template: "\n@if(initialized) {\n @for (row of rows; track trackItemFn($index, row); let rowIndex = $index) {\n <div class=\"dcf-grid dcf-grid-collapse dcf-grid-match\">\n @if(row) {\n <div class=\"dcf-width-1-1 dcf-grid-title\">\n <ion-card class=\"dcf-grid-title\">\n {{row.title | translate}}\n </ion-card>\n </div>\n }\n @for (child of row.cols; track trackItemFn($index, child.col); let colIndex = $index) {\n <div [class]=\"(child.col === cols.length ? 'dcf-width-1-1' : 'dcf-width-'+child.col+'-'+cols.length+'@'+breakpoint)\">\n <div [class]=\"'dcf-grid-child '+child.col \">\n @if(child.tag === 'ngx-decaf-crud-form') {\n <ion-card [class]=\"'dcf-height-1-1 ' + className\">\n <ion-card-content>\n <ngx-decaf-model-renderer\n [model]=\"child.props.name\"\n (listenEvent)=\"handleEvent($event)\"\n />\n </ion-card-content>\n </ion-card>\n } @else {\n <ngx-decaf-component-renderer\n [tag]=\"child.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]=\"{props: child.props}\"\n />\n }\n </div>\n </div>\n }\n </div>\n }\n}\n", styles: [".dcf-grid>div:not(.dcf-grid-title) ::ng-deep ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small .dcf-grid-child{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child ion-card{margin-bottom:1.25rem}.dcf-grid-title{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\n"] }]
5874
+ }], () => [], { cols: [{
5875
+ type: Input
5876
+ }], rows: [{
5877
+ type: Input
5878
+ }], breakpoint: [{
5879
+ type: Input
5880
+ }], children: [{
5881
+ type: Input
5882
+ }] }); })();
5883
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LayoutComponent, { className: "LayoutComponent", filePath: "components/layout/layout.component.ts", lineNumber: 29 }); })();
5115
5884
 
5885
+ const _c0$2 = ["actionMenuComponent"];
5886
+ const _c1$2 = [[["", "slot", "end"]]];
5887
+ const _c2$1 = ["[slot='end']"];
5888
+ const _c3 = () => ["update", "delete"];
5889
+ function ListItemComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
5890
+ i0.ɵɵelementStart(0, "div", 3)(1, "ion-button", 15);
5891
+ i0.ɵɵelement(2, "ion-icon", 16);
5892
+ i0.ɵɵelementEnd()();
5893
+ } if (rf & 2) {
5894
+ const ctx_r2 = i0.ɵɵnextContext(2);
5895
+ i0.ɵɵproperty("slot", ctx_r2.iconSlot);
5896
+ } }
5897
+ function ListItemComponent_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
5898
+ i0.ɵɵelementStart(0, "div", 6)(1, "ion-button", 15);
5899
+ i0.ɵɵelement(2, "ion-icon", 16);
5900
+ i0.ɵɵelementEnd()();
5901
+ } }
5902
+ function ListItemComponent_Conditional_0_div_9_Template(rf, ctx) { if (rf & 1) {
5903
+ i0.ɵɵelement(0, "div", 17);
5904
+ } if (rf & 2) {
5905
+ const ctx_r2 = i0.ɵɵnextContext(2);
5906
+ i0.ɵɵproperty("innerHTML", ctx_r2.description, i0.ɵɵsanitizeHtml);
5907
+ } }
5908
+ function ListItemComponent_Conditional_0_Conditional_10_span_2_Template(rf, ctx) { if (rf & 1) {
5909
+ i0.ɵɵelement(0, "span", 20);
5910
+ } if (rf & 2) {
5911
+ const ctx_r2 = i0.ɵɵnextContext(3);
5912
+ i0.ɵɵproperty("innerHTML", ctx_r2.info, i0.ɵɵsanitizeHtml);
5913
+ } }
5914
+ function ListItemComponent_Conditional_0_Conditional_10_div_3_Template(rf, ctx) { if (rf & 1) {
5915
+ i0.ɵɵelement(0, "div", 21);
5916
+ } if (rf & 2) {
5917
+ const ctx_r2 = i0.ɵɵnextContext(3);
5918
+ i0.ɵɵproperty("innerHTML", ctx_r2.subinfo, i0.ɵɵsanitizeHtml);
5919
+ } }
5920
+ function ListItemComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
5921
+ i0.ɵɵelementStart(0, "div", 10)(1, "div");
5922
+ i0.ɵɵtemplate(2, ListItemComponent_Conditional_0_Conditional_10_span_2_Template, 1, 1, "span", 18)(3, ListItemComponent_Conditional_0_Conditional_10_div_3_Template, 1, 1, "div", 19);
5923
+ i0.ɵɵelementEnd()();
5924
+ } if (rf & 2) {
5925
+ const ctx_r2 = i0.ɵɵnextContext(2);
5926
+ i0.ɵɵadvance(2);
5927
+ i0.ɵɵproperty("ngIf", ctx_r2.info);
5928
+ i0.ɵɵadvance();
5929
+ i0.ɵɵproperty("ngIf", ctx_r2.subinfo);
5930
+ } }
5931
+ function ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
5932
+ i0.ɵɵelement(0, "ion-icon", 31);
5933
+ } }
5934
+ function ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
5935
+ i0.ɵɵelement(0, "ion-icon", 32);
5936
+ } }
5937
+ function ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
5938
+ const _r5 = i0.ɵɵgetCurrentView();
5939
+ i0.ɵɵelementStart(0, "ion-item", 29);
5940
+ i0.ɵɵlistener("click", function ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Conditional_0_Template_ion_item_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const operation_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵnextContext(3); const component_r2 = i0.ɵɵreference(1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleAction(operation_r6, $event, component_r2)); });
5941
+ i0.ɵɵelementStart(1, "ion-avatar", 30);
5942
+ i0.ɵɵtemplate(2, ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Conditional_0_Conditional_2_Template, 1, 0, "ion-icon", 31)(3, ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Conditional_0_Conditional_3_Template, 1, 0, "ion-icon", 32);
5943
+ i0.ɵɵelementEnd();
5944
+ i0.ɵɵelementStart(4, "ion-label", 33);
5945
+ i0.ɵɵtext(5);
5946
+ i0.ɵɵpipe(6, "translate");
5947
+ i0.ɵɵelementEnd()();
5948
+ } if (rf & 2) {
5949
+ const operation_r6 = i0.ɵɵnextContext().$implicit;
5950
+ i0.ɵɵproperty("button", true);
5951
+ i0.ɵɵadvance(2);
5952
+ i0.ɵɵconditional(operation_r6 === "update" ? 2 : 3);
5953
+ i0.ɵɵadvance(3);
5954
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 3, operation_r6));
5955
+ } }
5956
+ function ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Template(rf, ctx) { if (rf & 1) {
5957
+ i0.ɵɵtemplate(0, ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Conditional_0_Template, 7, 5, "ion-item", 28);
5958
+ } if (rf & 2) {
5959
+ const operation_r6 = ctx.$implicit;
5960
+ const ctx_r2 = i0.ɵɵnextContext(4);
5961
+ i0.ɵɵconditional(ctx_r2.operations.includes(operation_r6) ? 0 : -1);
5962
+ } }
5963
+ function ListItemComponent_Conditional_0_Conditional_12_ng_template_5_Template(rf, ctx) { if (rf & 1) {
5964
+ i0.ɵɵelementStart(0, "ion-content", 25)(1, "ion-list", 26)(2, "ion-list-header");
5965
+ i0.ɵɵelement(3, "h4", 27);
5966
+ i0.ɵɵpipe(4, "translate");
5967
+ i0.ɵɵelementEnd();
5968
+ i0.ɵɵrepeaterCreate(5, ListItemComponent_Conditional_0_Conditional_12_ng_template_5_For_6_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
5969
+ i0.ɵɵelementEnd()();
5970
+ } if (rf & 2) {
5971
+ i0.ɵɵadvance(3);
5972
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(4, 1, "actions"), i0.ɵɵsanitizeHtml);
5973
+ i0.ɵɵadvance(2);
5974
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(3, _c3));
5975
+ } }
5976
+ function ListItemComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
5977
+ const _r4 = i0.ɵɵgetCurrentView();
5978
+ i0.ɵɵelementStart(0, "div", 12)(1, "ion-button", 22);
5979
+ i0.ɵɵlistener("click", function ListItemComponent_Conditional_0_Conditional_12_Template_ion_button_click_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.presentActionsMenu($event)); });
5980
+ i0.ɵɵelement(2, "ion-icon", 23);
5981
+ i0.ɵɵelementEnd();
5982
+ i0.ɵɵelementStart(3, "ion-popover", 24, 1);
5983
+ i0.ɵɵlistener("didDismiss", function ListItemComponent_Conditional_0_Conditional_12_Template_ion_popover_didDismiss_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.actionMenuOpen = false); });
5984
+ i0.ɵɵtemplate(5, ListItemComponent_Conditional_0_Conditional_12_ng_template_5_Template, 7, 4, "ng-template");
5985
+ i0.ɵɵelementEnd()();
5986
+ } if (rf & 2) {
5987
+ const ctx_r2 = i0.ɵɵnextContext(2);
5988
+ i0.ɵɵadvance(3);
5989
+ i0.ɵɵproperty("isOpen", ctx_r2.actionMenuOpen);
5990
+ } }
5991
+ function ListItemComponent_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
5992
+ i0.ɵɵelementStart(0, "div", 13);
5993
+ i0.ɵɵprojection(1);
5994
+ i0.ɵɵelementEnd();
5995
+ } }
5996
+ function ListItemComponent_Conditional_0_Conditional_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
5997
+ const _r8 = i0.ɵɵgetCurrentView();
5998
+ i0.ɵɵelementStart(0, "ion-item-option", 37);
5999
+ i0.ɵɵlistener("click", function ListItemComponent_Conditional_0_Conditional_14_Conditional_1_Template_ion_item_option_click_0_listener($event) { i0.ɵɵrestoreView(_r8); i0.ɵɵnextContext(2); const component_r2 = i0.ɵɵreference(1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleAction("update", $event, component_r2)); });
6000
+ i0.ɵɵelement(1, "ion-icon", 38);
6001
+ i0.ɵɵelementEnd();
6002
+ } if (rf & 2) {
6003
+ const ctx_r2 = i0.ɵɵnextContext(3);
6004
+ i0.ɵɵproperty("expandable", ctx_r2.operations.length === 1);
6005
+ } }
6006
+ function ListItemComponent_Conditional_0_Conditional_14_Conditional_2_Template(rf, ctx) { if (rf & 1) {
6007
+ const _r9 = i0.ɵɵgetCurrentView();
6008
+ i0.ɵɵelementStart(0, "ion-item-option", 39);
6009
+ i0.ɵɵlistener("click", function ListItemComponent_Conditional_0_Conditional_14_Conditional_2_Template_ion_item_option_click_0_listener($event) { i0.ɵɵrestoreView(_r9); i0.ɵɵnextContext(2); const component_r2 = i0.ɵɵreference(1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleAction("delete", $event, component_r2)); });
6010
+ i0.ɵɵelement(1, "ion-icon", 40);
6011
+ i0.ɵɵelementEnd();
6012
+ } if (rf & 2) {
6013
+ const ctx_r2 = i0.ɵɵnextContext(3);
6014
+ i0.ɵɵproperty("expandable", ctx_r2.operations.length === 1);
6015
+ } }
6016
+ function ListItemComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
6017
+ const _r7 = i0.ɵɵgetCurrentView();
6018
+ i0.ɵɵelementStart(0, "ion-item-options", 34);
6019
+ i0.ɵɵlistener("ionSwipe", function ListItemComponent_Conditional_0_Conditional_14_Template_ion_item_options_ionSwipe_0_listener($event) { i0.ɵɵrestoreView(_r7); i0.ɵɵnextContext(); const component_r2 = i0.ɵɵreference(1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.operations.length === 1 ? ctx_r2.handleAction(ctx_r2.operations[0], $event, component_r2) : ""); });
6020
+ i0.ɵɵtemplate(1, ListItemComponent_Conditional_0_Conditional_14_Conditional_1_Template, 2, 1, "ion-item-option", 35)(2, ListItemComponent_Conditional_0_Conditional_14_Conditional_2_Template, 2, 1, "ion-item-option", 36);
6021
+ i0.ɵɵelementEnd();
6022
+ } if (rf & 2) {
6023
+ const ctx_r2 = i0.ɵɵnextContext(2);
6024
+ i0.ɵɵadvance();
6025
+ i0.ɵɵconditional((ctx_r2.operations == null ? null : ctx_r2.operations.includes("update")) ? 1 : -1);
6026
+ i0.ɵɵadvance();
6027
+ i0.ɵɵconditional((ctx_r2.operations == null ? null : ctx_r2.operations.includes("delete")) ? 2 : -1);
6028
+ } }
6029
+ function ListItemComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6030
+ const _r1 = i0.ɵɵgetCurrentView();
6031
+ i0.ɵɵelementStart(0, "ion-item-sliding", null, 0)(2, "ion-item", 2);
6032
+ i0.ɵɵlistener("click", function ListItemComponent_Conditional_0_Template_ion_item_click_2_listener($event) { i0.ɵɵrestoreView(_r1); const component_r2 = i0.ɵɵreference(1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((ctx_r2.operations == null ? null : ctx_r2.operations.includes("read")) ? ctx_r2.handleAction("read", $event, component_r2) : ""); });
6033
+ i0.ɵɵtemplate(3, ListItemComponent_Conditional_0_Conditional_3_Template, 3, 1, "div", 3);
6034
+ i0.ɵɵelementStart(4, "div", 4)(5, "div", 5);
6035
+ i0.ɵɵtemplate(6, ListItemComponent_Conditional_0_Conditional_6_Template, 3, 0, "div", 6);
6036
+ i0.ɵɵelementStart(7, "div", 7);
6037
+ i0.ɵɵelement(8, "ion-label", 8);
6038
+ i0.ɵɵtemplate(9, ListItemComponent_Conditional_0_div_9_Template, 1, 1, "div", 9);
6039
+ i0.ɵɵelementEnd();
6040
+ i0.ɵɵtemplate(10, ListItemComponent_Conditional_0_Conditional_10_Template, 4, 2, "div", 10);
6041
+ i0.ɵɵelementStart(11, "div", 11);
6042
+ i0.ɵɵtemplate(12, ListItemComponent_Conditional_0_Conditional_12_Template, 6, 1, "div", 12)(13, ListItemComponent_Conditional_0_Conditional_13_Template, 2, 0, "div", 13);
6043
+ i0.ɵɵelementEnd()()()();
6044
+ i0.ɵɵtemplate(14, ListItemComponent_Conditional_0_Conditional_14_Template, 3, 2, "ion-item-options", 14);
6045
+ i0.ɵɵelementEnd();
6046
+ } if (rf & 2) {
6047
+ const ctx_r2 = i0.ɵɵnextContext();
6048
+ i0.ɵɵadvance(2);
6049
+ i0.ɵɵclassMap(ctx_r2.className);
6050
+ i0.ɵɵproperty("lines", ctx_r2.lines)("button", ctx_r2.button);
6051
+ i0.ɵɵadvance();
6052
+ i0.ɵɵconditional(ctx_r2.icon && ctx_r2.lines !== "inset" ? 3 : -1);
6053
+ i0.ɵɵadvance(3);
6054
+ i0.ɵɵconditional(ctx_r2.icon && ctx_r2.lines === "inset" ? 6 : -1);
6055
+ i0.ɵɵadvance(2);
6056
+ i0.ɵɵproperty("innerHTML", ctx_r2.uid + " - " + ctx_r2.title, i0.ɵɵsanitizeHtml);
6057
+ i0.ɵɵadvance();
6058
+ i0.ɵɵproperty("ngIf", ctx_r2.description);
6059
+ i0.ɵɵadvance();
6060
+ i0.ɵɵconditional(ctx_r2.info || ctx_r2.subinfo ? 10 : -1);
6061
+ i0.ɵɵadvance(2);
6062
+ i0.ɵɵconditional((ctx_r2.operations.includes("delete") || ctx_r2.operations.includes("update")) && ctx_r2.uid ? 12 : -1);
6063
+ i0.ɵɵadvance();
6064
+ i0.ɵɵconditional(ctx_r2.windowWidth > 768 ? 13 : -1);
6065
+ i0.ɵɵadvance();
6066
+ i0.ɵɵconditional(ctx_r2.showSlideItems && ctx_r2.uid ? 14 : -1);
6067
+ } }
5116
6068
  /**
5117
6069
  * @description A component for displaying a list item with various customization options.
5118
6070
  * @summary The ListItemComponent is an Angular component that extends NgxBaseComponent. It provides a flexible and customizable list item interface with support for icons, buttons, and various text elements. The component also handles actions and navigation based on user interactions.
@@ -5453,57 +6405,95 @@ let ListItemComponent = class ListItemComponent extends NgxBaseComponent {
5453
6405
  this.actionMenuComponent.event = event;
5454
6406
  this.actionMenuOpen = true;
5455
6407
  }
5456
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5457
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ListItemComponent, isStandalone: true, selector: "ngx-decaf-list-item", inputs: { lines: "lines", item: "item", icon: "icon", iconSlot: "iconSlot", button: "button", title: "title", description: "description", info: "info", subinfo: "subinfo" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "window:resize": "enableSlideItems($event)" } }, viewQueries: [{ propertyName: "actionMenuComponent", first: true, predicate: ["actionMenuComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-button shape=\"round\" fill=\"clear\">\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" color=\"dark\" size=\"default\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-button shape=\"round\" fill=\"clear\">\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" color=\"dark\" size=\"default\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n <div *ngIf =\"description\" class=\"dcf-description\" [innerHTML]=\"description\"></div>\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n <span *ngIf=\"info\" [innerHTML]=\"info\"></span>\n <div *ngIf=\"subinfo\" class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 768) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--border-color: var(--ion-color-gray-2)}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important;--border-color: var(--ion-color-gray-2)}ion-item:hover .dcf-info{background:transparent!important}ion-item .dcf-info{min-width:10vw;color:var(--ion-color-gray-6)}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{color:var(--ion-color-gray-8);font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-color-gray-6);font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem;background:#fff}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: 768px){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--ion-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: 768px){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: 578px){ion-item .dcf-icon{align-items:flex-start!important}}ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-3);--padding-start: 1rem;--padding-end: .85rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;--background: var(--ion-color-gray-1) !important}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{transform:scale(.9);background:var(--ion-color-gray-1);display:flex;justify-content:center;align-items:center;text-align:center;box-sizing:border-box!important}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--ion-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--ion-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--ion-color-danger-rgb),.15)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--ion-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--ion-color-primary-rgb),.25)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--ion-color-gray-7)!important}ion-item-sliding[class*=active-slide]{border-color:var(--ion-color-gray-3)}ion-item-sliding ion-item-option{color:var(--ion-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--ion-color-dark-rgb),.15)!important;background:var(--ion-color-gray-3)}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }] }); }
6408
+ static { this.ɵfac = function ListItemComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ListItemComponent)(); }; }
6409
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListItemComponent, selectors: [["ngx-decaf-list-item"]], viewQuery: function ListItemComponent_Query(rf, ctx) { if (rf & 1) {
6410
+ i0.ɵɵviewQuery(_c0$2, 5);
6411
+ } if (rf & 2) {
6412
+ let _t;
6413
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionMenuComponent = _t.first);
6414
+ } }, hostBindings: function ListItemComponent_HostBindings(rf, ctx) { if (rf & 1) {
6415
+ i0.ɵɵlistener("resize", function ListItemComponent_resize_HostBindingHandler($event) { return ctx.enableSlideItems($event); }, false, i0.ɵɵresolveWindow);
6416
+ } }, inputs: { lines: "lines", item: "item", icon: "icon", iconSlot: "iconSlot", button: "button", title: "title", description: "description", info: "info", subinfo: "subinfo" }, outputs: { clickEvent: "clickEvent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c2$1, decls: 1, vars: 1, consts: [["component", ""], ["actionMenuComponent", ""], [3, "click", "lines", "button"], [1, "dcf-icon", 3, "slot"], [1, "dcf-width-expand"], ["dcf-grid", "", 1, "dcf-flex", "dcf-flex-middle", "dcf-grid-collapse"], [1, "dcf-icon", "dcf-grid-icon"], [1, "dcf-width-expand@s", "dcf-width-1-1", "dcf-label"], [1, "dcf-item-title", 3, "innerHTML"], ["class", "dcf-description", 3, "innerHTML", 4, "ngIf"], [1, "dcf-width-auto@s", "dcf-width-expand", "dcf-info", "dcf-flex", "dcf-flex-right@s"], [1, "dcf-width-auto", "dcf-flex", "dcf-flex-middle", "dcf-flex-right"], ["id", "dcf-actions", 1, "dcf-visible@m"], ["id", "end"], ["side", "end"], ["shape", "round", "fill", "clear"], ["aria-hidden", "true", "name", "reader-outline", "color", "dark", "size", "default"], [1, "dcf-description", 3, "innerHTML"], [3, "innerHTML", 4, "ngIf"], ["class", "dcf-subinfo dcf-text-truncate", 3, "innerHTML", 4, "ngIf"], [3, "innerHTML"], [1, "dcf-subinfo", "dcf-text-truncate", 3, "innerHTML"], ["shape", "round", "fill", "clear", "color", "primary", 1, "dcf-hidden@m", 3, "click"], ["slot", "icon-only", "aria-hidden", "true", "name", "ellipsis-vertical-outline"], ["side", "bottom", "alignment", "left", 3, "didDismiss", "isOpen"], [1, "ion-padding"], ["lines", "none"], [1, "dcf-text-capitalize", 3, "innerHTML"], [3, "button"], [3, "click", "button"], ["aria-hidden", "true", "slot", "start", 1, "dcf-flex", "dcf-flex-middle"], ["color", "primary", "aria-hidden", "true", "name", "create-outline"], ["color", "danger", "aria-hidden", "true", "name", "trash"], [1, "dcf-text-capitalize"], ["side", "end", 3, "ionSwipe"], [1, "update", 3, "expandable"], [1, "delete", 3, "expandable"], [1, "update", 3, "click", "expandable"], ["aria-hidden", "true", "slot", "icon-only", "name", "create-outline"], [1, "delete", 3, "click", "expandable"], ["aria-hidden", "true", "slot", "icon-only", "name", "trash"]], template: function ListItemComponent_Template(rf, ctx) { if (rf & 1) {
6417
+ i0.ɵɵprojectionDef(_c1$2);
6418
+ i0.ɵɵtemplate(0, ListItemComponent_Conditional_0_Template, 15, 12, "ion-item-sliding");
6419
+ } if (rf & 2) {
6420
+ i0.ɵɵconditional(ctx.title || ctx.description ? 0 : -1);
6421
+ } }, dependencies: [ForAngularModule, i1.IonButton, i1.IonContent, i2.NgIf, i3.TranslatePipe, IonList,
6422
+ IonListHeader,
6423
+ IonItem,
6424
+ IonItemSliding,
6425
+ IonItemOptions,
6426
+ IonItemOption,
6427
+ IonIcon,
6428
+ IonLabel,
6429
+ IonPopover], styles: ["ion-item[_ngcontent-%COMP%]{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--border-color: var(--ion-color-gray-2)}ion-item.item-lines-inset[_ngcontent-%COMP%]{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important;--border-color: var(--ion-color-gray-2)}ion-item[_ngcontent-%COMP%]:hover .dcf-info[_ngcontent-%COMP%]{background:transparent!important}ion-item[_ngcontent-%COMP%] .dcf-info[_ngcontent-%COMP%]{min-width:10vw;color:var(--ion-color-gray-6)}ion-item[_ngcontent-%COMP%] .dcf-grid[_ngcontent-%COMP%]{padding:0!important;margin:0!important;min-width:100%!important}ion-item[_ngcontent-%COMP%] .dcf-item-title[_ngcontent-%COMP%]{color:var(--ion-color-gray-8);font-style:normal;font-weight:700}ion-item[_ngcontent-%COMP%] .dcf-description[_ngcontent-%COMP%]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-color-gray-6);font-style:normal;font-weight:400;font-size:.925rem}ion-item[_ngcontent-%COMP%]::part(native){min-width:100%}ion-item[_ngcontent-%COMP%] [slot=start][_ngcontent-%COMP%]{margin-right:.5rem!important}ion-item[_ngcontent-%COMP%] [slot=end][_ngcontent-%COMP%]{margin-left:.5rem!important}ion-item[_ngcontent-%COMP%] .dcf-info[_ngcontent-%COMP%]{font-size:.9rem;background:#fff}ion-item[_ngcontent-%COMP%] .dcf-info[_ngcontent-%COMP%] .dcf-subinfo.dcf-line[_ngcontent-%COMP%]{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item[_ngcontent-%COMP%] .dcf-info[_ngcontent-%COMP%] .dcf-subinfo.dcf-line[_ngcontent-%COMP%]{display:block;margin-left:0}}ion-item[_ngcontent-%COMP%] #dcf-actions[_ngcontent-%COMP%]{padding:5px}@media (max-width: 768px){ion-item[_ngcontent-%COMP%] #dcf-actions[_ngcontent-%COMP%]{display:none;pointer-events:none!important;cursor:text!important}ion-item[_ngcontent-%COMP%] #dcf-actions[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{display:none;pointer-events:none!important;cursor:text!important}}ion-item[_ngcontent-%COMP%] #dcf-actions[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%]{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--ion-color-gray-2) !important}ion-item[_ngcontent-%COMP%] #dcf-actions[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{position:relative;left:-1px}@media (max-width: 768px){ion-item[_ngcontent-%COMP%] #dcf-end[_ngcontent-%COMP%], ion-item[_ngcontent-%COMP%] [slot=end][_ngcontent-%COMP%]{display:none!important}}ion-item[_ngcontent-%COMP%] #dcf-end[_ngcontent-%COMP%]{padding-top:5px;display:flex;align-items:flex-end}ion-item[_ngcontent-%COMP%] .dcf-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item[_ngcontent-%COMP%] .dcf-icon.dcf-grid-icon[_ngcontent-%COMP%]{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: 578px){ion-item[_ngcontent-%COMP%] .dcf-icon[_ngcontent-%COMP%]{align-items:flex-start!important}}ion-item[_ngcontent-%COMP%] .dcf-icon[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%]{color:var(--dcf-color-gray-3);--padding-start: 1rem;--padding-end: .85rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;--background: var(--ion-color-gray-1) !important}ion-item[_ngcontent-%COMP%] .dcf-icon[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{font-size:20px}ion-item[_ngcontent-%COMP%] .dcf-icon[_ngcontent-%COMP%] ion-avatar[_ngcontent-%COMP%]{transform:scale(.9);background:var(--ion-color-gray-1);display:flex;justify-content:center;align-items:center;text-align:center;box-sizing:border-box!important}ion-item[_ngcontent-%COMP%] .dcf-icon[_ngcontent-%COMP%] ion-avatar[_ngcontent-%COMP%] .dcf-icon-large[_ngcontent-%COMP%]{transform:translateY(5px)}ion-item-sliding[_ngcontent-%COMP%]{box-sizing:border-box}ion-item-sliding[_ngcontent-%COMP%] ion-item-option[_ngcontent-%COMP%]:not(.dcf-delete), ion-item-sliding[_ngcontent-%COMP%] ion-item-option[_ngcontent-%COMP%]:not(.dcf-update){background:rgba(var(--ion-color-dark-rgb),.25)!important}ion-item-sliding[_ngcontent-%COMP%] ion-item-option[_ngcontent-%COMP%]:not(.dcf-delete) .dcf-ti[_ngcontent-%COMP%], ion-item-sliding[_ngcontent-%COMP%] ion-item-option[_ngcontent-%COMP%]:not(.dcf-delete) ion-icon[_ngcontent-%COMP%], ion-item-sliding[_ngcontent-%COMP%] ion-item-option[_ngcontent-%COMP%]:not(.dcf-update) .dcf-ti[_ngcontent-%COMP%], ion-item-sliding[_ngcontent-%COMP%] ion-item-option[_ngcontent-%COMP%]:not(.dcf-update) ion-icon[_ngcontent-%COMP%]{color:var(--ion-color-gray-7)!important}ion-item-sliding[_ngcontent-%COMP%] ion-item-option.dcf-delete[_ngcontent-%COMP%]{background:rgba(var(--ion-color-danger-rgb),.15)!important}ion-item-sliding[_ngcontent-%COMP%] ion-item-option.dcf-delete[_ngcontent-%COMP%] .dcf-ti[_ngcontent-%COMP%], ion-item-sliding[_ngcontent-%COMP%] ion-item-option.dcf-delete[_ngcontent-%COMP%] *[_ngcontent-%COMP%], ion-item-sliding[_ngcontent-%COMP%] ion-item-option.dcf-delete[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{color:var(--ion-color-danger)!important}ion-item-sliding[_ngcontent-%COMP%] ion-item-option.dcf-update[_ngcontent-%COMP%]{background:rgba(var(--ion-color-primary-rgb),.25)!important}ion-item-sliding[_ngcontent-%COMP%] ion-item-option.dcf-update[_ngcontent-%COMP%] .dcf-ti[_ngcontent-%COMP%], ion-item-sliding[_ngcontent-%COMP%] ion-item-option.dcf-update[_ngcontent-%COMP%] ion-icon[_ngcontent-%COMP%]{color:var(--ion-color-gray-7)!important}ion-item-sliding[class*=active-slide][_ngcontent-%COMP%]{border-color:var(--ion-color-gray-3)}ion-item-sliding[_ngcontent-%COMP%] ion-item-option[_ngcontent-%COMP%]{color:var(--ion-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--ion-color-dark-rgb),.15)!important;background:var(--ion-color-gray-3)}"] }); }
5458
6430
  };
5459
6431
  ListItemComponent = __decorate([
5460
6432
  Dynamic(),
5461
6433
  __metadata("design:paramtypes", [])
5462
6434
  ], ListItemComponent);
5463
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListItemComponent, decorators: [{
5464
- type: Component,
5465
- args: [{ selector: 'ngx-decaf-list-item', standalone: true, imports: [
5466
- ForAngularModule,
5467
- IonList,
5468
- IonListHeader,
5469
- IonItem,
5470
- IonItemSliding,
5471
- IonItemOptions,
5472
- IonItemOption,
5473
- IonIcon,
5474
- IonLabel,
5475
- IonButton,
5476
- IonContent,
5477
- IonPopover
5478
- ], template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-button shape=\"round\" fill=\"clear\">\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" color=\"dark\" size=\"default\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-button shape=\"round\" fill=\"clear\">\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" color=\"dark\" size=\"default\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n <div *ngIf =\"description\" class=\"dcf-description\" [innerHTML]=\"description\"></div>\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n <span *ngIf=\"info\" [innerHTML]=\"info\"></span>\n <div *ngIf=\"subinfo\" class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 768) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--border-color: var(--ion-color-gray-2)}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important;--border-color: var(--ion-color-gray-2)}ion-item:hover .dcf-info{background:transparent!important}ion-item .dcf-info{min-width:10vw;color:var(--ion-color-gray-6)}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{color:var(--ion-color-gray-8);font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-color-gray-6);font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem;background:#fff}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: 768px){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--ion-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: 768px){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: 578px){ion-item .dcf-icon{align-items:flex-start!important}}ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-3);--padding-start: 1rem;--padding-end: .85rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;--background: var(--ion-color-gray-1) !important}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{transform:scale(.9);background:var(--ion-color-gray-1);display:flex;justify-content:center;align-items:center;text-align:center;box-sizing:border-box!important}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--ion-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--ion-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--ion-color-danger-rgb),.15)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--ion-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--ion-color-primary-rgb),.25)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--ion-color-gray-7)!important}ion-item-sliding[class*=active-slide]{border-color:var(--ion-color-gray-3)}ion-item-sliding ion-item-option{color:var(--ion-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--ion-color-dark-rgb),.15)!important;background:var(--ion-color-gray-3)}\n"] }]
5479
- }], ctorParameters: () => [], propDecorators: { actionMenuComponent: [{
5480
- type: ViewChild,
5481
- args: ['actionMenuComponent']
5482
- }], lines: [{
5483
- type: Input
5484
- }], item: [{
5485
- type: Input
5486
- }], icon: [{
5487
- type: Input
5488
- }], iconSlot: [{
5489
- type: Input
5490
- }], button: [{
5491
- type: Input
5492
- }], title: [{
5493
- type: Input
5494
- }], description: [{
5495
- type: Input
5496
- }], info: [{
5497
- type: Input
5498
- }], subinfo: [{
5499
- type: Input
5500
- }], clickEvent: [{
5501
- type: Output
5502
- }], enableSlideItems: [{
5503
- type: HostListener,
5504
- args: ['window:resize', ['$event']]
5505
- }] } });
6435
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListItemComponent, [{
6436
+ type: Component,
6437
+ args: [{ selector: 'ngx-decaf-list-item', standalone: true, imports: [
6438
+ ForAngularModule,
6439
+ IonList,
6440
+ IonListHeader,
6441
+ IonItem,
6442
+ IonItemSliding,
6443
+ IonItemOptions,
6444
+ IonItemOption,
6445
+ IonIcon,
6446
+ IonLabel,
6447
+ IonButton,
6448
+ IonContent,
6449
+ IonPopover
6450
+ ], template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-button shape=\"round\" fill=\"clear\">\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" color=\"dark\" size=\"default\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-button shape=\"round\" fill=\"clear\">\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" color=\"dark\" size=\"default\"></ion-icon>\n </ion-button>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n <div *ngIf =\"description\" class=\"dcf-description\" [innerHTML]=\"description\"></div>\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n <span *ngIf=\"info\" [innerHTML]=\"info\"></span>\n <div *ngIf=\"subinfo\" class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 768) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--border-color: var(--ion-color-gray-2)}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important;--border-color: var(--ion-color-gray-2)}ion-item:hover .dcf-info{background:transparent!important}ion-item .dcf-info{min-width:10vw;color:var(--ion-color-gray-6)}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{color:var(--ion-color-gray-8);font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-color-gray-6);font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem;background:#fff}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: 768px){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--ion-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: 768px){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: 578px){ion-item .dcf-icon{align-items:flex-start!important}}ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-3);--padding-start: 1rem;--padding-end: .85rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;--background: var(--ion-color-gray-1) !important}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{transform:scale(.9);background:var(--ion-color-gray-1);display:flex;justify-content:center;align-items:center;text-align:center;box-sizing:border-box!important}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--ion-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--ion-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--ion-color-danger-rgb),.15)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--ion-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--ion-color-primary-rgb),.25)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--ion-color-gray-7)!important}ion-item-sliding[class*=active-slide]{border-color:var(--ion-color-gray-3)}ion-item-sliding ion-item-option{color:var(--ion-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--ion-color-dark-rgb),.15)!important;background:var(--ion-color-gray-3)}\n"] }]
6451
+ }], () => [], { actionMenuComponent: [{
6452
+ type: ViewChild,
6453
+ args: ['actionMenuComponent']
6454
+ }], lines: [{
6455
+ type: Input
6456
+ }], item: [{
6457
+ type: Input
6458
+ }], icon: [{
6459
+ type: Input
6460
+ }], iconSlot: [{
6461
+ type: Input
6462
+ }], button: [{
6463
+ type: Input
6464
+ }], title: [{
6465
+ type: Input
6466
+ }], description: [{
6467
+ type: Input
6468
+ }], info: [{
6469
+ type: Input
6470
+ }], subinfo: [{
6471
+ type: Input
6472
+ }], clickEvent: [{
6473
+ type: Output
6474
+ }], enableSlideItems: [{
6475
+ type: HostListener,
6476
+ args: ['window:resize', ['$event']]
6477
+ }] }); })();
6478
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListItemComponent, { className: "ListItemComponent", filePath: "components/list-item/list-item.component.ts", lineNumber: 87 }); })();
5506
6479
 
6480
+ const _c0$1 = (a0, a1) => ({ value0: a0, value1: a1 });
6481
+ const _c1$1 = a0 => ({ "dcf-disabled": a0 });
6482
+ const _c2 = (a0, a1) => ({ "dcf-active": a0, "dcf-disabled": a1 });
6483
+ function PaginationComponent_For_9_Template(rf, ctx) { if (rf & 1) {
6484
+ const _r2 = i0.ɵɵgetCurrentView();
6485
+ i0.ɵɵelementStart(0, "div", 8);
6486
+ i0.ɵɵlistener("click", function PaginationComponent_For_9_Template_div_click_0_listener() { const page_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.navigate(page_r3["index"])); })("keydown.enter", function PaginationComponent_For_9_Template_div_keydown_enter_0_listener() { const page_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.navigate(page_r3["index"])); });
6487
+ i0.ɵɵelementStart(1, "span", 10);
6488
+ i0.ɵɵtext(2);
6489
+ i0.ɵɵelementEnd()();
6490
+ } if (rf & 2) {
6491
+ const page_r3 = ctx.$implicit;
6492
+ const ctx_r3 = i0.ɵɵnextContext();
6493
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c2, ctx_r3.current === page_r3["index"], page_r3["index"] === ctx_r3.ndivl));
6494
+ i0.ɵɵadvance(2);
6495
+ i0.ɵɵtextInterpolate(page_r3["text"]);
6496
+ } }
5507
6497
  /**
5508
6498
  * @description A pagination component for navigating through multiple pages of content.
5509
6499
  * @summary This component provides a user interface for paginated content navigation,
@@ -5799,23 +6789,47 @@ class PaginationComponent extends NgxBaseComponent {
5799
6789
  if (page !== null && this.current !== page)
5800
6790
  this.handleClick(page > this.current ? 'next' : 'previous', page);
5801
6791
  }
5802
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5803
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PaginationComponent, isStandalone: true, selector: "ngx-decaf-pagination", inputs: { totalPages: "totalPages", current: "current" }, outputs: { clickEvent: "clickEvent" }, usesInheritance: true, ngImport: i0, template: " <div id=\"dcf-paginator-container\" class=\"dcf-flex dcf-flex-center\">\n <div class=\"dcf-width-1-1\">\n <div class=\"dcf-pagination-resume\" [innerHTML]=\"locale + '.resume' | translate: {value0: current, value1: last}\"></div>\n <div #paginationComponent class=\"dcf-pagination aeon-pagination dcf-flex-center\">\n <div\n aria-label=\"previous\"\n tabindex=\"0\"\n (click)=\"previous()\"\n (keydown.enter)=\"previous()\" [ngClass]=\"{'dcf-disabled': current === 1}\">\n <ion-icon name=\"chevron-back-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n @for(page of pages; track page) {\n <div tabindex=\"0\" (click)=\"navigate(page['index'])\"\n (keydown.enter)=\"navigate(page['index'])\"\n [ngClass]=\"{'dcf-active': current === page['index'], 'dcf-disabled': page['index'] === ndivl}\">\n <span class=\"page-item\">{{ page['text'] }}</span>\n </div>\n }\n <div\n tabindex=\"0\" (click)=\"next()\"\n (keydown.enter)=\"next()\"\n [ngClass]=\"{'dcf-disabled': current === last}\">\n <ion-icon name=\"chevron-forward-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#dcf-paginator-container{margin-bottom:1rem}.dcf-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.dcf-pagination .page-item{display:flex;justify-content:center;align-items:top;color:var(--ion-color-gray-7);font-weight:600;width:36px;line-height:34px;padding:0!important;border-radius:50%;box-sizing:border-box}.dcf-pagination>*{flex:none;padding-left:0;position:relative;margin:0px .15rem}.dcf-pagination>*:not(.disabled){cursor:pointer}.dcf-pagination>*:hover .page-item{color:var(--ion-color-primary)}.dcf-pagination>* .page-item{color:var(--ion-color-gray-7);font-weight:600}.dcf-pagination>*.dcf-active .page-item{background:rgba(var(--ion-color-primary-rgb),.15)}.dcf-pagination>*>*{display:flex;align-items:center;column-gap:.25em;padding:5px 10px;color:var(--ion-color-gray-8);transition:color .1s ease-in-out}.dcf-pagination>*>:hover{color:var(--ion-color-gray-6);text-decoration:none}.dcf-pagination .dcf-disabled>*{opacity:.5;color:var(--ion-color-gray-6)}.dcf-pagination-resume{color:var(--ion-color-gray-8);margin:1rem 0px;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
6792
+ static { this.ɵfac = function PaginationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PaginationComponent)(); }; }
6793
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PaginationComponent, selectors: [["ngx-decaf-pagination"]], inputs: { totalPages: "totalPages", current: "current" }, outputs: { clickEvent: "clickEvent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 12, vars: 13, consts: [["paginationComponent", ""], ["id", "dcf-paginator-container", 1, "dcf-flex", "dcf-flex-center"], [1, "dcf-width-1-1"], [1, "dcf-pagination-resume", 3, "innerHTML"], [1, "dcf-pagination", "aeon-pagination", "dcf-flex-center"], ["aria-label", "previous", "tabindex", "0", 3, "click", "keydown.enter", "ngClass"], ["name", "chevron-back-outline", "aria-hidden", "true"], ["tabindex", "0", 3, "ngClass"], ["tabindex", "0", 3, "click", "keydown.enter", "ngClass"], ["name", "chevron-forward-outline", "aria-hidden", "true"], [1, "page-item"]], template: function PaginationComponent_Template(rf, ctx) { if (rf & 1) {
6794
+ const _r1 = i0.ɵɵgetCurrentView();
6795
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
6796
+ i0.ɵɵelement(2, "div", 3);
6797
+ i0.ɵɵpipe(3, "translate");
6798
+ i0.ɵɵelementStart(4, "div", 4, 0)(6, "div", 5);
6799
+ i0.ɵɵlistener("click", function PaginationComponent_Template_div_click_6_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.previous()); })("keydown.enter", function PaginationComponent_Template_div_keydown_enter_6_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.previous()); });
6800
+ i0.ɵɵelement(7, "ion-icon", 6);
6801
+ i0.ɵɵelementEnd();
6802
+ i0.ɵɵrepeaterCreate(8, PaginationComponent_For_9_Template, 3, 5, "div", 7, i0.ɵɵrepeaterTrackByIdentity);
6803
+ i0.ɵɵelementStart(10, "div", 8);
6804
+ i0.ɵɵlistener("click", function PaginationComponent_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.next()); })("keydown.enter", function PaginationComponent_Template_div_keydown_enter_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.next()); });
6805
+ i0.ɵɵelement(11, "ion-icon", 9);
6806
+ i0.ɵɵelementEnd()()()();
6807
+ } if (rf & 2) {
6808
+ i0.ɵɵadvance(2);
6809
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(3, 3, ctx.locale + ".resume", i0.ɵɵpureFunction2(6, _c0$1, ctx.current, ctx.last)), i0.ɵɵsanitizeHtml);
6810
+ i0.ɵɵadvance(4);
6811
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c1$1, ctx.current === 1));
6812
+ i0.ɵɵadvance(2);
6813
+ i0.ɵɵrepeater(ctx.pages);
6814
+ i0.ɵɵadvance(2);
6815
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c1$1, ctx.current === ctx.last));
6816
+ } }, dependencies: [ForAngularModule, i2.NgClass, i3.TranslatePipe, IonIcon], styles: ["#dcf-paginator-container[_ngcontent-%COMP%]{margin-bottom:1rem}.dcf-pagination[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.dcf-pagination[_ngcontent-%COMP%] .page-item[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:top;color:var(--ion-color-gray-7);font-weight:600;width:36px;line-height:34px;padding:0!important;border-radius:50%;box-sizing:border-box}.dcf-pagination[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:none;padding-left:0;position:relative;margin:0px .15rem}.dcf-pagination[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]:not(.disabled){cursor:pointer}.dcf-pagination[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]:hover .page-item[_ngcontent-%COMP%]{color:var(--ion-color-primary)}.dcf-pagination[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] .page-item[_ngcontent-%COMP%]{color:var(--ion-color-gray-7);font-weight:600}.dcf-pagination[_ngcontent-%COMP%] > *.dcf-active[_ngcontent-%COMP%] .page-item[_ngcontent-%COMP%]{background:rgba(var(--ion-color-primary-rgb),.15)}.dcf-pagination[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{display:flex;align-items:center;column-gap:.25em;padding:5px 10px;color:var(--ion-color-gray-8);transition:color .1s ease-in-out}.dcf-pagination[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:hover{color:var(--ion-color-gray-6);text-decoration:none}.dcf-pagination[_ngcontent-%COMP%] .dcf-disabled[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{opacity:.5;color:var(--ion-color-gray-6)}.dcf-pagination-resume[_ngcontent-%COMP%]{color:var(--ion-color-gray-8);margin:1rem 0px;text-align:center}"] }); }
5804
6817
  }
5805
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaginationComponent, decorators: [{
5806
- type: Component,
5807
- args: [{ selector: 'ngx-decaf-pagination', imports: [
5808
- ForAngularModule,
5809
- IonIcon
5810
- ], standalone: true, template: " <div id=\"dcf-paginator-container\" class=\"dcf-flex dcf-flex-center\">\n <div class=\"dcf-width-1-1\">\n <div class=\"dcf-pagination-resume\" [innerHTML]=\"locale + '.resume' | translate: {value0: current, value1: last}\"></div>\n <div #paginationComponent class=\"dcf-pagination aeon-pagination dcf-flex-center\">\n <div\n aria-label=\"previous\"\n tabindex=\"0\"\n (click)=\"previous()\"\n (keydown.enter)=\"previous()\" [ngClass]=\"{'dcf-disabled': current === 1}\">\n <ion-icon name=\"chevron-back-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n @for(page of pages; track page) {\n <div tabindex=\"0\" (click)=\"navigate(page['index'])\"\n (keydown.enter)=\"navigate(page['index'])\"\n [ngClass]=\"{'dcf-active': current === page['index'], 'dcf-disabled': page['index'] === ndivl}\">\n <span class=\"page-item\">{{ page['text'] }}</span>\n </div>\n }\n <div\n tabindex=\"0\" (click)=\"next()\"\n (keydown.enter)=\"next()\"\n [ngClass]=\"{'dcf-disabled': current === last}\">\n <ion-icon name=\"chevron-forward-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#dcf-paginator-container{margin-bottom:1rem}.dcf-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.dcf-pagination .page-item{display:flex;justify-content:center;align-items:top;color:var(--ion-color-gray-7);font-weight:600;width:36px;line-height:34px;padding:0!important;border-radius:50%;box-sizing:border-box}.dcf-pagination>*{flex:none;padding-left:0;position:relative;margin:0px .15rem}.dcf-pagination>*:not(.disabled){cursor:pointer}.dcf-pagination>*:hover .page-item{color:var(--ion-color-primary)}.dcf-pagination>* .page-item{color:var(--ion-color-gray-7);font-weight:600}.dcf-pagination>*.dcf-active .page-item{background:rgba(var(--ion-color-primary-rgb),.15)}.dcf-pagination>*>*{display:flex;align-items:center;column-gap:.25em;padding:5px 10px;color:var(--ion-color-gray-8);transition:color .1s ease-in-out}.dcf-pagination>*>:hover{color:var(--ion-color-gray-6);text-decoration:none}.dcf-pagination .dcf-disabled>*{opacity:.5;color:var(--ion-color-gray-6)}.dcf-pagination-resume{color:var(--ion-color-gray-8);margin:1rem 0px;text-align:center}\n"] }]
5811
- }], ctorParameters: () => [], propDecorators: { totalPages: [{
5812
- type: Input,
5813
- args: [{ required: true }]
5814
- }], current: [{
5815
- type: Input
5816
- }], clickEvent: [{
5817
- type: Output
5818
- }] } });
6818
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationComponent, [{
6819
+ type: Component,
6820
+ args: [{ selector: 'ngx-decaf-pagination', imports: [
6821
+ ForAngularModule,
6822
+ IonIcon
6823
+ ], standalone: true, template: " <div id=\"dcf-paginator-container\" class=\"dcf-flex dcf-flex-center\">\n <div class=\"dcf-width-1-1\">\n <div class=\"dcf-pagination-resume\" [innerHTML]=\"locale + '.resume' | translate: {value0: current, value1: last}\"></div>\n <div #paginationComponent class=\"dcf-pagination aeon-pagination dcf-flex-center\">\n <div\n aria-label=\"previous\"\n tabindex=\"0\"\n (click)=\"previous()\"\n (keydown.enter)=\"previous()\" [ngClass]=\"{'dcf-disabled': current === 1}\">\n <ion-icon name=\"chevron-back-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n @for(page of pages; track page) {\n <div tabindex=\"0\" (click)=\"navigate(page['index'])\"\n (keydown.enter)=\"navigate(page['index'])\"\n [ngClass]=\"{'dcf-active': current === page['index'], 'dcf-disabled': page['index'] === ndivl}\">\n <span class=\"page-item\">{{ page['text'] }}</span>\n </div>\n }\n <div\n tabindex=\"0\" (click)=\"next()\"\n (keydown.enter)=\"next()\"\n [ngClass]=\"{'dcf-disabled': current === last}\">\n <ion-icon name=\"chevron-forward-outline\" aria-hidden=\"true\"></ion-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#dcf-paginator-container{margin-bottom:1rem}.dcf-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.dcf-pagination .page-item{display:flex;justify-content:center;align-items:top;color:var(--ion-color-gray-7);font-weight:600;width:36px;line-height:34px;padding:0!important;border-radius:50%;box-sizing:border-box}.dcf-pagination>*{flex:none;padding-left:0;position:relative;margin:0px .15rem}.dcf-pagination>*:not(.disabled){cursor:pointer}.dcf-pagination>*:hover .page-item{color:var(--ion-color-primary)}.dcf-pagination>* .page-item{color:var(--ion-color-gray-7);font-weight:600}.dcf-pagination>*.dcf-active .page-item{background:rgba(var(--ion-color-primary-rgb),.15)}.dcf-pagination>*>*{display:flex;align-items:center;column-gap:.25em;padding:5px 10px;color:var(--ion-color-gray-8);transition:color .1s ease-in-out}.dcf-pagination>*>:hover{color:var(--ion-color-gray-6);text-decoration:none}.dcf-pagination .dcf-disabled>*{opacity:.5;color:var(--ion-color-gray-6)}.dcf-pagination-resume{color:var(--ion-color-gray-8);margin:1rem 0px;text-align:center}\n"] }]
6824
+ }], () => [], { totalPages: [{
6825
+ type: Input,
6826
+ args: [{ required: true }]
6827
+ }], current: [{
6828
+ type: Input
6829
+ }], clickEvent: [{
6830
+ type: Output
6831
+ }] }); })();
6832
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PaginationComponent, { className: "PaginationComponent", filePath: "components/pagination/pagination.component.ts", lineNumber: 62 }); })();
5819
6833
 
5820
6834
  var ListComponentsTypes;
5821
6835
  (function (ListComponentsTypes) {
@@ -5823,6 +6837,150 @@ var ListComponentsTypes;
5823
6837
  ListComponentsTypes["PAGINATED"] = "paginated";
5824
6838
  })(ListComponentsTypes || (ListComponentsTypes = {}));
5825
6839
 
6840
+ const _c0 = ["*"];
6841
+ const _c1 = (a0, a1, a2) => ({ item: a0, mapper: a1, route: a2 });
6842
+ function ListComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6843
+ const _r1 = i0.ɵɵgetCurrentView();
6844
+ i0.ɵɵelementStart(0, "ion-refresher", 2);
6845
+ i0.ɵɵlistener("ionRefresh", function ListComponent_Conditional_0_Template_ion_refresher_ionRefresh_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleRefresh($event)); });
6846
+ i0.ɵɵelement(1, "ion-refresher-content");
6847
+ i0.ɵɵelementEnd();
6848
+ } if (rf & 2) {
6849
+ i0.ɵɵproperty("pullFactor", 1)("pullMin", 100)("pullMax", 200);
6850
+ } }
6851
+ function ListComponent_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6852
+ const _r3 = i0.ɵɵgetCurrentView();
6853
+ i0.ɵɵelementStart(0, "ngx-decaf-filter", 5);
6854
+ i0.ɵɵlistener("filterEvent", function ListComponent_Conditional_1_Conditional_0_Template_ngx_decaf_filter_filterEvent_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleFilter($event)); })("searchEvent", function ListComponent_Conditional_1_Conditional_0_Template_ngx_decaf_filter_searchEvent_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleSearch($event)); });
6855
+ i0.ɵɵelementEnd();
6856
+ } if (rf & 2) {
6857
+ const ctx_r1 = i0.ɵɵnextContext(2);
6858
+ i0.ɵɵproperty("model", ctx_r1.model)("sortDirection", ctx_r1.sortDirection)("disableSort", ctx_r1.disableSort);
6859
+ } }
6860
+ function ListComponent_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6861
+ const _r4 = i0.ɵɵgetCurrentView();
6862
+ i0.ɵɵelementStart(0, "ngx-decaf-searchbar", 6);
6863
+ i0.ɵɵlistener("searchEvent", function ListComponent_Conditional_1_Conditional_1_Template_ngx_decaf_searchbar_searchEvent_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleSearch($event)); });
6864
+ i0.ɵɵelementEnd();
6865
+ } if (rf & 2) {
6866
+ i0.ɵɵproperty("emitEventToWindow", false)("debounce", 500);
6867
+ } }
6868
+ function ListComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6869
+ i0.ɵɵtemplate(0, ListComponent_Conditional_1_Conditional_0_Template, 1, 3, "ngx-decaf-filter", 3)(1, ListComponent_Conditional_1_Conditional_1_Template, 1, 2, "ngx-decaf-searchbar", 4);
6870
+ } if (rf & 2) {
6871
+ const ctx_r1 = i0.ɵɵnextContext();
6872
+ i0.ɵɵconditional(ctx_r1.model && ctx_r1.enableFilter ? 0 : 1);
6873
+ } }
6874
+ function ListComponent_Conditional_2_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
6875
+ const _r5 = i0.ɵɵgetCurrentView();
6876
+ i0.ɵɵelementStart(0, "ngx-decaf-component-renderer", 9);
6877
+ i0.ɵɵlistener("listenEvent", function ListComponent_Conditional_2_Conditional_2_For_1_Template_ngx_decaf_component_renderer_listenEvent_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.handleEvent($event)); });
6878
+ i0.ɵɵelementEnd();
6879
+ } if (rf & 2) {
6880
+ const child_r6 = ctx.$implicit;
6881
+ const ctx_r1 = i0.ɵɵnextContext(3);
6882
+ i0.ɵɵproperty("tag", ctx_r1.item.tag)("globals", i0.ɵɵpureFunction3(2, _c1, child_r6, ctx_r1.mapper, ctx_r1.route));
6883
+ } }
6884
+ function ListComponent_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
6885
+ i0.ɵɵrepeaterCreate(0, ListComponent_Conditional_2_Conditional_2_For_1_Template, 1, 6, "ngx-decaf-component-renderer", 8, i0.ɵɵcomponentInstance().trackItemFn, true);
6886
+ } if (rf & 2) {
6887
+ const ctx_r1 = i0.ɵɵnextContext(2);
6888
+ i0.ɵɵrepeater(ctx_r1.items);
6889
+ } }
6890
+ function ListComponent_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
6891
+ i0.ɵɵprojection(0);
6892
+ } }
6893
+ function ListComponent_Conditional_2_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6894
+ const _r7 = i0.ɵɵgetCurrentView();
6895
+ i0.ɵɵelementStart(0, "ngx-decaf-pagination", 12);
6896
+ i0.ɵɵlistener("clickEvent", function ListComponent_Conditional_2_Conditional_4_Conditional_0_Template_ngx_decaf_pagination_clickEvent_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.handlePaginate($event)); });
6897
+ i0.ɵɵelementEnd();
6898
+ } if (rf & 2) {
6899
+ const ctx_r1 = i0.ɵɵnextContext(3);
6900
+ i0.ɵɵproperty("totalPages", ctx_r1.pages)("current", ctx_r1.page);
6901
+ } }
6902
+ function ListComponent_Conditional_2_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6903
+ const _r8 = i0.ɵɵgetCurrentView();
6904
+ i0.ɵɵelementStart(0, "ion-infinite-scroll", 13);
6905
+ i0.ɵɵlistener("ionInfinite", function ListComponent_Conditional_2_Conditional_4_Conditional_1_Template_ion_infinite_scroll_ionInfinite_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.handleRefresh($event)); });
6906
+ i0.ɵɵelement(1, "ion-infinite-scroll-content", 14);
6907
+ i0.ɵɵelementEnd();
6908
+ } if (rf & 2) {
6909
+ const ctx_r1 = i0.ɵɵnextContext(3);
6910
+ i0.ɵɵclassMap((ctx_r1.searchValue == null ? null : ctx_r1.searchValue.length) ? "dcf-hidden" : "");
6911
+ i0.ɵɵproperty("position", ctx_r1.scrollPosition)("threshold", ctx_r1.scrollThreshold);
6912
+ i0.ɵɵadvance();
6913
+ i0.ɵɵproperty("loadingSpinner", ctx_r1.loadingSpinner)("loadingText", ctx_r1.loadingText);
6914
+ } }
6915
+ function ListComponent_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
6916
+ i0.ɵɵtemplate(0, ListComponent_Conditional_2_Conditional_4_Conditional_0_Template, 1, 2, "ngx-decaf-pagination", 10)(1, ListComponent_Conditional_2_Conditional_4_Conditional_1_Template, 2, 6, "ion-infinite-scroll", 11);
6917
+ } if (rf & 2) {
6918
+ const ctx_r1 = i0.ɵɵnextContext(2);
6919
+ i0.ɵɵconditional(ctx_r1.pages > 0 && ctx_r1.type === "paginated" && !(ctx_r1.searchValue == null ? null : ctx_r1.searchValue.length) ? 0 : 1);
6920
+ } }
6921
+ function ListComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
6922
+ i0.ɵɵelementStart(0, "ion-list", 7, 0);
6923
+ i0.ɵɵtemplate(2, ListComponent_Conditional_2_Conditional_2_Template, 2, 0)(3, ListComponent_Conditional_2_Conditional_3_Template, 1, 0);
6924
+ i0.ɵɵelementEnd();
6925
+ i0.ɵɵtemplate(4, ListComponent_Conditional_2_Conditional_4_Template, 2, 1);
6926
+ } if (rf & 2) {
6927
+ const ctx_r1 = i0.ɵɵnextContext();
6928
+ i0.ɵɵproperty("inset", ctx_r1.inset)("lines", ctx_r1.lines);
6929
+ i0.ɵɵadvance(2);
6930
+ i0.ɵɵconditional((ctx_r1.item == null ? null : ctx_r1.item.tag) ? 2 : 3);
6931
+ i0.ɵɵadvance(2);
6932
+ i0.ɵɵconditional(ctx_r1.loadMoreData ? 4 : -1);
6933
+ } }
6934
+ function ListComponent_Conditional_3_Conditional_0_ion_item_0_Template(rf, ctx) { if (rf & 1) {
6935
+ i0.ɵɵelementStart(0, "ion-item")(1, "ion-thumbnail", 16);
6936
+ i0.ɵɵelement(2, "ion-skeleton-text", 17);
6937
+ i0.ɵɵelementEnd();
6938
+ i0.ɵɵelementStart(3, "ion-label");
6939
+ i0.ɵɵelement(4, "ion-skeleton-text", 17);
6940
+ i0.ɵɵelementStart(5, "ion-text", 18);
6941
+ i0.ɵɵelement(6, "ion-skeleton-text", 17);
6942
+ i0.ɵɵelementEnd()()();
6943
+ } if (rf & 2) {
6944
+ i0.ɵɵadvance(2);
6945
+ i0.ɵɵproperty("animated", true);
6946
+ i0.ɵɵadvance(2);
6947
+ i0.ɵɵproperty("animated", true);
6948
+ i0.ɵɵadvance(2);
6949
+ i0.ɵɵproperty("animated", true);
6950
+ } }
6951
+ function ListComponent_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6952
+ i0.ɵɵtemplate(0, ListComponent_Conditional_3_Conditional_0_ion_item_0_Template, 7, 3, "ion-item", 15);
6953
+ } if (rf & 2) {
6954
+ const ctx_r1 = i0.ɵɵnextContext(2);
6955
+ i0.ɵɵproperty("ngForOf", ctx_r1.skeletonData);
6956
+ } }
6957
+ function ListComponent_Conditional_3_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6958
+ i0.ɵɵelement(0, "ngx-decaf-empty-state", 19);
6959
+ i0.ɵɵpipe(1, "translate");
6960
+ i0.ɵɵpipe(2, "translate");
6961
+ i0.ɵɵpipe(3, "translate");
6962
+ } if (rf & 2) {
6963
+ const ctx_r1 = i0.ɵɵnextContext(3);
6964
+ i0.ɵɵproperty("title", i0.ɵɵpipeBind1(1, 4, ctx_r1.locale + "." + ctx_r1.empty.title))("subtitle", i0.ɵɵpipeBind1(2, 6, ctx_r1.locale + "." + ctx_r1.empty.subtitle))("buttonText", ctx_r1.empty.showButton ? i0.ɵɵpipeBind1(3, 8, ctx_r1.locale + "." + ctx_r1.empty.button) : "")("buttonLink", ctx_r1.empty.showButton ? ctx_r1.empty.route : "");
6965
+ } }
6966
+ function ListComponent_Conditional_3_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6967
+ i0.ɵɵelement(0, "ngx-decaf-empty-state", 20);
6968
+ } if (rf & 2) {
6969
+ const ctx_r1 = i0.ɵɵnextContext(3);
6970
+ i0.ɵɵproperty("translatable", true)("searchValue", ctx_r1.searchValue);
6971
+ } }
6972
+ function ListComponent_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6973
+ i0.ɵɵtemplate(0, ListComponent_Conditional_3_Conditional_1_Conditional_0_Template, 4, 10, "ngx-decaf-empty-state", 19)(1, ListComponent_Conditional_3_Conditional_1_Conditional_1_Template, 1, 2, "ngx-decaf-empty-state", 20);
6974
+ } if (rf & 2) {
6975
+ const ctx_r1 = i0.ɵɵnextContext(2);
6976
+ i0.ɵɵconditional(!(ctx_r1.searchValue == null ? null : ctx_r1.searchValue.length) ? 0 : 1);
6977
+ } }
6978
+ function ListComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
6979
+ i0.ɵɵtemplate(0, ListComponent_Conditional_3_Conditional_0_Template, 1, 1, "ion-item")(1, ListComponent_Conditional_3_Conditional_1_Template, 2, 1);
6980
+ } if (rf & 2) {
6981
+ const ctx_r1 = i0.ɵɵnextContext();
6982
+ i0.ɵɵconditional(ctx_r1.refreshing ? 0 : 1);
6983
+ } }
5826
6984
  /**
5827
6985
  * @description A versatile list component that supports various data display modes.
5828
6986
  * @summary This component provides a flexible way to display lists of data with support
@@ -6948,93 +8106,118 @@ let ListComponent = class ListComponent extends NgxBaseComponent {
6948
8106
  return accum;
6949
8107
  }, []);
6950
8108
  }
6951
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6952
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ListComponent, isStandalone: true, selector: "ngx-decaf-list", inputs: { type: "type", translatable: "translatable", showSearchbar: "showSearchbar", data: "data", source: "source", start: "start", limit: "limit", loadMoreData: "loadMoreData", lines: "lines", inset: "inset", scrollThreshold: "scrollThreshold", scrollPosition: "scrollPosition", loadingText: "loadingText", showRefresher: "showRefresher", loadingSpinner: "loadingSpinner", enableFilter: "enableFilter", sortDirection: "sortDirection", sortBy: "sortBy", disableSort: "disableSort", emptyIcon: "emptyIcon", empty: "empty" }, outputs: { refreshEvent: "refreshEvent", clickEvent: "clickEvent" }, host: { listeners: { "window:ListItemClickEvent": "handleClick($event)", "window:searchbarEvent": "handleSearch($event)", "window:BackButtonNavigationEndEvent": "refresh($event)" } }, usesInheritance: true, ngImport: i0, template: "\n@if(showRefresher) {\n <ion-refresher slot=\"fixed\" [pullFactor]=\"1\" [pullMin]=\"100\" [pullMax]=\"200\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content />\n </ion-refresher>\n}\n\n@if(showSearchbar) {\n @if(model && enableFilter) {\n <ngx-decaf-filter\n [model]=\"model\"\n [sortDirection]=\"sortDirection\"\n [disableSort]=\"disableSort\"\n (filterEvent)=\"handleFilter($event)\"\n (searchEvent)=\"handleSearch($event)\"\n />\n } @else {\n <ngx-decaf-searchbar [emitEventToWindow]=\"false\" [debounce]=\"500\" (searchEvent)=\"handleSearch($event)\" />\n }\n}\n\n@if(data?.length) {\n <ion-list [inset]=\"inset\" [lines]=\"lines\" #component>\n @if(item?.tag) {\n @for(child of items; track trackItemFn($index, child)) {\n <ngx-decaf-component-renderer\n [tag]=\"item.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]='{\n item: child,\n mapper: mapper,\n route: route\n }'>\n </ngx-decaf-component-renderer>\n }\n } @else {\n <ng-content></ng-content>\n }\n </ion-list>\n\n @if(loadMoreData) {\n @if(pages > 0 && type === 'paginated' && !searchValue?.length) {\n <ngx-decaf-pagination\n [totalPages]=\"pages\"\n [current]=\"page\"\n (clickEvent)=\"handlePaginate($event)\"\n />\n\n } @else {\n <ion-infinite-scroll\n [class]=\"searchValue?.length ? 'dcf-hidden' : ''\"\n [position]=\"scrollPosition\"\n [threshold]=\"scrollThreshold\"\n (ionInfinite)=\"handleRefresh($event)\">\n <ion-infinite-scroll-content [loadingSpinner]=\"loadingSpinner\" [loadingText]=\"loadingText\" />\n </ion-infinite-scroll>\n }\n }\n} @else {\n @if(refreshing) {\n <ion-item *ngFor=\"let skl of skeletonData\">\n <ion-thumbnail slot=\"start\">\n <ion-skeleton-text [animated]=\"true\"></ion-skeleton-text>\n </ion-thumbnail>\n <ion-label>\n <ion-skeleton-text [animated]=\"true\"></ion-skeleton-text>\n <ion-text class=\"date\" style=\"width: 20%;\"><ion-skeleton-text [animated]=\"true\"></ion-skeleton-text></ion-text>\n </ion-label>\n </ion-item>\n } @else {\n @if(!searchValue?.length) {\n <ngx-decaf-empty-state\n [title]=\"(locale + '.'+ empty.title) | translate\"\n [subtitle]=\"(locale + '.'+ empty.subtitle) | translate\"\n [buttonText]=\"empty.showButton ? (locale + '.'+ empty.button | translate) : ''\"\n [buttonLink]=\"empty.showButton ? empty.route : ''\"\n />\n } @else {\n <ngx-decaf-empty-state\n icon=\"search-outline\"\n ngClass=\"empty-search\"\n [translatable]=\"true\"\n title=\"search.title\"\n subtitle=\"search.subtitle\"\n [searchValue]=\"searchValue\"\n />\n }\n }\n}\n\n", styles: ["ion-infinite-scroll-content ion-spinner{--color: var(--ion-color-primary)}@media (max-width: 768px){#end,[slot=end]{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: PaginationComponent, selector: "ngx-decaf-pagination", inputs: ["totalPages", "current"], outputs: ["clickEvent"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonThumbnail, selector: "ion-thumbnail" }, { kind: "component", type: IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }, { kind: "component", type: SearchbarComponent, selector: "ngx-decaf-searchbar", inputs: ["autocomplete", "autocorrect", "animated", "buttonCancelText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value", "queryKeys", "isVisible", "wrapper", "wrapperColor", "emitEventToWindow"], outputs: ["searchEvent"] }, { kind: "component", type: EmptyStateComponent, selector: "ngx-decaf-empty-state", inputs: ["title", "titleColor", "subtitle", "subtitleColor", "showIcon", "icon", "iconSize", "iconColor", "buttonLink", "buttonText", "buttonFill", "buttonColor", "buttonSize", "searchValue"] }, { kind: "component", type: FilterComponent, selector: "ngx-decaf-filter", inputs: ["indexes", "conditions", "sortBy", "disableSort"], outputs: ["filterEvent", "searchEvent"] }, { kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "model", "parent"], outputs: ["listenEvent"] }] }); }
8109
+ static { this.ɵfac = function ListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ListComponent)(); }; }
8110
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListComponent, selectors: [["ngx-decaf-list"]], hostBindings: function ListComponent_HostBindings(rf, ctx) { if (rf & 1) {
8111
+ i0.ɵɵlistener("ListItemClickEvent", function ListComponent_ListItemClickEvent_HostBindingHandler($event) { return ctx.handleClick($event); }, false, i0.ɵɵresolveWindow)("searchbarEvent", function ListComponent_searchbarEvent_HostBindingHandler($event) { return ctx.handleSearch($event); }, false, i0.ɵɵresolveWindow)("BackButtonNavigationEndEvent", function ListComponent_BackButtonNavigationEndEvent_HostBindingHandler($event) { return ctx.refresh($event); }, false, i0.ɵɵresolveWindow);
8112
+ } }, inputs: { type: "type", translatable: "translatable", showSearchbar: "showSearchbar", data: "data", source: "source", start: "start", limit: "limit", loadMoreData: "loadMoreData", lines: "lines", inset: "inset", scrollThreshold: "scrollThreshold", scrollPosition: "scrollPosition", loadingText: "loadingText", showRefresher: "showRefresher", loadingSpinner: "loadingSpinner", enableFilter: "enableFilter", sortDirection: "sortDirection", sortBy: "sortBy", disableSort: "disableSort", emptyIcon: "emptyIcon", empty: "empty" }, outputs: { refreshEvent: "refreshEvent", clickEvent: "clickEvent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 4, vars: 3, consts: [["component", ""], ["slot", "fixed", 3, "pullFactor", "pullMin", "pullMax"], ["slot", "fixed", 3, "ionRefresh", "pullFactor", "pullMin", "pullMax"], [3, "model", "sortDirection", "disableSort"], [3, "emitEventToWindow", "debounce"], [3, "filterEvent", "searchEvent", "model", "sortDirection", "disableSort"], [3, "searchEvent", "emitEventToWindow", "debounce"], [3, "inset", "lines"], [3, "tag", "globals"], [3, "listenEvent", "tag", "globals"], [3, "totalPages", "current"], [3, "class", "position", "threshold"], [3, "clickEvent", "totalPages", "current"], [3, "ionInfinite", "position", "threshold"], [3, "loadingSpinner", "loadingText"], [4, "ngFor", "ngForOf"], ["slot", "start"], [3, "animated"], [1, "date", 2, "width", "20%"], [3, "title", "subtitle", "buttonText", "buttonLink"], ["icon", "search-outline", "ngClass", "empty-search", "title", "search.title", "subtitle", "search.subtitle", 3, "translatable", "searchValue"]], template: function ListComponent_Template(rf, ctx) { if (rf & 1) {
8113
+ i0.ɵɵprojectionDef();
8114
+ i0.ɵɵtemplate(0, ListComponent_Conditional_0_Template, 2, 3, "ion-refresher", 1)(1, ListComponent_Conditional_1_Template, 2, 1)(2, ListComponent_Conditional_2_Template, 5, 4)(3, ListComponent_Conditional_3_Template, 2, 1);
8115
+ } if (rf & 2) {
8116
+ i0.ɵɵconditional(ctx.showRefresher ? 0 : -1);
8117
+ i0.ɵɵadvance();
8118
+ i0.ɵɵconditional(ctx.showSearchbar ? 1 : -1);
8119
+ i0.ɵɵadvance();
8120
+ i0.ɵɵconditional((ctx.data == null ? null : ctx.data.length) ? 2 : 3);
8121
+ } }, dependencies: [ForAngularModule, i1.IonText, i2.NgClass, i2.NgForOf, i3.TranslatePipe, IonRefresher,
8122
+ PaginationComponent,
8123
+ IonList,
8124
+ IonItem,
8125
+ IonThumbnail,
8126
+ IonSkeletonText,
8127
+ IonLabel,
8128
+ IonRefresherContent,
8129
+ IonInfiniteScroll,
8130
+ IonInfiniteScrollContent,
8131
+ SearchbarComponent,
8132
+ EmptyStateComponent,
8133
+ FilterComponent,
8134
+ ComponentRendererComponent], styles: ["ion-infinite-scroll-content[_ngcontent-%COMP%] ion-spinner[_ngcontent-%COMP%]{--color: var(--ion-color-primary)}@media (max-width: 768px){#end[_ngcontent-%COMP%], [slot=end][_ngcontent-%COMP%]{display:none!important}}"] }); }
6953
8135
  };
6954
8136
  ListComponent = __decorate([
6955
8137
  Dynamic(),
6956
8138
  __metadata("design:paramtypes", [])
6957
8139
  ], ListComponent);
6958
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListComponent, decorators: [{
6959
- type: Component,
6960
- args: [{ selector: 'ngx-decaf-list', standalone: true, imports: [
6961
- ForAngularModule,
6962
- IonRefresher,
6963
- IonLoading,
6964
- PaginationComponent,
6965
- IonList,
6966
- IonItem,
6967
- IonThumbnail,
6968
- IonSkeletonText,
6969
- IonLabel,
6970
- IonText,
6971
- IonRefresherContent,
6972
- IonInfiniteScroll,
6973
- IonInfiniteScrollContent,
6974
- IonThumbnail,
6975
- IonSkeletonText,
6976
- SearchbarComponent,
6977
- EmptyStateComponent,
6978
- ListItemComponent,
6979
- FilterComponent,
6980
- ComponentRendererComponent
6981
- ], template: "\n@if(showRefresher) {\n <ion-refresher slot=\"fixed\" [pullFactor]=\"1\" [pullMin]=\"100\" [pullMax]=\"200\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content />\n </ion-refresher>\n}\n\n@if(showSearchbar) {\n @if(model && enableFilter) {\n <ngx-decaf-filter\n [model]=\"model\"\n [sortDirection]=\"sortDirection\"\n [disableSort]=\"disableSort\"\n (filterEvent)=\"handleFilter($event)\"\n (searchEvent)=\"handleSearch($event)\"\n />\n } @else {\n <ngx-decaf-searchbar [emitEventToWindow]=\"false\" [debounce]=\"500\" (searchEvent)=\"handleSearch($event)\" />\n }\n}\n\n@if(data?.length) {\n <ion-list [inset]=\"inset\" [lines]=\"lines\" #component>\n @if(item?.tag) {\n @for(child of items; track trackItemFn($index, child)) {\n <ngx-decaf-component-renderer\n [tag]=\"item.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]='{\n item: child,\n mapper: mapper,\n route: route\n }'>\n </ngx-decaf-component-renderer>\n }\n } @else {\n <ng-content></ng-content>\n }\n </ion-list>\n\n @if(loadMoreData) {\n @if(pages > 0 && type === 'paginated' && !searchValue?.length) {\n <ngx-decaf-pagination\n [totalPages]=\"pages\"\n [current]=\"page\"\n (clickEvent)=\"handlePaginate($event)\"\n />\n\n } @else {\n <ion-infinite-scroll\n [class]=\"searchValue?.length ? 'dcf-hidden' : ''\"\n [position]=\"scrollPosition\"\n [threshold]=\"scrollThreshold\"\n (ionInfinite)=\"handleRefresh($event)\">\n <ion-infinite-scroll-content [loadingSpinner]=\"loadingSpinner\" [loadingText]=\"loadingText\" />\n </ion-infinite-scroll>\n }\n }\n} @else {\n @if(refreshing) {\n <ion-item *ngFor=\"let skl of skeletonData\">\n <ion-thumbnail slot=\"start\">\n <ion-skeleton-text [animated]=\"true\"></ion-skeleton-text>\n </ion-thumbnail>\n <ion-label>\n <ion-skeleton-text [animated]=\"true\"></ion-skeleton-text>\n <ion-text class=\"date\" style=\"width: 20%;\"><ion-skeleton-text [animated]=\"true\"></ion-skeleton-text></ion-text>\n </ion-label>\n </ion-item>\n } @else {\n @if(!searchValue?.length) {\n <ngx-decaf-empty-state\n [title]=\"(locale + '.'+ empty.title) | translate\"\n [subtitle]=\"(locale + '.'+ empty.subtitle) | translate\"\n [buttonText]=\"empty.showButton ? (locale + '.'+ empty.button | translate) : ''\"\n [buttonLink]=\"empty.showButton ? empty.route : ''\"\n />\n } @else {\n <ngx-decaf-empty-state\n icon=\"search-outline\"\n ngClass=\"empty-search\"\n [translatable]=\"true\"\n title=\"search.title\"\n subtitle=\"search.subtitle\"\n [searchValue]=\"searchValue\"\n />\n }\n }\n}\n\n", styles: ["ion-infinite-scroll-content ion-spinner{--color: var(--ion-color-primary)}@media (max-width: 768px){#end,[slot=end]{display:none!important}}\n"] }]
6982
- }], ctorParameters: () => [], propDecorators: { type: [{
6983
- type: Input
6984
- }], translatable: [{
6985
- type: Input
6986
- }], showSearchbar: [{
6987
- type: Input
6988
- }], data: [{
6989
- type: Input
6990
- }], source: [{
6991
- type: Input
6992
- }], start: [{
6993
- type: Input
6994
- }], limit: [{
6995
- type: Input
6996
- }], loadMoreData: [{
6997
- type: Input
6998
- }], lines: [{
6999
- type: Input
7000
- }], inset: [{
7001
- type: Input
7002
- }], scrollThreshold: [{
7003
- type: Input
7004
- }], scrollPosition: [{
7005
- type: Input
7006
- }], loadingText: [{
7007
- type: Input
7008
- }], showRefresher: [{
7009
- type: Input
7010
- }], loadingSpinner: [{
7011
- type: Input
7012
- }], enableFilter: [{
7013
- type: Input
7014
- }], sortDirection: [{
7015
- type: Input
7016
- }], sortBy: [{
7017
- type: Input
7018
- }], disableSort: [{
7019
- type: Input
7020
- }], emptyIcon: [{
7021
- type: Input
7022
- }], empty: [{
7023
- type: Input
7024
- }], refreshEvent: [{
7025
- type: Output
7026
- }], clickEvent: [{
7027
- type: Output
7028
- }], handleClick: [{
7029
- type: HostListener,
7030
- args: ['window:ListItemClickEvent', ['$event']]
7031
- }], handleSearch: [{
7032
- type: HostListener,
7033
- args: ['window:searchbarEvent', ['$event']]
7034
- }], refresh: [{
7035
- type: HostListener,
7036
- args: ['window:BackButtonNavigationEndEvent', ['$event']]
7037
- }] } });
8140
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListComponent, [{
8141
+ type: Component,
8142
+ args: [{ selector: 'ngx-decaf-list', standalone: true, imports: [
8143
+ ForAngularModule,
8144
+ IonRefresher,
8145
+ IonLoading,
8146
+ PaginationComponent,
8147
+ IonList,
8148
+ IonItem,
8149
+ IonThumbnail,
8150
+ IonSkeletonText,
8151
+ IonLabel,
8152
+ IonText,
8153
+ IonRefresherContent,
8154
+ IonInfiniteScroll,
8155
+ IonInfiniteScrollContent,
8156
+ IonThumbnail,
8157
+ IonSkeletonText,
8158
+ SearchbarComponent,
8159
+ EmptyStateComponent,
8160
+ ListItemComponent,
8161
+ FilterComponent,
8162
+ ComponentRendererComponent
8163
+ ], template: "\n@if(showRefresher) {\n <ion-refresher slot=\"fixed\" [pullFactor]=\"1\" [pullMin]=\"100\" [pullMax]=\"200\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content />\n </ion-refresher>\n}\n\n@if(showSearchbar) {\n @if(model && enableFilter) {\n <ngx-decaf-filter\n [model]=\"model\"\n [sortDirection]=\"sortDirection\"\n [disableSort]=\"disableSort\"\n (filterEvent)=\"handleFilter($event)\"\n (searchEvent)=\"handleSearch($event)\"\n />\n } @else {\n <ngx-decaf-searchbar [emitEventToWindow]=\"false\" [debounce]=\"500\" (searchEvent)=\"handleSearch($event)\" />\n }\n}\n\n@if(data?.length) {\n <ion-list [inset]=\"inset\" [lines]=\"lines\" #component>\n @if(item?.tag) {\n @for(child of items; track trackItemFn($index, child)) {\n <ngx-decaf-component-renderer\n [tag]=\"item.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]='{\n item: child,\n mapper: mapper,\n route: route\n }'>\n </ngx-decaf-component-renderer>\n }\n } @else {\n <ng-content></ng-content>\n }\n </ion-list>\n\n @if(loadMoreData) {\n @if(pages > 0 && type === 'paginated' && !searchValue?.length) {\n <ngx-decaf-pagination\n [totalPages]=\"pages\"\n [current]=\"page\"\n (clickEvent)=\"handlePaginate($event)\"\n />\n\n } @else {\n <ion-infinite-scroll\n [class]=\"searchValue?.length ? 'dcf-hidden' : ''\"\n [position]=\"scrollPosition\"\n [threshold]=\"scrollThreshold\"\n (ionInfinite)=\"handleRefresh($event)\">\n <ion-infinite-scroll-content [loadingSpinner]=\"loadingSpinner\" [loadingText]=\"loadingText\" />\n </ion-infinite-scroll>\n }\n }\n} @else {\n @if(refreshing) {\n <ion-item *ngFor=\"let skl of skeletonData\">\n <ion-thumbnail slot=\"start\">\n <ion-skeleton-text [animated]=\"true\"></ion-skeleton-text>\n </ion-thumbnail>\n <ion-label>\n <ion-skeleton-text [animated]=\"true\"></ion-skeleton-text>\n <ion-text class=\"date\" style=\"width: 20%;\"><ion-skeleton-text [animated]=\"true\"></ion-skeleton-text></ion-text>\n </ion-label>\n </ion-item>\n } @else {\n @if(!searchValue?.length) {\n <ngx-decaf-empty-state\n [title]=\"(locale + '.'+ empty.title) | translate\"\n [subtitle]=\"(locale + '.'+ empty.subtitle) | translate\"\n [buttonText]=\"empty.showButton ? (locale + '.'+ empty.button | translate) : ''\"\n [buttonLink]=\"empty.showButton ? empty.route : ''\"\n />\n } @else {\n <ngx-decaf-empty-state\n icon=\"search-outline\"\n ngClass=\"empty-search\"\n [translatable]=\"true\"\n title=\"search.title\"\n subtitle=\"search.subtitle\"\n [searchValue]=\"searchValue\"\n />\n }\n }\n}\n\n", styles: ["ion-infinite-scroll-content ion-spinner{--color: var(--ion-color-primary)}@media (max-width: 768px){#end,[slot=end]{display:none!important}}\n"] }]
8164
+ }], () => [], { type: [{
8165
+ type: Input
8166
+ }], translatable: [{
8167
+ type: Input
8168
+ }], showSearchbar: [{
8169
+ type: Input
8170
+ }], data: [{
8171
+ type: Input
8172
+ }], source: [{
8173
+ type: Input
8174
+ }], start: [{
8175
+ type: Input
8176
+ }], limit: [{
8177
+ type: Input
8178
+ }], loadMoreData: [{
8179
+ type: Input
8180
+ }], lines: [{
8181
+ type: Input
8182
+ }], inset: [{
8183
+ type: Input
8184
+ }], scrollThreshold: [{
8185
+ type: Input
8186
+ }], scrollPosition: [{
8187
+ type: Input
8188
+ }], loadingText: [{
8189
+ type: Input
8190
+ }], showRefresher: [{
8191
+ type: Input
8192
+ }], loadingSpinner: [{
8193
+ type: Input
8194
+ }], enableFilter: [{
8195
+ type: Input
8196
+ }], sortDirection: [{
8197
+ type: Input
8198
+ }], sortBy: [{
8199
+ type: Input
8200
+ }], disableSort: [{
8201
+ type: Input
8202
+ }], emptyIcon: [{
8203
+ type: Input
8204
+ }], empty: [{
8205
+ type: Input
8206
+ }], refreshEvent: [{
8207
+ type: Output
8208
+ }], clickEvent: [{
8209
+ type: Output
8210
+ }], handleClick: [{
8211
+ type: HostListener,
8212
+ args: ['window:ListItemClickEvent', ['$event']]
8213
+ }], handleSearch: [{
8214
+ type: HostListener,
8215
+ args: ['window:searchbarEvent', ['$event']]
8216
+ }], refresh: [{
8217
+ type: HostListener,
8218
+ args: ['window:BackButtonNavigationEndEvent', ['$event']]
8219
+ }] }); })();
8220
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListComponent, { className: "ListComponent", filePath: "components/list/list.component.ts", lineNumber: 146 }); })();
7038
8221
 
7039
8222
  const Directives = [CollapsableDirective];
7040
8223
  const Components = [
@@ -7053,43 +8236,44 @@ const Components = [
7053
8236
  FilterComponent
7054
8237
  ];
7055
8238
  class ForAngularComponentsModule {
7056
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7057
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, imports: [ModelRendererComponent,
7058
- ComponentRendererComponent,
7059
- CrudFieldComponent,
7060
- CrudFormComponent,
7061
- EmptyStateComponent,
7062
- ListComponent,
7063
- ListItemComponent,
7064
- SearchbarComponent,
7065
- PaginationComponent,
7066
- CrudFormComponent,
7067
- FieldsetComponent,
7068
- LayoutComponent,
7069
- FilterComponent, CollapsableDirective], exports: [ModelRendererComponent,
7070
- ComponentRendererComponent,
7071
- CrudFieldComponent,
7072
- CrudFormComponent,
7073
- EmptyStateComponent,
7074
- ListComponent,
7075
- ListItemComponent,
7076
- SearchbarComponent,
7077
- PaginationComponent,
7078
- CrudFormComponent,
7079
- FieldsetComponent,
7080
- LayoutComponent,
7081
- FilterComponent, CollapsableDirective, ForAngularModule] }); }
7082
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, imports: [Components, ForAngularModule] }); }
8239
+ static { this.ɵfac = function ForAngularComponentsModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ForAngularComponentsModule)(); }; }
8240
+ static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: ForAngularComponentsModule }); }
8241
+ static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Components, ForAngularModule] }); }
7083
8242
  }
7084
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, decorators: [{
7085
- type: NgModule,
7086
- args: [{
7087
- imports: [Components, Directives],
7088
- declarations: [],
7089
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
7090
- exports: [Components, Directives, ForAngularModule],
7091
- }]
7092
- }] });
8243
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForAngularComponentsModule, [{
8244
+ type: NgModule,
8245
+ args: [{
8246
+ imports: [Components, Directives],
8247
+ declarations: [],
8248
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
8249
+ exports: [Components, Directives, ForAngularModule],
8250
+ }]
8251
+ }], null, null); })();
8252
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ForAngularComponentsModule, { imports: [ModelRendererComponent,
8253
+ ComponentRendererComponent,
8254
+ CrudFieldComponent,
8255
+ CrudFormComponent,
8256
+ EmptyStateComponent,
8257
+ ListComponent,
8258
+ ListItemComponent,
8259
+ SearchbarComponent,
8260
+ PaginationComponent,
8261
+ CrudFormComponent,
8262
+ FieldsetComponent,
8263
+ LayoutComponent,
8264
+ FilterComponent, CollapsableDirective], exports: [ModelRendererComponent,
8265
+ ComponentRendererComponent,
8266
+ CrudFieldComponent,
8267
+ CrudFormComponent,
8268
+ EmptyStateComponent,
8269
+ ListComponent,
8270
+ ListItemComponent,
8271
+ SearchbarComponent,
8272
+ PaginationComponent,
8273
+ CrudFormComponent,
8274
+ FieldsetComponent,
8275
+ LayoutComponent,
8276
+ FilterComponent, CollapsableDirective, ForAngularModule] }); })();
7093
8277
 
7094
8278
  // Component exports
7095
8279