@es.framework/ng.ui.core 2.0.66 → 2.0.67

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 (174) hide show
  1. package/README.md +3 -3
  2. package/attachments/README.md +3 -3
  3. package/base-crud/README.md +3 -3
  4. package/breadcrumb/README.md +3 -3
  5. package/checkbox/README.md +3 -3
  6. package/collapsible/README.md +3 -3
  7. package/color-picker/README.md +3 -3
  8. package/column-settings-popover/README.md +3 -3
  9. package/custom-switch/README.md +3 -3
  10. package/datepicker/README.md +3 -3
  11. package/deactivation-reason/README.md +3 -3
  12. package/excel-import/README.md +3 -3
  13. package/fesm2022/es.framework-ng.ui.core-attachments.mjs +2 -2
  14. package/fesm2022/es.framework-ng.ui.core-attachments.mjs.map +1 -1
  15. package/fesm2022/es.framework-ng.ui.core-base-crud.mjs.map +1 -1
  16. package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs +110 -109
  17. package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs.map +1 -1
  18. package/fesm2022/es.framework-ng.ui.core-checkbox.mjs +54 -54
  19. package/fesm2022/es.framework-ng.ui.core-checkbox.mjs.map +1 -1
  20. package/fesm2022/es.framework-ng.ui.core-collapsible.mjs.map +1 -1
  21. package/fesm2022/es.framework-ng.ui.core-color-picker.mjs +44 -44
  22. package/fesm2022/es.framework-ng.ui.core-color-picker.mjs.map +1 -1
  23. package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs +2 -2
  24. package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs.map +1 -1
  25. package/fesm2022/es.framework-ng.ui.core-custom-switch.mjs.map +1 -1
  26. package/fesm2022/es.framework-ng.ui.core-datepicker.mjs +178 -178
  27. package/fesm2022/es.framework-ng.ui.core-datepicker.mjs.map +1 -1
  28. package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs +46 -46
  29. package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs.map +1 -1
  30. package/fesm2022/es.framework-ng.ui.core-excel-import.mjs.map +1 -1
  31. package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs +624 -624
  32. package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs.map +1 -1
  33. package/fesm2022/es.framework-ng.ui.core-form-button.mjs.map +1 -1
  34. package/fesm2022/es.framework-ng.ui.core-form-field.mjs +80 -80
  35. package/fesm2022/es.framework-ng.ui.core-form-field.mjs.map +1 -1
  36. package/fesm2022/es.framework-ng.ui.core-form-template.mjs.map +1 -1
  37. package/fesm2022/es.framework-ng.ui.core-formly-avatar-image.mjs.map +1 -1
  38. package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs +44 -44
  39. package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs.map +1 -1
  40. package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs +92 -92
  41. package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs.map +1 -1
  42. package/fesm2022/es.framework-ng.ui.core-formly-button.mjs +24 -24
  43. package/fesm2022/es.framework-ng.ui.core-formly-button.mjs.map +1 -1
  44. package/fesm2022/es.framework-ng.ui.core-formly-presets.mjs.map +1 -1
  45. package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs +366 -366
  46. package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs.map +1 -1
  47. package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs +16 -16
  48. package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs.map +1 -1
  49. package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs.map +1 -1
  50. package/fesm2022/es.framework-ng.ui.core-formly-ui.mjs.map +1 -1
  51. package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs +16 -16
  52. package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs.map +1 -1
  53. package/fesm2022/es.framework-ng.ui.core-generic-assets.mjs.map +1 -1
  54. package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs +38 -38
  55. package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs.map +1 -1
  56. package/fesm2022/es.framework-ng.ui.core-generic-button.mjs +2 -2
  57. package/fesm2022/es.framework-ng.ui.core-generic-button.mjs.map +1 -1
  58. package/fesm2022/es.framework-ng.ui.core-generic-card.mjs +2 -2
  59. package/fesm2022/es.framework-ng.ui.core-generic-card.mjs.map +1 -1
  60. package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs +12 -5
  61. package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
  62. package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs +2 -2
  63. package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs.map +1 -1
  64. package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs +2 -2
  65. package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs.map +1 -1
  66. package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs +2 -2
  67. package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs.map +1 -1
  68. package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs +64 -64
  69. package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs.map +1 -1
  70. package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs +2 -2
  71. package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs.map +1 -1
  72. package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs +68 -68
  73. package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs.map +1 -1
  74. package/fesm2022/es.framework-ng.ui.core-generic-report.mjs +4 -2
  75. package/fesm2022/es.framework-ng.ui.core-generic-report.mjs.map +1 -1
  76. package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs +518 -495
  77. package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs.map +1 -1
  78. package/fesm2022/es.framework-ng.ui.core-generic-search.mjs +2 -2
  79. package/fesm2022/es.framework-ng.ui.core-generic-search.mjs.map +1 -1
  80. package/fesm2022/es.framework-ng.ui.core-generic-selector.mjs.map +1 -1
  81. package/fesm2022/es.framework-ng.ui.core-generic-table.mjs +4 -4
  82. package/fesm2022/es.framework-ng.ui.core-generic-table.mjs.map +1 -1
  83. package/fesm2022/es.framework-ng.ui.core-generic-view.mjs +2 -2
  84. package/fesm2022/es.framework-ng.ui.core-generic-view.mjs.map +1 -1
  85. package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs +2 -2
  86. package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs.map +1 -1
  87. package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs +106 -106
  88. package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs.map +1 -1
  89. package/fesm2022/es.framework-ng.ui.core-input-switch.mjs +58 -58
  90. package/fesm2022/es.framework-ng.ui.core-input-switch.mjs.map +1 -1
  91. package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs +26 -26
  92. package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs.map +1 -1
  93. package/fesm2022/es.framework-ng.ui.core-input.mjs +64 -64
  94. package/fesm2022/es.framework-ng.ui.core-input.mjs.map +1 -1
  95. package/fesm2022/es.framework-ng.ui.core-label-type.mjs +16 -16
  96. package/fesm2022/es.framework-ng.ui.core-label-type.mjs.map +1 -1
  97. package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs +22 -22
  98. package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs.map +1 -1
  99. package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs +2 -2
  100. package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs.map +1 -1
  101. package/fesm2022/es.framework-ng.ui.core-query-type.mjs +14 -14
  102. package/fesm2022/es.framework-ng.ui.core-query-type.mjs.map +1 -1
  103. package/fesm2022/es.framework-ng.ui.core-radio.mjs +30 -30
  104. package/fesm2022/es.framework-ng.ui.core-radio.mjs.map +1 -1
  105. package/fesm2022/es.framework-ng.ui.core-repeat.mjs +354 -354
  106. package/fesm2022/es.framework-ng.ui.core-repeat.mjs.map +1 -1
  107. package/fesm2022/es.framework-ng.ui.core-select.mjs +84 -84
  108. package/fesm2022/es.framework-ng.ui.core-select.mjs.map +1 -1
  109. package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs +2 -2
  110. package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs.map +1 -1
  111. package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs +2 -2
  112. package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs.map +1 -1
  113. package/fesm2022/es.framework-ng.ui.core-tabs.mjs +14 -14
  114. package/fesm2022/es.framework-ng.ui.core-tabs.mjs.map +1 -1
  115. package/fesm2022/es.framework-ng.ui.core-tag-type.mjs +80 -80
  116. package/fesm2022/es.framework-ng.ui.core-tag-type.mjs.map +1 -1
  117. package/fesm2022/es.framework-ng.ui.core-text-editor.mjs.map +1 -1
  118. package/fesm2022/es.framework-ng.ui.core-textarea.mjs.map +1 -1
  119. package/fesm2022/es.framework-ng.ui.core-wrappers.mjs +118 -118
  120. package/fesm2022/es.framework-ng.ui.core-wrappers.mjs.map +1 -1
  121. package/fesm2022/es.framework-ng.ui.core.mjs +2 -2
  122. package/fesm2022/es.framework-ng.ui.core.mjs.map +1 -1
  123. package/filter-templates/README.md +3 -3
  124. package/form-button/README.md +3 -3
  125. package/form-field/README.md +3 -3
  126. package/form-template/README.md +3 -3
  127. package/formly-avatar-image/README.md +3 -3
  128. package/formly-avatar-label/README.md +3 -3
  129. package/formly-button/README.md +3 -3
  130. package/formly-button-selector/README.md +3 -3
  131. package/formly-presets/README.md +3 -3
  132. package/formly-prime-icon-picker/README.md +3 -3
  133. package/formly-split-button/README.md +3 -3
  134. package/formly-ui/README.md +3 -3
  135. package/formly-ui-all/README.md +3 -3
  136. package/formly-username-with-domain/README.md +3 -3
  137. package/generic-assets/README.md +3 -3
  138. package/generic-autocomplete/README.md +3 -3
  139. package/generic-button/README.md +3 -3
  140. package/generic-card/README.md +3 -3
  141. package/generic-crud-table/README.md +3 -3
  142. package/generic-dialog/README.md +3 -3
  143. package/generic-errormessage/README.md +3 -3
  144. package/generic-formly-fields/README.md +3 -3
  145. package/generic-loadingspinner/README.md +3 -3
  146. package/generic-report/README.md +3 -3
  147. package/generic-search/README.md +3 -3
  148. package/generic-search-advanced/README.md +3 -3
  149. package/generic-selector/README.md +3 -3
  150. package/generic-table/README.md +3 -3
  151. package/generic-view/README.md +3 -3
  152. package/header-wrapper/README.md +3 -3
  153. package/icon-picker/README.md +3 -3
  154. package/input/README.md +3 -3
  155. package/input-switch/README.md +3 -3
  156. package/input-with-icon/README.md +3 -3
  157. package/label-type/README.md +3 -3
  158. package/loading-skeletons/README.md +3 -3
  159. package/odata-query-builder/README.md +3 -3
  160. package/package.json +1 -1
  161. package/query-type/README.md +3 -3
  162. package/radio/README.md +3 -3
  163. package/repeat/README.md +3 -3
  164. package/select/README.md +3 -3
  165. package/sidebar-cards/README.md +3 -3
  166. package/sidebar-toggles/README.md +3 -3
  167. package/styles.css +0 -0
  168. package/tabs/README.md +3 -3
  169. package/tag-type/README.md +3 -3
  170. package/text-editor/README.md +3 -3
  171. package/textarea/README.md +3 -3
  172. package/types/es.framework-ng.ui.core-generic-crud-table.d.ts +1 -0
  173. package/types/es.framework-ng.ui.core-generic-search-advanced.d.ts +5 -2
  174. package/wrappers/README.md +3 -3
@@ -18,11 +18,11 @@ class GenericErrormessage {
18
18
  /** نص رسالة الخطأ */
19
19
  text = '';
20
20
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericErrormessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericErrormessage, isStandalone: true, selector: "lib-generic-errormessage", inputs: { text: "text" }, ngImport: i0, template: " \r\n@if (text) {\r\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\r\n}", styles: [""] });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericErrormessage, isStandalone: true, selector: "lib-generic-errormessage", inputs: { text: "text" }, ngImport: i0, template: " \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}", styles: [""] });
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericErrormessage, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 'lib-generic-errormessage', imports: [], template: " \r\n@if (text) {\r\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\r\n}" }]
25
+ args: [{ selector: 'lib-generic-errormessage', imports: [], template: " \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}" }]
26
26
  }], propDecorators: { text: [{
27
27
  type: Input
28
28
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-generic-errormessage.mjs","sources":["../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage-module.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.html","../../../../libs/ng.ui.core/generic-errormessage/src/es.framework-ng.ui.core-generic-errormessage.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class GenericErrormessageModule {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'lib-generic-errormessage',\r\n imports: [],\r\n templateUrl: './generic-errormessage.html',\r\n styleUrl: './generic-errormessage.css'\r\n})\r\nexport class GenericErrormessage {\r\n /** نص رسالة الخطأ */\r\n @Input() text: string = '';\r\n}\r\n"," \r\n@if (text) {\r\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,mBAAmB,CAAA;;IAErB,IAAI,GAAW,EAAE;uGAFf,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8GCThC,yIAGC,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDMY,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,WAC1B,EAAE,EAAA,QAAA,EAAA,yIAAA,EAAA;;sBAMX;;;AEXH;;AAEG;;;;"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-generic-errormessage.mjs","sources":["../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage-module.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.html","../../../../libs/ng.ui.core/generic-errormessage/src/es.framework-ng.ui.core-generic-errormessage.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericErrormessageModule {}\n","import { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'lib-generic-errormessage',\n imports: [],\n templateUrl: './generic-errormessage.html',\n styleUrl: './generic-errormessage.css'\n})\nexport class GenericErrormessage {\n /** نص رسالة الخطأ */\n @Input() text: string = '';\n}\n"," \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,mBAAmB,CAAA;;IAErB,IAAI,GAAW,EAAE;uGAFf,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8GCThC,mIAGC,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDMY,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,WAC1B,EAAE,EAAA,QAAA,EAAA,mIAAA,EAAA;;sBAMX;;;AEXH;;AAEG;;;;"}
@@ -36,7 +36,7 @@ class GenericFormlyFields {
36
36
  return field.templateOptions?.['icon'] || null;
37
37
  }
38
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericFormlyFields, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericFormlyFields, isStandalone: true, selector: "lib-generic-formly-fields", inputs: { form: "form", fields: "fields", model: "model", options: "options" }, ngImport: i0, template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\r\n<formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n</formly-form>\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericFormlyFields, isStandalone: true, selector: "lib-generic-formly-fields", inputs: { form: "form", fields: "fields", model: "model", options: "options" }, ngImport: i0, template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] });
40
40
  }
41
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericFormlyFields, decorators: [{
42
42
  type: Component,
@@ -44,7 +44,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
44
44
  ReactiveFormsModule,
45
45
  FormsModule,
46
46
  FormlyForm
47
- ], template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\r\n<formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n</formly-form>\r\n" }]
47
+ ], template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n" }]
48
48
  }], propDecorators: { form: [{
49
49
  type: Input
50
50
  }], fields: [{
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-generic-formly-fields.mjs","sources":["../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields-module.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.html","../../../../libs/ng.ui.core/generic-formly-fields/src/es.framework-ng.ui.core-generic-formly-fields.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class GenericFormlyFieldsModule {}\r\n","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\nimport { ReactiveFormsModule, FormGroup, FormsModule } from '@angular/forms';\r\nimport { FormlyFormOptions, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'lib-generic-formly-fields',\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FormlyForm\r\n],\r\n templateUrl: './generic-formly-fields.html',\r\n})\r\nexport class GenericFormlyFields {\r\n /** الـ FormGroup الذي يُدار خارجيًا */\r\n @Input() form!: FormGroup;\r\n\r\n /** حقول Formly */\r\n @Input() fields: FormlyFieldConfig[] = [];\r\n\r\n /** النموذج (object) الذي سيُربط بالحقول */\r\n @Input() model: any = {};\r\n\r\n /** خيارات Formly (validation, hideExpression, ...) */\r\n @Input() options: FormlyFormOptions = {};\r\n\r\n // ngOnInit() {\r\n // // ما من حاجة هنا: يفترض أن form مُهيّأ في الخارج\r\n // }\r\n\r\n // ngOnChanges(changes: SimpleChanges) {\r\n // // لو احتجت تتعامل مع تغيّر الحقول أو الموديل، هنا المكان\r\n // }\r\n\r\n // دالة مساعدة للوصول الآمن لخصائص الحقل\r\n getFieldIcon(field: FormlyFieldConfig): string | null {\r\n return field.templateOptions?.['icon'] || null;\r\n }\r\n}\r\n","<!-- يرسم حقول Formly داخل الـ form الموجود -->\r\n<formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n</formly-form>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCUY,mBAAmB,CAAA;;AAErB,IAAA,IAAI;;IAGJ,MAAM,GAAwB,EAAE;;IAGhC,KAAK,GAAQ,EAAE;;IAGf,OAAO,GAAsB,EAAE;;;;;;;;AAWxC,IAAA,YAAY,CAAC,KAAwB,EAAA;QACnC,OAAO,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,IAAI;IAChD;uGAxBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qKCfhC,sSAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,+BACX,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAID,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,mBAAmB;wBACnB,WAAW;wBACX;AACH,qBAAA,EAAA,QAAA,EAAA,sSAAA,EAAA;;sBAKE;;sBAGA;;sBAGA;;sBAGA;;;AE1BH;;AAEG;;;;"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-generic-formly-fields.mjs","sources":["../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields-module.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.html","../../../../libs/ng.ui.core/generic-formly-fields/src/es.framework-ng.ui.core-generic-formly-fields.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericFormlyFieldsModule {}\n","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { ReactiveFormsModule, FormGroup, FormsModule } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\n\n@Component({\n selector: 'lib-generic-formly-fields',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n FormsModule,\n FormlyForm\n],\n templateUrl: './generic-formly-fields.html',\n})\nexport class GenericFormlyFields {\n /** الـ FormGroup الذي يُدار خارجيًا */\n @Input() form!: FormGroup;\n\n /** حقول Formly */\n @Input() fields: FormlyFieldConfig[] = [];\n\n /** النموذج (object) الذي سيُربط بالحقول */\n @Input() model: any = {};\n\n /** خيارات Formly (validation, hideExpression, ...) */\n @Input() options: FormlyFormOptions = {};\n\n // ngOnInit() {\n // // ما من حاجة هنا: يفترض أن form مُهيّأ في الخارج\n // }\n\n // ngOnChanges(changes: SimpleChanges) {\n // // لو احتجت تتعامل مع تغيّر الحقول أو الموديل، هنا المكان\n // }\n\n // دالة مساعدة للوصول الآمن لخصائص الحقل\n getFieldIcon(field: FormlyFieldConfig): string | null {\n return field.templateOptions?.['icon'] || null;\n }\n}\n","<!-- يرسم حقول Formly داخل الـ form الموجود -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCUY,mBAAmB,CAAA;;AAErB,IAAA,IAAI;;IAGJ,MAAM,GAAwB,EAAE;;IAGhC,KAAK,GAAQ,EAAE;;IAGf,OAAO,GAAsB,EAAE;;;;;;;;AAWxC,IAAA,YAAY,CAAC,KAAwB,EAAA;QACnC,OAAO,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,IAAI;IAChD;uGAxBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qKCfhC,wRAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,+BACX,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAID,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,mBAAmB;wBACnB,WAAW;wBACX;AACH,qBAAA,EAAA,QAAA,EAAA,wRAAA,EAAA;;sBAKE;;sBAGA;;sBAGA;;sBAGA;;;AE1BH;;AAEG;;;;"}
@@ -203,76 +203,76 @@ class GenericListboxTypeComponent extends FieldType {
203
203
  this.valueChangeSubscription.unsubscribe();
204
204
  }
205
205
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericListboxTypeComponent, deps: [{ token: i1.BaseService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
206
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericListboxTypeComponent, isStandalone: true, selector: "formly-generic-listbox", providers: [DialogService, BaseService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
207
- <div class="flex flex-col gap-2 w-full">
208
- <div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
209
- <p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
210
- </div>
211
-
212
- <p-listbox
213
- [options]="options_"
214
- [ngModel]="selectedItem"
215
- (ngModelChange)="onSelectionChange($event)"
216
- [formlyAttributes]="field"
217
- [multiple]="props.multiple"
218
- [checkbox]="props.multiple"
219
- [filter]="props.filters !== false"
220
- [optionLabel]="optionLabel"
221
- [disabled]="!!props.disabled"
222
- [listStyle]="{'max-height': props.listHeight || '250px'}"
223
- (onFilter)="onFilterSearch($event)"
224
- class="w-full"
225
- [emptyMessage]="getEmptyMessage() | translate">
226
-
227
- <ng-template let-item pTemplate="item">
228
- <div class="flex flex-col">
229
- <span [innerHTML]="getFormattedLabel(item)"></span>
230
- </div>
231
- </ng-template>
232
- </p-listbox>
233
-
234
- <app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
235
- [idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
236
- </app-generic-dialog>
237
- </div>
206
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericListboxTypeComponent, isStandalone: true, selector: "formly-generic-listbox", providers: [DialogService, BaseService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
207
+ <div class="flex flex-col gap-2 w-full">
208
+ <div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
209
+ <p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
210
+ </div>
211
+
212
+ <p-listbox
213
+ [options]="options_"
214
+ [ngModel]="selectedItem"
215
+ (ngModelChange)="onSelectionChange($event)"
216
+ [formlyAttributes]="field"
217
+ [multiple]="props.multiple"
218
+ [checkbox]="props.multiple"
219
+ [filter]="props.filters !== false"
220
+ [optionLabel]="optionLabel"
221
+ [disabled]="!!props.disabled"
222
+ [listStyle]="{'max-height': props.listHeight || '250px'}"
223
+ (onFilter)="onFilterSearch($event)"
224
+ class="w-full"
225
+ [emptyMessage]="getEmptyMessage() | translate">
226
+
227
+ <ng-template let-item pTemplate="item">
228
+ <div class="flex flex-col">
229
+ <span [innerHTML]="getFormattedLabel(item)"></span>
230
+ </div>
231
+ </ng-template>
232
+ </p-listbox>
233
+
234
+ <app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
235
+ [idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
236
+ </app-generic-dialog>
237
+ </div>
238
238
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i3.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["hostName", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "styleClass", "listStyle", "listStyleClass", "readonly", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark", "dragdrop", "dropListData", "fluid"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad", "onDrop"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["form", "service", "formFields", "model", "apiName", "moduleName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
239
239
  }
240
240
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericListboxTypeComponent, decorators: [{
241
241
  type: Component,
242
242
  args: [{
243
243
  selector: 'formly-generic-listbox',
244
- template: `
245
- <div class="flex flex-col gap-2 w-full">
246
- <div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
247
- <p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
248
- </div>
249
-
250
- <p-listbox
251
- [options]="options_"
252
- [ngModel]="selectedItem"
253
- (ngModelChange)="onSelectionChange($event)"
254
- [formlyAttributes]="field"
255
- [multiple]="props.multiple"
256
- [checkbox]="props.multiple"
257
- [filter]="props.filters !== false"
258
- [optionLabel]="optionLabel"
259
- [disabled]="!!props.disabled"
260
- [listStyle]="{'max-height': props.listHeight || '250px'}"
261
- (onFilter)="onFilterSearch($event)"
262
- class="w-full"
263
- [emptyMessage]="getEmptyMessage() | translate">
264
-
265
- <ng-template let-item pTemplate="item">
266
- <div class="flex flex-col">
267
- <span [innerHTML]="getFormattedLabel(item)"></span>
268
- </div>
269
- </ng-template>
270
- </p-listbox>
271
-
272
- <app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
273
- [idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
274
- </app-generic-dialog>
275
- </div>
244
+ template: `
245
+ <div class="flex flex-col gap-2 w-full">
246
+ <div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
247
+ <p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
248
+ </div>
249
+
250
+ <p-listbox
251
+ [options]="options_"
252
+ [ngModel]="selectedItem"
253
+ (ngModelChange)="onSelectionChange($event)"
254
+ [formlyAttributes]="field"
255
+ [multiple]="props.multiple"
256
+ [checkbox]="props.multiple"
257
+ [filter]="props.filters !== false"
258
+ [optionLabel]="optionLabel"
259
+ [disabled]="!!props.disabled"
260
+ [listStyle]="{'max-height': props.listHeight || '250px'}"
261
+ (onFilter)="onFilterSearch($event)"
262
+ class="w-full"
263
+ [emptyMessage]="getEmptyMessage() | translate">
264
+
265
+ <ng-template let-item pTemplate="item">
266
+ <div class="flex flex-col">
267
+ <span [innerHTML]="getFormattedLabel(item)"></span>
268
+ </div>
269
+ </ng-template>
270
+ </p-listbox>
271
+
272
+ <app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
273
+ [idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
274
+ </app-generic-dialog>
275
+ </div>
276
276
  `,
277
277
  providers: [DialogService, BaseService],
278
278
  standalone: true,
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-generic-listbox.mjs","sources":["../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.module.ts","../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.component.ts","../../../../libs/ng.ui.core/generic-listbox/src/es.framework-ng.ui.core-generic-listbox.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericListboxModule {}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { FormlyFieldConfig, FieldType, FormlyAttributes, FieldTypeConfig } from '@ngx-formly/core';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { FormlyFieldProps } from '@ngx-formly/primeng/form-field';\r\nimport { BaseService, FilterGroup, LocalizationService, QueryParameters, QueryParser } from '@es.framework/ng.core/services';\r\nimport { GenericDialogComponent } from '@es.framework/ng.ui.core/generic-dialog';\r\n\r\ninterface GenericListboxProps extends FormlyFieldProps {\r\n moduleName: string;\r\n serviceName: string;\r\n listEndpoint?: string | ((model: any) => string);\r\n labelField?: string;\r\n labelFieldEn?: string;\r\n valueField?: string;\r\n useMultiLang?: boolean;\r\n multiple?: boolean;\r\n offline?: boolean;\r\n offlineItems?: any[];\r\n offlineItems$?: Observable<any[]>;\r\n onSelect?: (field: FormlyFieldConfig, event?: any) => void;\r\n offlineDataFn?: (query?: string) => any[];\r\n query?: Record<string, any> | QueryParameters;\r\n fixedFilters?: Record<string, any>;\r\n canAdd?: boolean;\r\n formFields?: FormlyFieldConfig[];\r\n afterSave?: (field: FormlyFieldConfig, event?: any) => void;\r\n formatter?: (row: any, value?: any) => string;\r\n listHeight?: string;\r\n filters?: boolean;\r\n idField?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-generic-listbox',\r\n template: `\r\n <div class=\"flex flex-col gap-2 w-full\">\r\n <div class=\"flex gap-1 items-center mb-1\" *ngIf=\"props.canAdd && props.formFields\">\r\n <p-button icon=\"pi pi-plus\" [label]=\"'ADD_NEW' | translate\" size=\"small\" severity=\"primary\" (click)=\"onAddNewClick()\" />\r\n </div>\r\n\r\n <p-listbox\r\n [options]=\"options_\"\r\n [ngModel]=\"selectedItem\"\r\n (ngModelChange)=\"onSelectionChange($event)\"\r\n [formlyAttributes]=\"field\"\r\n [multiple]=\"props.multiple\"\r\n [checkbox]=\"props.multiple\"\r\n [filter]=\"props.filters !== false\"\r\n [optionLabel]=\"optionLabel\"\r\n [disabled]=\"!!props.disabled\"\r\n [listStyle]=\"{'max-height': props.listHeight || '250px'}\"\r\n (onFilter)=\"onFilterSearch($event)\"\r\n class=\"w-full\"\r\n [emptyMessage]=\"getEmptyMessage() | translate\">\r\n\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex flex-col\">\r\n <span [innerHTML]=\"getFormattedLabel(item)\"></span>\r\n </div>\r\n </ng-template>\r\n </p-listbox>\r\n\r\n <app-generic-dialog #dialog [formFields]=\"props.formFields ?? []\" [apiName]=\"props.serviceName\" [moduleName]=\"props.moduleName\"\r\n [idField]=\"props.idField ?? 'id'\" [displayMode]=\"'dialog'\" (afterSave)=\"afterSave($event)\">\r\n </app-generic-dialog>\r\n </div>\r\n `,\r\n providers: [DialogService, BaseService],\r\n standalone: true,\r\n imports: [FormsModule, ReactiveFormsModule, ListboxModule, FormlyAttributes, TranslatePipe, ButtonModule, GenericDialogComponent]\r\n})\r\nexport class GenericListboxTypeComponent extends FieldType<FieldTypeConfig<GenericListboxProps>> implements OnInit, OnDestroy {\r\n @ViewChild('dialog') dialog!: GenericDialogComponent;\r\n options_: any[] = [];\r\n selectedItem: any;\r\n loading = false;\r\n private _offlineList: any[] = [];\r\n private translateService = inject(LocalizationService);\r\n private sanitizer: DomSanitizer = inject(DomSanitizer);\r\n api: BaseService | any;\r\n private valueChangeSubscription!: Subscription;\r\n\r\n constructor(private svc: BaseService, private cdr: ChangeDetectorRef) { super(); }\r\n\r\n get optionLabel(): string {\r\n if (this.props.useMultiLang) {\r\n return this.translateService.currentLang === 'en' ? (this.props.labelFieldEn || 'name') : (this.props.labelField || 'name');\r\n }\r\n return this.props.labelField || 'name';\r\n }\r\n\r\n ngOnInit() {\r\n this.api = this.svc;\r\n this.api.apiName = this.props.serviceName;\r\n this.api.moduleName = this.props.moduleName;\r\n\r\n // تحميل البيانات لأول مرة\r\n this.search({ query: '' });\r\n\r\n this.valueChangeSubscription = this.formControl.valueChanges.subscribe(() => {\r\n this.syncSelectionWithControl();\r\n });\r\n }\r\n\r\n onFilterSearch(event: any) {\r\n if (!this.props.offline) {\r\n this.search({ query: event.filter });\r\n }\r\n }\r\n\r\n onSelectionChange(val: any) {\r\n const vf = this.props.valueField || 'id';\r\n this.selectedItem = val;\r\n\r\n if (this.props.multiple) {\r\n const values = Array.isArray(val) ? val.map(i => i[vf]) : [];\r\n this.formControl.setValue(values);\r\n } else {\r\n this.formControl.setValue(val ? val[vf] : null);\r\n }\r\n\r\n if (this.props.onSelect) {\r\n this.props.onSelect(this.field, { item: val });\r\n }\r\n }\r\n\r\n private syncSelectionWithControl() {\r\n const val = this.formControl.value;\r\n const vf = this.props.valueField || 'id';\r\n\r\n if (val == null || (Array.isArray(val) && val.length === 0)) {\r\n this.selectedItem = this.props.multiple ? [] : null;\r\n } else if (this.props.multiple && Array.isArray(val)) {\r\n this.selectedItem = this.options_.filter(opt => val.includes(opt[vf]));\r\n } else {\r\n this.selectedItem = this.options_.find(opt => opt[vf] === val);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // الدالة التي طلبتها بنفس الآلية البسيطة\r\n search(event: { query: string }) {\r\n const q = event.query?.toString() || '';\r\n const lf = this.optionLabel;\r\n\r\n // --- أولاً: حالة الـ Offline (البحث المحلي) ---\r\n if (this.props.offline) {\r\n if (this.props.offlineDataFn) {\r\n // إذا كان هناك دالة مخصصة لجلب البيانات محلياً\r\n this.options_ = this.props.offlineDataFn(q);\r\n } else {\r\n // البحث الافتراضي في المصفوفة المخزنة\r\n this.options_ = this._offlineList.filter(item => {\r\n const searchStr = q.toLowerCase();\r\n // يبحث في الحقل المعرف كـ labelField\r\n return item[lf]?.toString().toLowerCase().includes(searchStr) ||\r\n // أو يبحث في id إذا كان البحث نصياً مطابقاً\r\n item[this.props.valueField || 'id']?.toString().toLowerCase() === searchStr;\r\n });\r\n }\r\n this.syncSelectionWithControl();\r\n this.cdr.detectChanges();\r\n return; // إنهاء الدالة هنا لأننا في وضع الأوفلاين\r\n }\r\n\r\n // --- ثانياً: حالة الـ Online (طلب API) ---\r\n this.loading = true;\r\n const fixedFilters = this.getFixedFilters(q);\r\n\r\n const queryParams: QueryParameters = {\r\n filters: [],\r\n top: this.props.query?.['top'] ?? 20,\r\n skip: this.props.query?.['skip'] ?? 0,\r\n orderBy: this.props.query?.['orderBy'] || [],\r\n expand: this.props.query?.['expand'] || [],\r\n select: this.props.query?.['select'] || [],\r\n };\r\n\r\n let dynamicFilters: any[] = [];\r\n if (this.props.query && this.props.query['filters']) {\r\n const f = this.props.query['filters'];\r\n // هنا يتم تمرير searchText للدالة التي أرسلتها أنت في الـ Config\r\n dynamicFilters = typeof f === 'function' ? f(q, this.field, this.model) : f;\r\n }\r\n\r\n if (dynamicFilters.length === 0) {\r\n const mainGroup: FilterGroup = { logicalOperator: 'and', conditions: [] };\r\n if (q) mainGroup.conditions.push({ field: lf, operator: 'contains', value: q });\r\n\r\n Object.keys(fixedFilters || {}).forEach(key => {\r\n if (fixedFilters[key] != null) mainGroup.conditions.push({ field: key, operator: 'eq', value: fixedFilters[key] });\r\n });\r\n\r\n if (mainGroup.conditions.length > 0) queryParams.filters.push(mainGroup);\r\n } else {\r\n dynamicFilters.forEach((fg) => {\r\n queryParams.filters.push({ ...fg, groupLogicalOperator: fg.groupLogicalOperator || 'and' });\r\n });\r\n\r\n if (Object.keys(fixedFilters || {}).length > 0) {\r\n queryParams.filters.push({\r\n logicalOperator: 'and',\r\n groupLogicalOperator: 'and',\r\n conditions: Object.keys(fixedFilters).map(k => ({ field: k, operator: 'eq', value: fixedFilters[k] }))\r\n });\r\n }\r\n }\r\n\r\n let listEndpoint = this.props.listEndpoint;\r\n if (typeof listEndpoint === 'function') listEndpoint = listEndpoint(this.model);\r\n\r\n this.api.getList({ 'query': QueryParser.toString(queryParams) }, listEndpoint)\r\n .pipe(finalize(() => {\r\n this.loading = false;\r\n this.cdr.detectChanges();\r\n }))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.options_ = res.items ?? res ?? [];\r\n this.syncSelectionWithControl();\r\n this.cdr.detectChanges();\r\n },\r\n error: () => {\r\n this.options_ = [];\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n getFixedFilters(query: string = ''): any {\r\n const ff = this.props.fixedFilters;\r\n return typeof ff === 'function' ? ff(query, this.field) : (ff || {});\r\n }\r\n\r\n getFormattedLabel(item: any): SafeHtml {\r\n if (!item) return '';\r\n const label = this.props.formatter ? this.props.formatter(item) : (item[this.optionLabel] || '');\r\n return this.sanitizer.bypassSecurityTrustHtml(label);\r\n }\r\n\r\n getEmptyMessage(): string {\r\n return this.loading ? 'LOADING_DATA_MESSAGE' : 'NO_RESULTS_FOUND';\r\n }\r\n\r\n onAddNewClick() { this.dialog.openForm(\"create\"); }\r\n\r\n afterSave(event: any) {\r\n this.search({ query: '' });\r\n if (this.props.afterSave) this.props.afterSave(this.field, { item: event.record });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.valueChangeSubscription) this.valueChangeSubscription.unsubscribe();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-generic-listbox.mjs","sources":["../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.module.ts","../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.component.ts","../../../../libs/ng.ui.core/generic-listbox/src/es.framework-ng.ui.core-generic-listbox.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericListboxModule {}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Observable, Subscription } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ListboxModule } from 'primeng/listbox';\nimport { ButtonModule } from 'primeng/button';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { FormlyFieldConfig, FieldType, FormlyAttributes, FieldTypeConfig } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { FormlyFieldProps } from '@ngx-formly/primeng/form-field';\nimport { BaseService, FilterGroup, LocalizationService, QueryParameters, QueryParser } from '@es.framework/ng.core/services';\nimport { GenericDialogComponent } from '@es.framework/ng.ui.core/generic-dialog';\n\ninterface GenericListboxProps extends FormlyFieldProps {\n moduleName: string;\n serviceName: string;\n listEndpoint?: string | ((model: any) => string);\n labelField?: string;\n labelFieldEn?: string;\n valueField?: string;\n useMultiLang?: boolean;\n multiple?: boolean;\n offline?: boolean;\n offlineItems?: any[];\n offlineItems$?: Observable<any[]>;\n onSelect?: (field: FormlyFieldConfig, event?: any) => void;\n offlineDataFn?: (query?: string) => any[];\n query?: Record<string, any> | QueryParameters;\n fixedFilters?: Record<string, any>;\n canAdd?: boolean;\n formFields?: FormlyFieldConfig[];\n afterSave?: (field: FormlyFieldConfig, event?: any) => void;\n formatter?: (row: any, value?: any) => string;\n listHeight?: string;\n filters?: boolean;\n idField?: string;\n}\n\n@Component({\n selector: 'formly-generic-listbox',\n template: `\n <div class=\"flex flex-col gap-2 w-full\">\n <div class=\"flex gap-1 items-center mb-1\" *ngIf=\"props.canAdd && props.formFields\">\n <p-button icon=\"pi pi-plus\" [label]=\"'ADD_NEW' | translate\" size=\"small\" severity=\"primary\" (click)=\"onAddNewClick()\" />\n </div>\n\n <p-listbox\n [options]=\"options_\"\n [ngModel]=\"selectedItem\"\n (ngModelChange)=\"onSelectionChange($event)\"\n [formlyAttributes]=\"field\"\n [multiple]=\"props.multiple\"\n [checkbox]=\"props.multiple\"\n [filter]=\"props.filters !== false\"\n [optionLabel]=\"optionLabel\"\n [disabled]=\"!!props.disabled\"\n [listStyle]=\"{'max-height': props.listHeight || '250px'}\"\n (onFilter)=\"onFilterSearch($event)\"\n class=\"w-full\"\n [emptyMessage]=\"getEmptyMessage() | translate\">\n\n <ng-template let-item pTemplate=\"item\">\n <div class=\"flex flex-col\">\n <span [innerHTML]=\"getFormattedLabel(item)\"></span>\n </div>\n </ng-template>\n </p-listbox>\n\n <app-generic-dialog #dialog [formFields]=\"props.formFields ?? []\" [apiName]=\"props.serviceName\" [moduleName]=\"props.moduleName\"\n [idField]=\"props.idField ?? 'id'\" [displayMode]=\"'dialog'\" (afterSave)=\"afterSave($event)\">\n </app-generic-dialog>\n </div>\n `,\n providers: [DialogService, BaseService],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, ListboxModule, FormlyAttributes, TranslatePipe, ButtonModule, GenericDialogComponent]\n})\nexport class GenericListboxTypeComponent extends FieldType<FieldTypeConfig<GenericListboxProps>> implements OnInit, OnDestroy {\n @ViewChild('dialog') dialog!: GenericDialogComponent;\n options_: any[] = [];\n selectedItem: any;\n loading = false;\n private _offlineList: any[] = [];\n private translateService = inject(LocalizationService);\n private sanitizer: DomSanitizer = inject(DomSanitizer);\n api: BaseService | any;\n private valueChangeSubscription!: Subscription;\n\n constructor(private svc: BaseService, private cdr: ChangeDetectorRef) { super(); }\n\n get optionLabel(): string {\n if (this.props.useMultiLang) {\n return this.translateService.currentLang === 'en' ? (this.props.labelFieldEn || 'name') : (this.props.labelField || 'name');\n }\n return this.props.labelField || 'name';\n }\n\n ngOnInit() {\n this.api = this.svc;\n this.api.apiName = this.props.serviceName;\n this.api.moduleName = this.props.moduleName;\n\n // تحميل البيانات لأول مرة\n this.search({ query: '' });\n\n this.valueChangeSubscription = this.formControl.valueChanges.subscribe(() => {\n this.syncSelectionWithControl();\n });\n }\n\n onFilterSearch(event: any) {\n if (!this.props.offline) {\n this.search({ query: event.filter });\n }\n }\n\n onSelectionChange(val: any) {\n const vf = this.props.valueField || 'id';\n this.selectedItem = val;\n\n if (this.props.multiple) {\n const values = Array.isArray(val) ? val.map(i => i[vf]) : [];\n this.formControl.setValue(values);\n } else {\n this.formControl.setValue(val ? val[vf] : null);\n }\n\n if (this.props.onSelect) {\n this.props.onSelect(this.field, { item: val });\n }\n }\n\n private syncSelectionWithControl() {\n const val = this.formControl.value;\n const vf = this.props.valueField || 'id';\n\n if (val == null || (Array.isArray(val) && val.length === 0)) {\n this.selectedItem = this.props.multiple ? [] : null;\n } else if (this.props.multiple && Array.isArray(val)) {\n this.selectedItem = this.options_.filter(opt => val.includes(opt[vf]));\n } else {\n this.selectedItem = this.options_.find(opt => opt[vf] === val);\n }\n this.cdr.detectChanges();\n }\n\n // الدالة التي طلبتها بنفس الآلية البسيطة\n search(event: { query: string }) {\n const q = event.query?.toString() || '';\n const lf = this.optionLabel;\n\n // --- أولاً: حالة الـ Offline (البحث المحلي) ---\n if (this.props.offline) {\n if (this.props.offlineDataFn) {\n // إذا كان هناك دالة مخصصة لجلب البيانات محلياً\n this.options_ = this.props.offlineDataFn(q);\n } else {\n // البحث الافتراضي في المصفوفة المخزنة\n this.options_ = this._offlineList.filter(item => {\n const searchStr = q.toLowerCase();\n // يبحث في الحقل المعرف كـ labelField\n return item[lf]?.toString().toLowerCase().includes(searchStr) ||\n // أو يبحث في id إذا كان البحث نصياً مطابقاً\n item[this.props.valueField || 'id']?.toString().toLowerCase() === searchStr;\n });\n }\n this.syncSelectionWithControl();\n this.cdr.detectChanges();\n return; // إنهاء الدالة هنا لأننا في وضع الأوفلاين\n }\n\n // --- ثانياً: حالة الـ Online (طلب API) ---\n this.loading = true;\n const fixedFilters = this.getFixedFilters(q);\n\n const queryParams: QueryParameters = {\n filters: [],\n top: this.props.query?.['top'] ?? 20,\n skip: this.props.query?.['skip'] ?? 0,\n orderBy: this.props.query?.['orderBy'] || [],\n expand: this.props.query?.['expand'] || [],\n select: this.props.query?.['select'] || [],\n };\n\n let dynamicFilters: any[] = [];\n if (this.props.query && this.props.query['filters']) {\n const f = this.props.query['filters'];\n // هنا يتم تمرير searchText للدالة التي أرسلتها أنت في الـ Config\n dynamicFilters = typeof f === 'function' ? f(q, this.field, this.model) : f;\n }\n\n if (dynamicFilters.length === 0) {\n const mainGroup: FilterGroup = { logicalOperator: 'and', conditions: [] };\n if (q) mainGroup.conditions.push({ field: lf, operator: 'contains', value: q });\n\n Object.keys(fixedFilters || {}).forEach(key => {\n if (fixedFilters[key] != null) mainGroup.conditions.push({ field: key, operator: 'eq', value: fixedFilters[key] });\n });\n\n if (mainGroup.conditions.length > 0) queryParams.filters.push(mainGroup);\n } else {\n dynamicFilters.forEach((fg) => {\n queryParams.filters.push({ ...fg, groupLogicalOperator: fg.groupLogicalOperator || 'and' });\n });\n\n if (Object.keys(fixedFilters || {}).length > 0) {\n queryParams.filters.push({\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: Object.keys(fixedFilters).map(k => ({ field: k, operator: 'eq', value: fixedFilters[k] }))\n });\n }\n }\n\n let listEndpoint = this.props.listEndpoint;\n if (typeof listEndpoint === 'function') listEndpoint = listEndpoint(this.model);\n\n this.api.getList({ 'query': QueryParser.toString(queryParams) }, listEndpoint)\n .pipe(finalize(() => {\n this.loading = false;\n this.cdr.detectChanges();\n }))\n .subscribe({\n next: (res: any) => {\n this.options_ = res.items ?? res ?? [];\n this.syncSelectionWithControl();\n this.cdr.detectChanges();\n },\n error: () => {\n this.options_ = [];\n this.cdr.detectChanges();\n }\n });\n }\n\n getFixedFilters(query: string = ''): any {\n const ff = this.props.fixedFilters;\n return typeof ff === 'function' ? ff(query, this.field) : (ff || {});\n }\n\n getFormattedLabel(item: any): SafeHtml {\n if (!item) return '';\n const label = this.props.formatter ? this.props.formatter(item) : (item[this.optionLabel] || '');\n return this.sanitizer.bypassSecurityTrustHtml(label);\n }\n\n getEmptyMessage(): string {\n return this.loading ? 'LOADING_DATA_MESSAGE' : 'NO_RESULTS_FOUND';\n }\n\n onAddNewClick() { this.dialog.openForm(\"create\"); }\n\n afterSave(event: any) {\n this.search({ query: '' });\n if (this.props.afterSave) this.props.afterSave(this.field, { item: event.record });\n }\n\n ngOnDestroy() {\n if (this.valueChangeSubscription) this.valueChangeSubscription.unsubscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -17,11 +17,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
17
17
  class GenericLoadingspinner {
18
18
  loading = false;
19
19
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericLoadingspinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericLoadingspinner, isStandalone: true, selector: "lib-generic-loadingspinner", inputs: { loading: "loading" }, ngImport: i0, template: "@if (loading) {\r\n <div class=\"flex justify-center items-center my-6\">\r\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\r\n </svg>\r\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\r\n </div>\r\n}\r\n", styles: [""] });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericLoadingspinner, isStandalone: true, selector: "lib-generic-loadingspinner", inputs: { loading: "loading" }, ngImport: i0, template: "@if (loading) {\n <div class=\"flex justify-center items-center my-6\">\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\n </svg>\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\n </div>\n}\n", styles: [""] });
21
21
  }
22
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericLoadingspinner, decorators: [{
23
23
  type: Component,
24
- args: [{ selector: 'lib-generic-loadingspinner', imports: [], template: "@if (loading) {\r\n <div class=\"flex justify-center items-center my-6\">\r\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\r\n </svg>\r\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\r\n </div>\r\n}\r\n" }]
24
+ args: [{ selector: 'lib-generic-loadingspinner', imports: [], template: "@if (loading) {\n <div class=\"flex justify-center items-center my-6\">\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\n </svg>\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\n </div>\n}\n" }]
25
25
  }], propDecorators: { loading: [{
26
26
  type: Input
27
27
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-generic-loadingspinner.mjs","sources":["../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner-module.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.html","../../../../libs/ng.ui.core/generic-loadingspinner/src/es.framework-ng.ui.core-generic-loadingspinner.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class GenericLoadingspinnerModule {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'lib-generic-loadingspinner',\r\n imports: [],\r\n templateUrl: './generic-loadingspinner.html',\r\n styleUrl: './generic-loadingspinner.css'\r\n})\r\nexport class GenericLoadingspinner {\r\n@Input() loading = false;\r\n}\r\n\r\n\r\n\r\n\r\n","@if (loading) {\r\n <div class=\"flex justify-center items-center my-6\">\r\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\r\n </svg>\r\n <span class=\"ml-2 text-gray-700\">جاري التحميل...</span>\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;;2FAEX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,qBAAqB,CAAA;IACzB,OAAO,GAAG,KAAK;uGADX,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sHCTlC,4hBASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDAa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,WAC7B,EAAE,EAAA,QAAA,EAAA,4hBAAA,EAAA;;sBAKZ;;;AEVD;;AAEG;;;;"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-generic-loadingspinner.mjs","sources":["../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner-module.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.html","../../../../libs/ng.ui.core/generic-loadingspinner/src/es.framework-ng.ui.core-generic-loadingspinner.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericLoadingspinnerModule {}\n","import { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'lib-generic-loadingspinner',\n imports: [],\n templateUrl: './generic-loadingspinner.html',\n styleUrl: './generic-loadingspinner.css'\n})\nexport class GenericLoadingspinner {\n@Input() loading = false;\n}\n\n\n\n\n","@if (loading) {\n <div class=\"flex justify-center items-center my-6\">\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\n </svg>\n <span class=\"ml-2 text-gray-700\">جاري التحميل...</span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;;2FAEX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,qBAAqB,CAAA;IACzB,OAAO,GAAG,KAAK;uGADX,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sHCTlC,0gBASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDAa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,WAC7B,EAAE,EAAA,QAAA,EAAA,0gBAAA,EAAA;;sBAKZ;;;AEVD;;AAEG;;;;"}
@@ -91,40 +91,40 @@ class TabbedSearchComponent {
91
91
  return groups;
92
92
  }
93
93
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabbedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
94
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: TabbedSearchComponent, isStandalone: true, selector: "app-tabbed-search", inputs: { fields: "fields", model: "model", form: "form" }, outputs: { onSearch: "onSearch", onReset: "onReset", paginationChange: "paginationChange" }, ngImport: i0, template: `
95
- <div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
96
- <div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
97
- touch-pan-y overscroll-contain
98
- scrollbar-thin scrollbar-thumb-slate-300">
99
- <form [formGroup]="form">
100
- <formly-form
101
- [form]="form"
102
- [fields]="fields"
103
- [model]="model">
104
- </formly-form>
105
- </form>
106
- </div>
107
-
108
- <div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
109
- <div class="flex items-center gap-1.5">
110
- <p-button
111
- icon="pi pi-search"
112
- [outlined]="true"
113
- severity="secondary"
114
- styleClass="!rounded-lg !py-1.5"
115
- (onClick)="onSubmit()">
116
- </p-button>
117
-
118
- <p-button
119
- icon="pi pi-refresh"
120
- [outlined]="true"
121
- severity="secondary"
122
- styleClass="!rounded-lg !py-1.5"
123
- (onClick)="Reset()">
124
- </p-button>
125
- </div>
126
- </div>
127
- </div>
94
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: TabbedSearchComponent, isStandalone: true, selector: "app-tabbed-search", inputs: { fields: "fields", model: "model", form: "form" }, outputs: { onSearch: "onSearch", onReset: "onReset", paginationChange: "paginationChange" }, ngImport: i0, template: `
95
+ <div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
96
+ <div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
97
+ touch-pan-y overscroll-contain
98
+ scrollbar-thin scrollbar-thumb-slate-300">
99
+ <form [formGroup]="form">
100
+ <formly-form
101
+ [form]="form"
102
+ [fields]="fields"
103
+ [model]="model">
104
+ </formly-form>
105
+ </form>
106
+ </div>
107
+
108
+ <div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
109
+ <div class="flex items-center gap-1.5">
110
+ <p-button
111
+ icon="pi pi-search"
112
+ [outlined]="true"
113
+ severity="secondary"
114
+ styleClass="!rounded-lg !py-1.5"
115
+ (onClick)="onSubmit()">
116
+ </p-button>
117
+
118
+ <p-button
119
+ icon="pi pi-refresh"
120
+ [outlined]="true"
121
+ severity="secondary"
122
+ styleClass="!rounded-lg !py-1.5"
123
+ (onClick)="Reset()">
124
+ </p-button>
125
+ </div>
126
+ </div>
127
+ </div>
128
128
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.LegacyFormlyForm, selector: "formly-form" }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TranslateModule }] });
129
129
  }
130
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabbedSearchComponent, decorators: [{
@@ -139,40 +139,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
139
139
  ButtonModule,
140
140
  TranslateModule
141
141
  ],
142
- template: `
143
- <div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
144
- <div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
145
- touch-pan-y overscroll-contain
146
- scrollbar-thin scrollbar-thumb-slate-300">
147
- <form [formGroup]="form">
148
- <formly-form
149
- [form]="form"
150
- [fields]="fields"
151
- [model]="model">
152
- </formly-form>
153
- </form>
154
- </div>
155
-
156
- <div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
157
- <div class="flex items-center gap-1.5">
158
- <p-button
159
- icon="pi pi-search"
160
- [outlined]="true"
161
- severity="secondary"
162
- styleClass="!rounded-lg !py-1.5"
163
- (onClick)="onSubmit()">
164
- </p-button>
165
-
166
- <p-button
167
- icon="pi pi-refresh"
168
- [outlined]="true"
169
- severity="secondary"
170
- styleClass="!rounded-lg !py-1.5"
171
- (onClick)="Reset()">
172
- </p-button>
173
- </div>
174
- </div>
175
- </div>
142
+ template: `
143
+ <div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
144
+ <div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
145
+ touch-pan-y overscroll-contain
146
+ scrollbar-thin scrollbar-thumb-slate-300">
147
+ <form [formGroup]="form">
148
+ <formly-form
149
+ [form]="form"
150
+ [fields]="fields"
151
+ [model]="model">
152
+ </formly-form>
153
+ </form>
154
+ </div>
155
+
156
+ <div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
157
+ <div class="flex items-center gap-1.5">
158
+ <p-button
159
+ icon="pi pi-search"
160
+ [outlined]="true"
161
+ severity="secondary"
162
+ styleClass="!rounded-lg !py-1.5"
163
+ (onClick)="onSubmit()">
164
+ </p-button>
165
+
166
+ <p-button
167
+ icon="pi pi-refresh"
168
+ [outlined]="true"
169
+ severity="secondary"
170
+ styleClass="!rounded-lg !py-1.5"
171
+ (onClick)="Reset()">
172
+ </p-button>
173
+ </div>
174
+ </div>
175
+ </div>
176
176
  `
177
177
  }]
178
178
  }], propDecorators: { fields: [{
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-generic-report-tabs.mjs","sources":["../../../../libs/ng.ui.core/generic-report-tabs/src/lib/generic-report-tabs.component.ts","../../../../libs/ng.ui.core/generic-report-tabs/src/es.framework-ng.ui.core-generic-report-tabs.ts"],"sourcesContent":["import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { QueryBuilderService } from '@es.framework/ng.ui.core/generic-search-advanced';\r\n\r\n@Component({\r\n selector: 'app-tabbed-search',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n ButtonModule,\r\n TranslateModule\r\n ],\r\n template: `\r\n <div class=\"bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4\">\r\n <div class=\"max-h-[220px] overflow-y-auto overflow-x-hidden pr-2\r\n touch-pan-y overscroll-contain\r\n scrollbar-thin scrollbar-thumb-slate-300\">\r\n <form [formGroup]=\"form\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\">\r\n </formly-form>\r\n </form>\r\n </div>\r\n\r\n <div class=\"flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2\">\r\n <div class=\"flex items-center gap-1.5\">\r\n <p-button\r\n icon=\"pi pi-search\"\r\n [outlined]=\"true\"\r\n severity=\"secondary\"\r\n styleClass=\"!rounded-lg !py-1.5\"\r\n (onClick)=\"onSubmit()\">\r\n </p-button>\r\n\r\n <p-button\r\n icon=\"pi pi-refresh\"\r\n [outlined]=\"true\"\r\n severity=\"secondary\"\r\n styleClass=\"!rounded-lg !py-1.5\"\r\n (onClick)=\"Reset()\">\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class TabbedSearchComponent {\r\n @Input() fields: FormlyFieldConfig[] = [];\r\n @Input() model: any = {};\r\n @Input() form = new FormGroup({});\r\n @Output() onSearch = new EventEmitter<any>();\r\n @Output() onReset = new EventEmitter<void>();\r\n @Output() paginationChange = new EventEmitter<any>();\r\n private queryBuilder = inject(QueryBuilderService);\r\n\r\n\r\n\r\n onSubmit() {\r\n\r\n\r\n this.model.advancedFilters = this.generateAdvancedFilters(this.fields, this.model);\r\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.fields);\r\n // Generate query string using the unified method\r\n\r\n const queryString = this.queryBuilder.toODataQueryString(odataParams);\r\n if(this.model?.pagination && this.model?.pagination?.top){\r\n this.paginationChange.emit({\r\n top:this.model?.pagination?.top,\r\n });\r\n }\r\n this.onSearch.emit(\r\n {\r\n query:queryString,\r\n }\r\n );\r\n\r\n }\r\n\r\n Reset() {\r\n this.form.reset();\r\n this.model = {};\r\n this.onReset.emit();\r\n }\r\n\r\nprivate generateAdvancedFilters(fields: FormlyFieldConfig[], model: any) {\r\n const groups: any[] = [];\r\n\r\n // نتأكد أن المعالجة فقط داخل الـ tab-type\r\n fields\r\n .filter(f => f.type === 'tab-type')\r\n .forEach(tabField => {\r\n // tabField.fieldGroup هو مجموعة التبويبات\r\n tabField.fieldGroup?.forEach(tab => {\r\n // tab.fieldGroup هو مجموعة الحقول داخل كل تبويب\r\n function traverse(fields: FormlyFieldConfig[]) {\r\n fields.forEach(field => {\r\n if (field.fieldGroup) {\r\n traverse(field.fieldGroup);\r\n return;\r\n }\r\n\r\n const key = field.key as string;\r\n const value = model[key];\r\n const keydb = field.props?.['keydb'];\r\n\r\n // console.log('Processing field in tab-type:', key, 'value:', value, 'keydb:', keydb);\r\n\r\n if (keydb && value !== undefined && value !== null && value !== '') {\r\n groups.push({\r\n logicalOperator: 'and',\r\n groupLogicalOperator: 'and',\r\n conditions: [\r\n {\r\n field: keydb,\r\n operator: field.props?.['operator'] || 'eq',\r\n value: value instanceof Date ? value.toISOString().split('T')[0] : value\r\n }\r\n ]\r\n });\r\n return;\r\n }\r\n\r\n if (value === undefined || value === null || value === '') return;\r\n\r\n groups.push({\r\n logicalOperator: 'and',\r\n groupLogicalOperator: 'and',\r\n conditions: [\r\n {\r\n field: key,\r\n operator: field.props?.['operator'] || 'eq',\r\n value\r\n }\r\n ]\r\n });\r\n });\r\n }\r\n\r\n traverse(tab.fieldGroup || []);\r\n });\r\n });\r\n\r\n return groups;\r\n}\r\n\r\n\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-generic-report-tabs.mjs","sources":["../../../../libs/ng.ui.core/generic-report-tabs/src/lib/generic-report-tabs.component.ts","../../../../libs/ng.ui.core/generic-report-tabs/src/es.framework-ng.ui.core-generic-report-tabs.ts"],"sourcesContent":["import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule, FormlyFieldConfig } from '@ngx-formly/core';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { QueryBuilderService } from '@es.framework/ng.ui.core/generic-search-advanced';\n\n@Component({\n selector: 'app-tabbed-search',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyModule,\n ButtonModule,\n TranslateModule\n ],\n template: `\n <div class=\"bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4\">\n <div class=\"max-h-[220px] overflow-y-auto overflow-x-hidden pr-2\n touch-pan-y overscroll-contain\n scrollbar-thin scrollbar-thumb-slate-300\">\n <form [formGroup]=\"form\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\">\n </formly-form>\n </form>\n </div>\n\n <div class=\"flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2\">\n <div class=\"flex items-center gap-1.5\">\n <p-button\n icon=\"pi pi-search\"\n [outlined]=\"true\"\n severity=\"secondary\"\n styleClass=\"!rounded-lg !py-1.5\"\n (onClick)=\"onSubmit()\">\n </p-button>\n\n <p-button\n icon=\"pi pi-refresh\"\n [outlined]=\"true\"\n severity=\"secondary\"\n styleClass=\"!rounded-lg !py-1.5\"\n (onClick)=\"Reset()\">\n </p-button>\n </div>\n </div>\n </div>\n `\n})\nexport class TabbedSearchComponent {\n @Input() fields: FormlyFieldConfig[] = [];\n @Input() model: any = {};\n @Input() form = new FormGroup({});\n @Output() onSearch = new EventEmitter<any>();\n @Output() onReset = new EventEmitter<void>();\n @Output() paginationChange = new EventEmitter<any>();\n private queryBuilder = inject(QueryBuilderService);\n\n\n\n onSubmit() {\n\n\n this.model.advancedFilters = this.generateAdvancedFilters(this.fields, this.model);\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.fields);\n // Generate query string using the unified method\n\n const queryString = this.queryBuilder.toODataQueryString(odataParams);\n if(this.model?.pagination && this.model?.pagination?.top){\n this.paginationChange.emit({\n top:this.model?.pagination?.top,\n });\n }\n this.onSearch.emit(\n {\n query:queryString,\n }\n );\n\n }\n\n Reset() {\n this.form.reset();\n this.model = {};\n this.onReset.emit();\n }\n\nprivate generateAdvancedFilters(fields: FormlyFieldConfig[], model: any) {\n const groups: any[] = [];\n\n // نتأكد أن المعالجة فقط داخل الـ tab-type\n fields\n .filter(f => f.type === 'tab-type')\n .forEach(tabField => {\n // tabField.fieldGroup هو مجموعة التبويبات\n tabField.fieldGroup?.forEach(tab => {\n // tab.fieldGroup هو مجموعة الحقول داخل كل تبويب\n function traverse(fields: FormlyFieldConfig[]) {\n fields.forEach(field => {\n if (field.fieldGroup) {\n traverse(field.fieldGroup);\n return;\n }\n\n const key = field.key as string;\n const value = model[key];\n const keydb = field.props?.['keydb'];\n\n // console.log('Processing field in tab-type:', key, 'value:', value, 'keydb:', keydb);\n\n if (keydb && value !== undefined && value !== null && value !== '') {\n groups.push({\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: [\n {\n field: keydb,\n operator: field.props?.['operator'] || 'eq',\n value: value instanceof Date ? value.toISOString().split('T')[0] : value\n }\n ]\n });\n return;\n }\n\n if (value === undefined || value === null || value === '') return;\n\n groups.push({\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: [\n {\n field: key,\n operator: field.props?.['operator'] || 'eq',\n value\n }\n ]\n });\n });\n }\n\n traverse(tab.fieldGroup || []);\n });\n });\n\n return groups;\n}\n\n\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}