@elite.framework/ng.core 1.0.63 → 1.0.65

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 (127) hide show
  1. package/fesm2022/elite.framework-ng.core-src-lib-components-attachments.mjs +204 -0
  2. package/fesm2022/elite.framework-ng.core-src-lib-components-attachments.mjs.map +1 -0
  3. package/fesm2022/elite.framework-ng.core-src-lib-components-breadcrumb.mjs +132 -0
  4. package/fesm2022/elite.framework-ng.core-src-lib-components-breadcrumb.mjs.map +1 -0
  5. package/fesm2022/elite.framework-ng.core-src-lib-components-color-picker.mjs +76 -0
  6. package/fesm2022/elite.framework-ng.core-src-lib-components-color-picker.mjs.map +1 -0
  7. package/fesm2022/elite.framework-ng.core-src-lib-components-column-settings-popover.mjs +172 -0
  8. package/fesm2022/elite.framework-ng.core-src-lib-components-column-settings-popover.mjs.map +1 -0
  9. package/fesm2022/elite.framework-ng.core-src-lib-components-condition-editor.mjs +794 -0
  10. package/fesm2022/elite.framework-ng.core-src-lib-components-condition-editor.mjs.map +1 -0
  11. package/fesm2022/elite.framework-ng.core-src-lib-components-custom-switch.mjs +110 -0
  12. package/fesm2022/elite.framework-ng.core-src-lib-components-custom-switch.mjs.map +1 -0
  13. package/fesm2022/elite.framework-ng.core-src-lib-components-deactivation-reason.mjs +130 -0
  14. package/fesm2022/elite.framework-ng.core-src-lib-components-deactivation-reason.mjs.map +1 -0
  15. package/fesm2022/elite.framework-ng.core-src-lib-components-form-button.mjs +50 -0
  16. package/fesm2022/elite.framework-ng.core-src-lib-components-form-button.mjs.map +1 -0
  17. package/fesm2022/elite.framework-ng.core-src-lib-components-form-field.mjs +154 -0
  18. package/fesm2022/elite.framework-ng.core-src-lib-components-form-field.mjs.map +1 -0
  19. package/fesm2022/elite.framework-ng.core-src-lib-components-form-template.mjs +24 -0
  20. package/fesm2022/elite.framework-ng.core-src-lib-components-form-template.mjs.map +1 -0
  21. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-image.mjs +100 -0
  22. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-image.mjs.map +1 -0
  23. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-label.mjs +78 -0
  24. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-label.mjs.map +1 -0
  25. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button-selector.mjs +167 -0
  26. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button-selector.mjs.map +1 -0
  27. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button.mjs +62 -0
  28. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button.mjs.map +1 -0
  29. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-split-button.mjs +50 -0
  30. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-split-button.mjs.map +1 -0
  31. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-username-with-domain.mjs +76 -0
  32. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-username-with-domain.mjs.map +1 -0
  33. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-autocomplete.mjs +163 -0
  34. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-autocomplete.mjs.map +1 -0
  35. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-button.mjs +133 -0
  36. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-button.mjs.map +1 -0
  37. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-card.mjs +214 -0
  38. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-card.mjs.map +1 -0
  39. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-crud-table.mjs +385 -0
  40. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-crud-table.mjs.map +1 -0
  41. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-errormessage.mjs +23 -0
  42. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-errormessage.mjs.map +1 -0
  43. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-formly-fields.mjs +53 -0
  44. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-formly-fields.mjs.map +1 -0
  45. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-loadingspinner.mjs +23 -0
  46. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-loadingspinner.mjs.map +1 -0
  47. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-search.mjs +85 -0
  48. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-search.mjs.map +1 -0
  49. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-selector.mjs +430 -0
  50. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-selector.mjs.map +1 -0
  51. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-table.mjs +216 -0
  52. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-table.mjs.map +1 -0
  53. package/fesm2022/elite.framework-ng.core-src-lib-components-header-wrapper.mjs +18 -0
  54. package/fesm2022/elite.framework-ng.core-src-lib-components-header-wrapper.mjs.map +1 -0
  55. package/fesm2022/elite.framework-ng.core-src-lib-components-icon-picker.mjs +195 -0
  56. package/fesm2022/elite.framework-ng.core-src-lib-components-icon-picker.mjs.map +1 -0
  57. package/fesm2022/elite.framework-ng.core-src-lib-components-input-switch.mjs +94 -0
  58. package/fesm2022/elite.framework-ng.core-src-lib-components-input-switch.mjs.map +1 -0
  59. package/fesm2022/elite.framework-ng.core-src-lib-components-input-with-icon.mjs +55 -0
  60. package/fesm2022/elite.framework-ng.core-src-lib-components-input-with-icon.mjs.map +1 -0
  61. package/fesm2022/elite.framework-ng.core-src-lib-components-label-type.mjs +112 -0
  62. package/fesm2022/elite.framework-ng.core-src-lib-components-label-type.mjs.map +1 -0
  63. package/fesm2022/elite.framework-ng.core-src-lib-components-odata-query-builder.mjs +297 -0
  64. package/fesm2022/elite.framework-ng.core-src-lib-components-odata-query-builder.mjs.map +1 -0
  65. package/fesm2022/elite.framework-ng.core-src-lib-components-repeat.mjs +135 -0
  66. package/fesm2022/elite.framework-ng.core-src-lib-components-repeat.mjs.map +1 -0
  67. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-cards.mjs +40 -0
  68. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-cards.mjs.map +1 -0
  69. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs +41 -0
  70. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs.map +1 -0
  71. package/fesm2022/elite.framework-ng.core-src-lib-components-tabs.mjs +45 -0
  72. package/fesm2022/elite.framework-ng.core-src-lib-components-tabs.mjs.map +1 -0
  73. package/fesm2022/elite.framework-ng.core-src-lib-components-tag-type.mjs +192 -0
  74. package/fesm2022/elite.framework-ng.core-src-lib-components-tag-type.mjs.map +1 -0
  75. package/fesm2022/elite.framework-ng.core-src-lib-components-text-editor.mjs +44 -0
  76. package/fesm2022/elite.framework-ng.core-src-lib-components-text-editor.mjs.map +1 -0
  77. package/fesm2022/elite.framework-ng.core-src-lib-components-wrappers.mjs +174 -0
  78. package/fesm2022/elite.framework-ng.core-src-lib-components-wrappers.mjs.map +1 -0
  79. package/fesm2022/elite.framework-ng.core-src-lib-directives.mjs +59 -0
  80. package/fesm2022/elite.framework-ng.core-src-lib-directives.mjs.map +1 -0
  81. package/fesm2022/elite.framework-ng.core-src-lib-pipes.mjs +135 -0
  82. package/fesm2022/elite.framework-ng.core-src-lib-pipes.mjs.map +1 -0
  83. package/fesm2022/elite.framework-ng.core.mjs +1643 -384
  84. package/fesm2022/elite.framework-ng.core.mjs.map +1 -1
  85. package/index.d.ts +493 -24
  86. package/package.json +14 -62
  87. package/src/lib/components/attachments/index.d.ts +31 -0
  88. package/src/lib/components/breadcrumb/index.d.ts +10 -0
  89. package/src/lib/components/color-picker/index.d.ts +9 -0
  90. package/src/lib/components/column-settings-popover/index.d.ts +39 -0
  91. package/src/lib/components/condition-editor/index.d.ts +73 -0
  92. package/src/lib/components/custom-switch/index.d.ts +12 -0
  93. package/src/lib/components/deactivation-reason/index.d.ts +24 -0
  94. package/src/lib/components/form-button/index.d.ts +10 -0
  95. package/src/lib/components/form-field/index.d.ts +30 -0
  96. package/src/lib/components/form-template/index.d.ts +9 -0
  97. package/src/lib/components/formly-avatar-image/index.d.ts +11 -0
  98. package/src/lib/components/formly-avatar-label/index.d.ts +29 -0
  99. package/src/lib/components/formly-button/index.d.ts +13 -0
  100. package/src/lib/components/formly-button-selector/index.d.ts +28 -0
  101. package/src/lib/components/formly-split-button/index.d.ts +16 -0
  102. package/src/lib/components/formly-username-with-domain/index.d.ts +12 -0
  103. package/src/lib/components/generic-autocomplete/index.d.ts +34 -0
  104. package/src/lib/components/generic-button/index.d.ts +35 -0
  105. package/src/lib/components/generic-card/index.d.ts +90 -0
  106. package/src/lib/components/generic-crud-table/index.d.ts +120 -0
  107. package/src/lib/components/generic-errormessage/index.d.ts +10 -0
  108. package/src/lib/components/generic-formly-fields/index.d.ts +22 -0
  109. package/src/lib/components/generic-loadingspinner/index.d.ts +9 -0
  110. package/src/lib/components/generic-search/index.d.ts +29 -0
  111. package/src/lib/components/generic-selector/index.d.ts +66 -0
  112. package/src/lib/components/generic-table/index.d.ts +60 -0
  113. package/src/lib/components/header-wrapper/index.d.ts +8 -0
  114. package/src/lib/components/icon-picker/index.d.ts +23 -0
  115. package/src/lib/components/input-switch/index.d.ts +9 -0
  116. package/src/lib/components/input-with-icon/index.d.ts +10 -0
  117. package/src/lib/components/label-type/index.d.ts +19 -0
  118. package/src/lib/components/odata-query-builder/index.d.ts +81 -0
  119. package/src/lib/components/repeat/index.d.ts +17 -0
  120. package/src/lib/components/sidebar-cards/index.d.ts +18 -0
  121. package/src/lib/components/sidebar-toggles/index.d.ts +18 -0
  122. package/src/lib/components/tabs/index.d.ts +10 -0
  123. package/src/lib/components/tag-type/index.d.ts +27 -0
  124. package/src/lib/components/text-editor/index.d.ts +9 -0
  125. package/src/lib/components/wrappers/index.d.ts +24 -0
  126. package/src/lib/directives/index.d.ts +23 -0
  127. package/src/lib/pipes/index.d.ts +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-icon-picker.mjs","sources":["../../../projects/core/src/lib/components/icon-picker/icon-picker.type.ts","../../../projects/core/src/lib/components/icon-picker/elite.framework-ng.core-src-lib-components-icon-picker.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\n\n@Component({\n selector: 'formly-field-icon-picker',\n imports:[FormsModule,CommonModule,DialogModule,ReactiveFormsModule,ButtonModule],\n template: `\n <div class=\"relative inline-block\">\n <!-- Toggle Button -->\n <button type=\"button\" class=\"px-2 py-1 border rounded shadow-sm bg-white dark:bg-gray-800 dark:border-gray-600\"\n (click)=\"dropdownOpen = !dropdownOpen\">\n <i [class]=\"formControl.value || 'fa-solid fa-circle-half-stroke'\" class=\"text-lg\"></i>\n <i class=\"fas fa-caret-down ml-1 text-xs\"></i>\n </button>\n\n <!-- Dropdown -->\n <div *ngIf=\"dropdownOpen\"\n class=\"absolute z-50 mt-2 w-72 rounded-md border border-gray-300 shadow-lg bg-white dark:bg-gray-800 dark:border-gray-600\">\n\n <!-- Header -->\n <div class=\"flex items-center justify-between px-2 py-1 border-b dark:border-gray-600\">\n <button (click)=\"prevPage()\" class=\"p-1 hover:text-blue-600\" [disabled]=\"page === 1\">\n <i class=\"fas fa-arrow-left\"></i>\n </button>\n <span class=\"text-xs text-gray-600 dark:text-gray-300\">Page {{ page }} / {{ totalPages }}</span>\n <button (click)=\"nextPage()\" class=\"p-1 hover:text-blue-600\" [disabled]=\"page === totalPages\">\n <i class=\"fas fa-arrow-right\"></i>\n </button>\n </div>\n\n <!-- Search -->\n <div class=\"p-2\">\n <input\n type=\"text\"\n placeholder=\"Search icon\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearch()\"\n class=\"w-full px-2 py-1 text-sm border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white\"\n />\n </div>\n\n <!-- Icon Grid -->\n <div class=\"grid grid-cols-4 gap-2 p-2 max-h-56 overflow-y-auto\">\n <button\n *ngFor=\"let icon of pagedIcons\"\n (click)=\"selectIcon(icon)\"\n class=\"flex items-center justify-center h-10 w-10 border rounded hover:bg-gray-100 dark:hover:bg-gray-700\"\n [ngClass]=\"{ 'ring-2 ring-blue-500': formControl.value === icon }\"\n >\n <i [class]=\"icon\" class=\"text-lg\"></i>\n </button>\n </div>\n\n <!-- Footer -->\n <div class=\"px-2 py-1 text-xs text-gray-500 dark:text-gray-400 border-t dark:border-gray-600\">\n {{ start + 1 }} - {{ end }} of {{ filteredIcons.length }}\n </div>\n </div>\n </div>\n\n `\n})\n\nexport class IconPickerComponent extends FieldType{\n dropdownOpen = false;\n searchQuery = '';\n page = 1;\n pageSize = 16;\n\n icons: string[] = [\n 'fa-solid fa-box',\n 'fa-solid fa-layer-group',\n 'fa-solid fa-table-columns',\n 'fa-solid fa-database',\n 'fa-solid fa-arrow-left',\n 'fa-solid fa-arrow-right',\n 'fa-solid fa-arrow-down',\n 'fa-solid fa-arrow-up',\n 'fa-solid fa-trash',\n 'fa-solid fa-gear',\n 'fa-solid fa-circle-check',\n 'fa-solid fa-circle-xmark',\n 'fa-solid fa-pen',\n 'fa-solid fa-copy',\n 'fa-solid fa-share',\n 'fa-solid fa-upload',\n 'fa-solid fa-download',\n 'fa-solid fa-image',\n 'fa-solid fa-chart-pie',\n // Add more FontAwesome Pro icons\n ];\n\n get filteredIcons() {\n if (!this.searchQuery) return this.icons;\n return this.icons.filter(icon =>\n icon.toLowerCase().includes(this.searchQuery.toLowerCase())\n );\n }\n\n get totalPages() {\n return Math.ceil(this.filteredIcons.length / this.pageSize);\n }\n\n get start() {\n return (this.page - 1) * this.pageSize;\n }\n\n get end() {\n return Math.min(this.start + this.pageSize, this.filteredIcons.length);\n }\n\n get pagedIcons() {\n return this.filteredIcons.slice(this.start, this.end);\n }\n\n onSearch() {\n this.page = 1;\n }\n\n selectIcon(icon: string) {\n this.formControl.setValue(icon);\n this.dropdownOpen = false;\n }\n\n nextPage() {\n if (this.page < this.totalPages) this.page++;\n }\n\n prevPage() {\n if (this.page > 1) this.page--;\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { FieldType, FormlyAttributes } from '@ngx-formly/core';
4
+ import * as i1 from '@angular/common';
5
+ import { CommonModule } from '@angular/common';
6
+ import { ToggleSwitch } from 'primeng/toggleswitch';
7
+ import * as i2 from '@angular/forms';
8
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
9
+ import * as i4 from '@ngx-translate/core';
10
+ import { TranslateModule } from '@ngx-translate/core';
11
+ import * as i3 from 'primeng/tooltip';
12
+ import { TooltipModule } from 'primeng/tooltip';
13
+
14
+ class InputSwitchTypeComponent extends FieldType {
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InputSwitchTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: InputSwitchTypeComponent, isStandalone: true, selector: "formly-field-primeng-input-switch", usesInheritance: true, ngImport: i0, template: `
17
+ <!-- border border-gray-300 -->
18
+ <div class="flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1"
19
+ style=" border-radius: var(--p-inputtext-border-radius);">
20
+
21
+ <label [for]="id" class="font-bold text-lg text-gray-800">
22
+ {{ (to.label ?? '') | translate }}
23
+
24
+ <span *ngIf="to.required" class="text-red-500">*</span>
25
+ </label>
26
+
27
+ <p-toggleSwitch
28
+ [formControl]="formControl"
29
+ [formlyAttributes]="field"
30
+ [pTooltip]="field.props['tooltip']"
31
+ [styleClass]="''"
32
+ [inputId]="id"
33
+
34
+ ></p-toggleSwitch>
35
+
36
+
37
+ <!-- <label [for]="id" class="font-bold text-lg text-gray-800 mr-2 whitespace-nowrap">
38
+ {{ (to.label ?? '') | translate}}
39
+ </label> -->
40
+ </div>
41
+ <!-- [style]="to.['style']" -->
42
+ <!-- [disabled]="to.disabled ?? false" -->
43
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["styleClass", "tabindex", "inputId", "readonly", "trueValue", "falseValue", "ariaLabel", "size", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InputSwitchTypeComponent, decorators: [{
46
+ type: Component,
47
+ args: [{
48
+ selector: 'formly-field-primeng-input-switch',
49
+ standalone: true,
50
+ imports: [CommonModule,
51
+ ReactiveFormsModule,
52
+ FormsModule,
53
+ ToggleSwitch,
54
+ FormlyAttributes,
55
+ TranslateModule,
56
+ TooltipModule],
57
+ template: `
58
+ <!-- border border-gray-300 -->
59
+ <div class="flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1"
60
+ style=" border-radius: var(--p-inputtext-border-radius);">
61
+
62
+ <label [for]="id" class="font-bold text-lg text-gray-800">
63
+ {{ (to.label ?? '') | translate }}
64
+
65
+ <span *ngIf="to.required" class="text-red-500">*</span>
66
+ </label>
67
+
68
+ <p-toggleSwitch
69
+ [formControl]="formControl"
70
+ [formlyAttributes]="field"
71
+ [pTooltip]="field.props['tooltip']"
72
+ [styleClass]="''"
73
+ [inputId]="id"
74
+
75
+ ></p-toggleSwitch>
76
+
77
+
78
+ <!-- <label [for]="id" class="font-bold text-lg text-gray-800 mr-2 whitespace-nowrap">
79
+ {{ (to.label ?? '') | translate}}
80
+ </label> -->
81
+ </div>
82
+ <!-- [style]="to.['style']" -->
83
+ <!-- [disabled]="to.disabled ?? false" -->
84
+ `,
85
+ changeDetection: ChangeDetectionStrategy.OnPush,
86
+ }]
87
+ }] });
88
+
89
+ /**
90
+ * Generated bundle index. Do not edit.
91
+ */
92
+
93
+ export { InputSwitchTypeComponent };
94
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-input-switch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-input-switch.mjs","sources":["../../../projects/core/src/lib/components/input-switch/input-switch.type.ts","../../../projects/core/src/lib/components/input-switch/elite.framework-ng.core-src-lib-components-input-switch.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FieldType, FieldTypeConfig, FormlyAttributes } from '@ngx-formly/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToggleSwitch } from 'primeng/toggleswitch';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'formly-field-primeng-input-switch',\r\n standalone: true,\r\n imports: [CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ToggleSwitch,\r\n FormlyAttributes,\r\n TranslateModule,\r\n TooltipModule],\r\n template: `\r\n <!-- border border-gray-300 -->\r\n <div class=\"flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1\"\r\n style=\" border-radius: var(--p-inputtext-border-radius);\">\r\n\r\n <label [for]=\"id\" class=\"font-bold text-lg text-gray-800\">\r\n {{ (to.label ?? '') | translate }}\r\n\r\n <span *ngIf=\"to.required\" class=\"text-red-500\">*</span>\r\n </label>\r\n\r\n <p-toggleSwitch\r\n [formControl]=\"formControl\"\r\n [formlyAttributes]=\"field\"\r\n [pTooltip]=\"field.props['tooltip']\"\r\n [styleClass]=\"''\"\r\n [inputId]=\"id\"\r\n\r\n ></p-toggleSwitch>\r\n\r\n\r\n <!-- <label [for]=\"id\" class=\"font-bold text-lg text-gray-800 mr-2 whitespace-nowrap\">\r\n {{ (to.label ?? '') | translate}}\r\n </label> -->\r\n</div>\r\n <!-- [style]=\"to.['style']\" -->\r\n <!-- [disabled]=\"to.disabled ?? false\" -->\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class InputSwitchTypeComponent extends FieldType<FieldTypeConfig> {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { Component } from '@angular/core';
4
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
5
+ import * as i1 from '@ngx-formly/core';
6
+ import { FieldType, FormlyModule } from '@ngx-formly/core';
7
+
8
+ class InputWithIconType extends FieldType {
9
+ get type() {
10
+ return this.to.type || 'text';
11
+ }
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InputWithIconType, deps: null, target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: InputWithIconType, isStandalone: true, selector: "formly-field-input-with-icon", usesInheritance: true, ngImport: i0, template: `
14
+ <div class="relative">
15
+ <!-- [formControl]="formControl" -->
16
+ <input
17
+ [type]="type"
18
+
19
+ [formlyAttributes]="field"
20
+ class="w-full rounded-xl border border-gray-200 bg-gray-50 pl-12 pr-4 py-3 text-sm focus:border-primary focus:ring-2 focus:ring-blue-100 transition-all"
21
+ [placeholder]="to.placeholder"
22
+ [disabled]="to.disabled ? true : false"
23
+ />
24
+ <i class="{{ to['icon'] }} absolute left-4 top-1/2 -translate-y-1/2 text-gray-400 text-base"></i>
25
+ </div>
26
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i1.LegacyFormlyAttributes, selector: "[formlyAttributes]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InputWithIconType, decorators: [{
29
+ type: Component,
30
+ args: [{
31
+ selector: 'formly-field-input-with-icon',
32
+ imports: [FormlyModule, ReactiveFormsModule, CommonModule, FormsModule],
33
+ template: `
34
+ <div class="relative">
35
+ <!-- [formControl]="formControl" -->
36
+ <input
37
+ [type]="type"
38
+
39
+ [formlyAttributes]="field"
40
+ class="w-full rounded-xl border border-gray-200 bg-gray-50 pl-12 pr-4 py-3 text-sm focus:border-primary focus:ring-2 focus:ring-blue-100 transition-all"
41
+ [placeholder]="to.placeholder"
42
+ [disabled]="to.disabled ? true : false"
43
+ />
44
+ <i class="{{ to['icon'] }} absolute left-4 top-1/2 -translate-y-1/2 text-gray-400 text-base"></i>
45
+ </div>
46
+ `,
47
+ }]
48
+ }] });
49
+
50
+ /**
51
+ * Generated bundle index. Do not edit.
52
+ */
53
+
54
+ export { InputWithIconType };
55
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-input-with-icon.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-input-with-icon.mjs","sources":["../../../projects/core/src/lib/components/input-with-icon/input-with-icon.type.ts","../../../projects/core/src/lib/components/input-with-icon/elite.framework-ng.core-src-lib-components-input-with-icon.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-field-input-with-icon',\n imports:[FormlyModule,ReactiveFormsModule,CommonModule,FormsModule],\n template: `\n <div class=\"relative\">\n <!-- [formControl]=\"formControl\" -->\n <input\n [type]=\"type\"\n\n [formlyAttributes]=\"field\"\n class=\"w-full rounded-xl border border-gray-200 bg-gray-50 pl-12 pr-4 py-3 text-sm focus:border-primary focus:ring-2 focus:ring-blue-100 transition-all\"\n [placeholder]=\"to.placeholder\"\n [disabled]=\"to.disabled ? true : false\"\n />\n <i class=\"{{ to['icon'] }} absolute left-4 top-1/2 -translate-y-1/2 text-gray-400 text-base\"></i>\n </div>\n `,\n})\nexport class InputWithIconType extends FieldType {\n get type() {\n return this.to.type || 'text';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAuBM,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAC9C,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,MAAM;;uGAFpB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAflB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAdQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,YAAY,8BAAC,WAAW,EAAA,CAAA,EAAA,CAAA;;2FAgBvD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,OAAO,EAAC,CAAC,YAAY,EAAC,mBAAmB,EAAC,YAAY,EAAC,WAAW,CAAC;AACnE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,EAAA,CAAA;AACF,iBAAA;;;ACtBD;;AAEG;;;;"}
@@ -0,0 +1,112 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component } from '@angular/core';
3
+ import { FieldType } from '@ngx-formly/core';
4
+
5
+ class LabelTypeComponent extends FieldType {
6
+ get displayValue() {
7
+ const key = this.key;
8
+ const val = this.model?.[key];
9
+ const row = this.model ?? {};
10
+ // تحقق من أن formatter دالة قبل الاستدعاء
11
+ const formatter = this.props['formatter'];
12
+ if (formatter && typeof formatter === 'function') {
13
+ try {
14
+ return formatter(row, val);
15
+ }
16
+ catch (e) {
17
+ console.warn('Formatter error:', e);
18
+ return val ?? '--';
19
+ }
20
+ }
21
+ return val ?? '--';
22
+ }
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: LabelTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: LabelTypeComponent, isStandalone: true, selector: "formly-label-type", usesInheritance: true, ngImport: i0, template: `
25
+ <div [class]="to['className'] || 'text-gray-700 font-bold'">
26
+ <span [innerHTML]="displayValue" ></span>
27
+ <!-- <span {}></span> -->
28
+ </div>
29
+ `, isInline: true });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: LabelTypeComponent, decorators: [{
32
+ type: Component,
33
+ args: [{
34
+ selector: 'formly-label-type',
35
+ standalone: true,
36
+ template: `
37
+ <div [class]="to['className'] || 'text-gray-700 font-bold'">
38
+ <span [innerHTML]="displayValue" ></span>
39
+ <!-- <span {}></span> -->
40
+ </div>
41
+ `,
42
+ }]
43
+ }] });
44
+
45
+ class ClickableLabelTypeComponent extends FieldType {
46
+ onCellLeave(col, row, event) {
47
+ event.stopPropagation(); // يمنع اختيار الصف
48
+ col.onCellMouseLeave?.(row, event); // <--- استدعاء الدالة المخصصة للمغادرة
49
+ }
50
+ onCellHover(col, row, event) {
51
+ event.stopPropagation(); // يمنع اختيار الصف
52
+ col.onCellMouseEnter?.(row, event); // <--- استدعاء الدالة المخصصة للتحويم
53
+ }
54
+ handleCellClick(col, model, event) {
55
+ event.stopPropagation();
56
+ col?.clickAction?.(model, event);
57
+ }
58
+ getCellValue(col, model) {
59
+ const field = this.key;
60
+ const pipeFn = this.props['pipe'];
61
+ return pipeFn ? pipeFn(model[col.key]) : model[field];
62
+ }
63
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ClickableLabelTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
64
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: ClickableLabelTypeComponent, isStandalone: true, selector: "formly-clickable-label-type", usesInheritance: true, ngImport: i0, template: `
65
+
66
+ <a class="cursor-pointer hover:underline hover:text-blue-600 font-bold"
67
+ (click)="handleCellClick(props,model, $event)"
68
+ (mouseenter)="props['hoverable'] && onCellHover(props, model, $event)"
69
+ (mouseleave)="props['hoverable'] && onCellLeave(props, model, $event)"
70
+ >
71
+ @if(props['formatter']){
72
+ <span [innerHTML]="props['formatter'](model)"></span>
73
+ }
74
+ @else{
75
+ {{ getCellValue(props, model) }}
76
+ }
77
+
78
+
79
+ </a>
80
+ `, isInline: true });
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ClickableLabelTypeComponent, decorators: [{
83
+ type: Component,
84
+ args: [{
85
+ selector: 'formly-clickable-label-type',
86
+ standalone: true,
87
+ template: `
88
+
89
+ <a class="cursor-pointer hover:underline hover:text-blue-600 font-bold"
90
+ (click)="handleCellClick(props,model, $event)"
91
+ (mouseenter)="props['hoverable'] && onCellHover(props, model, $event)"
92
+ (mouseleave)="props['hoverable'] && onCellLeave(props, model, $event)"
93
+ >
94
+ @if(props['formatter']){
95
+ <span [innerHTML]="props['formatter'](model)"></span>
96
+ }
97
+ @else{
98
+ {{ getCellValue(props, model) }}
99
+ }
100
+
101
+
102
+ </a>
103
+ `,
104
+ }]
105
+ }] });
106
+
107
+ /**
108
+ * Generated bundle index. Do not edit.
109
+ */
110
+
111
+ export { ClickableLabelTypeComponent, LabelTypeComponent };
112
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-label-type.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-label-type.mjs","sources":["../../../projects/core/src/lib/components/label-type/label-type.ts","../../../projects/core/src/lib/components/label-type/clickable-label-type.ts","../../../projects/core/src/lib/components/label-type/elite.framework-ng.core-src-lib-components-label-type.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-label-type',\n standalone: true,\n template: `\n <div [class]=\"to['className'] || 'text-gray-700 font-bold'\">\n <span [innerHTML]=\"displayValue\" ></span>\n <!-- <span {}></span> -->\n </div>\n `,\n})\nexport class LabelTypeComponent extends FieldType {\nget displayValue(): any {\n const key = this.key as string;\n const val = this.model?.[key] ;\n const row = this.model ?? {};\n\n // تحقق من أن formatter دالة قبل الاستدعاء\n const formatter = this.props['formatter'];\n if (formatter && typeof formatter === 'function') {\n\n try {\n return formatter(row, val);\n } catch (e) {\n console.warn('Formatter error:', e);\n return val ?? '--';\n }\n }\n\n\n\n return val ?? '--';\n}\n\n\n\n}\n","\r\nimport { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-clickable-label-type',\r\n standalone: true,\r\n template: `\r\n\r\n<a class=\"cursor-pointer hover:underline hover:text-blue-600 font-bold\"\r\n (click)=\"handleCellClick(props,model, $event)\"\r\n (mouseenter)=\"props['hoverable'] && onCellHover(props, model, $event)\"\r\n (mouseleave)=\"props['hoverable'] && onCellLeave(props, model, $event)\"\r\n >\r\n @if(props['formatter']){\r\n <span [innerHTML]=\"props['formatter'](model)\"></span>\r\n }\r\n @else{\r\n {{ getCellValue(props, model) }}\r\n }\r\n\r\n\r\n </a>\r\n `,\r\n})\r\nexport class ClickableLabelTypeComponent extends FieldType {\r\n onCellLeave(col: any, row: any, event: MouseEvent) { // <--- تعديل هنا\r\n event.stopPropagation(); // يمنع اختيار الصف\r\n col.onCellMouseLeave?.(row, event); // <--- استدعاء الدالة المخصصة للمغادرة\r\n }\r\n onCellHover(col: any, row: any, event: MouseEvent) { // <--- تعديل هنا\r\n event.stopPropagation(); // يمنع اختيار الصف\r\n col.onCellMouseEnter?.(row, event); // <--- استدعاء الدالة المخصصة للتحويم\r\n }\r\n\r\n handleCellClick(col: any, model: any, event: MouseEvent) {\r\n event.stopPropagation();\r\n col?.clickAction?.(model, event);\r\n }\r\n\r\ngetCellValue(col: any, model: any) {\r\n const field = this.key as string;\r\n const pipeFn = this.props['pipe'] as ((v: any) => any) | undefined;\r\n return pipeFn ? pipeFn(model[col.key as string]) : model[field];\r\n}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAaM,MAAO,kBAAmB,SAAQ,SAAS,CAAA;AACjD,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;;QAG5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AACzC,QAAA,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AAEhD,YAAA,IAAI;AACF,gBAAA,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;;YAC1B,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBACnC,OAAO,GAAG,IAAI,IAAI;;;QAMtB,OAAO,GAAG,IAAI,IAAI;;uGApBP,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPnB;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;AAKT,EAAA,CAAA;AACF,iBAAA;;;ACaK,MAAO,2BAA4B,SAAQ,SAAS,CAAA;AACtD,IAAA,WAAW,CAAC,GAAQ,EAAE,GAAQ,EAAE,KAAiB,EAAA;AACjD,QAAA,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,GAAG,CAAC,gBAAgB,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;;AAErC,IAAA,WAAW,CAAC,GAAQ,EAAE,GAAQ,EAAE,KAAiB,EAAA;AAClD,QAAA,KAAK,CAAC,eAAe,EAAE,CAAC;QACrB,GAAG,CAAC,gBAAgB,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;;AAGtC,IAAA,eAAe,CAAC,GAAQ,EAAE,KAAU,EAAE,KAAiB,EAAA;QACpD,KAAK,CAAC,eAAe,EAAE;QACvB,GAAG,EAAE,WAAW,GAAG,KAAK,EAAE,KAAK,CAAC;;IAGpC,YAAY,CAAC,GAAQ,EAAE,KAAU,EAAA;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAc;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAkC;QAClE,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;;uGAlBpD,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlB5B,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBArBvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;ACxBD;;AAEG;;;;"}
@@ -0,0 +1,297 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Output, Input, Component } from '@angular/core';
3
+ import { FormGroup } from '@angular/forms';
4
+ import { FormlyForm } from '@ngx-formly/core';
5
+ import * as i1 from '@angular/common';
6
+ import { CommonModule } from '@angular/common';
7
+
8
+ class ODataQueryBuilderComponent {
9
+ set entityFields(fields) {
10
+ this._entityFields = fields || [];
11
+ this.updateFieldOptions();
12
+ }
13
+ get entityFields() {
14
+ return this._entityFields;
15
+ }
16
+ _entityFields = [];
17
+ queryChange = new EventEmitter();
18
+ form = new FormGroup({});
19
+ model = {
20
+ conditionGroups: [
21
+ {
22
+ operator: 'and',
23
+ conditions: []
24
+ }
25
+ ],
26
+ orderBy: [],
27
+ groupBy: [],
28
+ top: null,
29
+ skip: null
30
+ };
31
+ fields = [
32
+ {
33
+ key: 'conditionGroups',
34
+ type: 'repeat',
35
+ props: {
36
+ addText: 'Add Condition Group',
37
+ required: true
38
+ },
39
+ fieldArray: {
40
+ fieldGroup: [
41
+ {
42
+ key: 'operator',
43
+ type: 'select',
44
+ props: {
45
+ label: 'Group Operator',
46
+ required: true,
47
+ options: [
48
+ { value: 'and', label: 'AND' },
49
+ { value: 'or', label: 'OR' }
50
+ ]
51
+ }
52
+ },
53
+ {
54
+ key: 'conditions',
55
+ type: 'repeat',
56
+ props: {
57
+ addText: 'Add Condition',
58
+ required: true
59
+ },
60
+ fieldArray: {
61
+ fieldGroup: [
62
+ {
63
+ key: 'field',
64
+ type: 'select',
65
+ props: {
66
+ label: 'Field',
67
+ required: true,
68
+ options: []
69
+ }
70
+ },
71
+ {
72
+ key: 'operator',
73
+ type: 'select',
74
+ props: {
75
+ label: 'Operator',
76
+ required: true,
77
+ options: [
78
+ { value: 'eq', label: 'Equals' },
79
+ { value: 'ne', label: 'Not Equals' },
80
+ { value: 'gt', label: 'Greater Than' },
81
+ { value: 'ge', label: 'Greater or Equal' },
82
+ { value: 'lt', label: 'Less Than' },
83
+ { value: 'le', label: 'Less or Equal' },
84
+ { value: 'contains', label: 'Contains' },
85
+ { value: 'startswith', label: 'Starts With' },
86
+ { value: 'endswith', label: 'Ends With' }
87
+ ]
88
+ }
89
+ },
90
+ {
91
+ key: 'value',
92
+ type: 'input',
93
+ props: {
94
+ label: 'Value',
95
+ required: true
96
+ },
97
+ expressions: {
98
+ 'props.type': (field) => {
99
+ const model = field.model;
100
+ if (!model?.field)
101
+ return 'string';
102
+ const selectedField = this.entityFields.find(f => f.value === model.field);
103
+ return selectedField?.type || 'string';
104
+ }
105
+ }
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ },
113
+ {
114
+ key: 'orderBy',
115
+ type: 'repeat',
116
+ props: {
117
+ addText: 'Add Order By'
118
+ },
119
+ fieldArray: {
120
+ fieldGroup: [
121
+ {
122
+ key: 'field',
123
+ type: 'select',
124
+ props: {
125
+ label: 'Field',
126
+ required: true,
127
+ options: []
128
+ }
129
+ },
130
+ {
131
+ key: 'direction',
132
+ type: 'select',
133
+ props: {
134
+ label: 'Direction',
135
+ required: true,
136
+ options: [
137
+ { value: 'asc', label: 'Ascending' },
138
+ { value: 'desc', label: 'Descending' }
139
+ ]
140
+ }
141
+ }
142
+ ]
143
+ }
144
+ },
145
+ {
146
+ key: 'groupBy',
147
+ type: 'repeat',
148
+ props: {
149
+ addText: 'Add Group By'
150
+ },
151
+ fieldArray: {
152
+ fieldGroup: [
153
+ {
154
+ key: 'field',
155
+ type: 'select',
156
+ props: {
157
+ label: 'Field',
158
+ required: true,
159
+ options: []
160
+ }
161
+ }
162
+ ]
163
+ }
164
+ },
165
+ {
166
+ key: 'top',
167
+ type: 'input',
168
+ props: {
169
+ label: 'Top',
170
+ type: 'number',
171
+ min: 1
172
+ }
173
+ },
174
+ {
175
+ key: 'skip',
176
+ type: 'input',
177
+ props: {
178
+ label: 'Skip',
179
+ type: 'number',
180
+ min: 0
181
+ }
182
+ }
183
+ ];
184
+ constructor() { }
185
+ updateFieldOptions() {
186
+ const fieldOptions = this.entityFields.map(f => ({ value: f.value, label: f.label }));
187
+ // Update conditions field options in all groups
188
+ const conditionGroupsField = this.fields.find(f => f.key === 'conditionGroups');
189
+ if (conditionGroupsField && conditionGroupsField.fieldArray?.fieldGroup) {
190
+ const conditionsField = conditionGroupsField.fieldArray.fieldGroup.find(f => f.key === 'conditions');
191
+ if (conditionsField && conditionsField.fieldArray?.fieldGroup) {
192
+ const fieldSelect = conditionsField.fieldArray.fieldGroup.find(f => f.key === 'field');
193
+ if (fieldSelect) {
194
+ fieldSelect.props.options = fieldOptions;
195
+ }
196
+ }
197
+ }
198
+ // Update orderBy field options
199
+ const orderByField = this.fields.find(f => f.key === 'orderBy');
200
+ if (orderByField && orderByField.fieldArray?.fieldGroup) {
201
+ const fieldSelect = orderByField.fieldArray.fieldGroup.find(f => f.key === 'field');
202
+ if (fieldSelect) {
203
+ fieldSelect.props.options = fieldOptions;
204
+ }
205
+ }
206
+ // Update groupBy field options
207
+ const groupByField = this.fields.find(f => f.key === 'groupBy');
208
+ if (groupByField && groupByField.fieldArray?.fieldGroup) {
209
+ const fieldSelect = groupByField.fieldArray.fieldGroup.find(f => f.key === 'field');
210
+ if (fieldSelect) {
211
+ fieldSelect.props.options = fieldOptions;
212
+ }
213
+ }
214
+ }
215
+ buildQuery() {
216
+ let queryParts = [];
217
+ // Handle condition groups
218
+ if (this.model.conditionGroups?.length > 0) {
219
+ const groupFilters = this.model.conditionGroups
220
+ .filter((group) => group.conditions?.length > 0)
221
+ .map((group) => {
222
+ const conditionParts = group.conditions
223
+ .filter((cond) => cond.field && cond.operator && cond.value !== undefined && cond.value !== null)
224
+ .map((cond) => {
225
+ const field = this.entityFields.find(f => f.value === cond.field);
226
+ let value = cond.value;
227
+ if (field?.type === 'string') {
228
+ value = `'${String(value).replace(/'/g, "''")}'`; // Escape single quotes
229
+ }
230
+ else if (field?.type === 'date' && value) {
231
+ value = new Date(value).toISOString();
232
+ }
233
+ else if (field?.type === 'boolean') {
234
+ value = value ? 'true' : 'false';
235
+ }
236
+ return `${cond.field} ${cond.operator} ${value}`;
237
+ });
238
+ if (conditionParts.length > 0) {
239
+ return conditionParts.length > 1
240
+ ? `(${conditionParts.join(` ${group.operator} `)})`
241
+ : conditionParts[0];
242
+ }
243
+ return null;
244
+ })
245
+ .filter(Boolean);
246
+ if (groupFilters.length > 0) {
247
+ queryParts.push(`$filter=${groupFilters.join(' and ')}`);
248
+ }
249
+ }
250
+ // Handle order by
251
+ if (this.model.orderBy?.length > 0) {
252
+ const orderParts = this.model.orderBy
253
+ .filter((order) => order.field && order.direction)
254
+ .map((order) => `${order.field} ${order.direction}`);
255
+ if (orderParts.length > 0) {
256
+ queryParts.push(`$orderby=${orderParts.join(', ')}`);
257
+ }
258
+ }
259
+ // Handle group by
260
+ if (this.model.groupBy?.length > 0) {
261
+ const groupParts = this.model.groupBy
262
+ .filter((group) => group.field)
263
+ .map((group) => group.field);
264
+ if (groupParts.length > 0) {
265
+ queryParts.push(`$groupby=${groupParts.join(',')}`);
266
+ }
267
+ }
268
+ // Handle top
269
+ if (this.model.top) {
270
+ queryParts.push(`$top=${this.model.top}`);
271
+ }
272
+ // Handle skip
273
+ if (this.model.skip) {
274
+ queryParts.push(`$skip=${this.model.skip}`);
275
+ }
276
+ const query = queryParts.join('&');
277
+ this.queryChange.emit(query);
278
+ return query;
279
+ }
280
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ODataQueryBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
281
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: ODataQueryBuilderComponent, isStandalone: true, selector: "app-odata-query-builder", inputs: { entityFields: "entityFields" }, outputs: { queryChange: "queryChange" }, ngImport: i0, template: "<div class=\"p-4 bg-white rounded-lg shadow-md\">\r\n <h2 class=\"text-xl font-semibold mb-4 text-gray-800\">OData Query Builder</h2>\r\n\r\n <formly-form\r\n [form]=\"form\"\r\n [model]=\"model\"\r\n [fields]=\"fields\"\r\n class=\"space-y-4\"\r\n ></formly-form>\r\n\r\n <div class=\"mt-6 flex justify-end space-x-3\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Reset\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-outlined\"\r\n (click)=\"form.reset()\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Build Query\"\r\n icon=\"pi pi-cog\"\r\n (click)=\"buildQuery()\"\r\n ></button>\r\n </div>\r\n\r\n <div *ngIf=\"form.valid && form.dirty\" class=\"mt-6 p-4 bg-gray-50 rounded\">\r\n <h3 class=\"font-medium text-gray-700 mb-2\">Generated OData Query:</h3>\r\n <pre class=\"p-3 bg-gray-100 rounded text-sm overflow-x-auto\">{{ buildQuery() }}</pre>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] });
282
+ }
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ODataQueryBuilderComponent, decorators: [{
284
+ type: Component,
285
+ args: [{ selector: 'app-odata-query-builder', imports: [CommonModule, FormlyForm], template: "<div class=\"p-4 bg-white rounded-lg shadow-md\">\r\n <h2 class=\"text-xl font-semibold mb-4 text-gray-800\">OData Query Builder</h2>\r\n\r\n <formly-form\r\n [form]=\"form\"\r\n [model]=\"model\"\r\n [fields]=\"fields\"\r\n class=\"space-y-4\"\r\n ></formly-form>\r\n\r\n <div class=\"mt-6 flex justify-end space-x-3\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Reset\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-outlined\"\r\n (click)=\"form.reset()\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Build Query\"\r\n icon=\"pi pi-cog\"\r\n (click)=\"buildQuery()\"\r\n ></button>\r\n </div>\r\n\r\n <div *ngIf=\"form.valid && form.dirty\" class=\"mt-6 p-4 bg-gray-50 rounded\">\r\n <h3 class=\"font-medium text-gray-700 mb-2\">Generated OData Query:</h3>\r\n <pre class=\"p-3 bg-gray-100 rounded text-sm overflow-x-auto\">{{ buildQuery() }}</pre>\r\n </div>\r\n</div>\r\n" }]
286
+ }], ctorParameters: () => [], propDecorators: { entityFields: [{
287
+ type: Input
288
+ }], queryChange: [{
289
+ type: Output
290
+ }] } });
291
+
292
+ /**
293
+ * Generated bundle index. Do not edit.
294
+ */
295
+
296
+ export { ODataQueryBuilderComponent };
297
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-odata-query-builder.mjs.map