@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
@@ -24,54 +24,54 @@ class FormlyAvatarLabelComponent extends FieldType {
24
24
  return this.field.props;
25
25
  }
26
26
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyAvatarLabelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
27
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlyAvatarLabelComponent, isStandalone: true, selector: "formly-avatar-label", usesInheritance: true, ngImport: i0, template: `
28
- <div class="flex flex-col text-gray-700 text-sm mb-4">
29
- <div class="flex items-center w-full min-h-[30px]">
30
- <div
31
- class="w-7 h-7 rounded-full flex items-center justify-center bg-gray-200 text-gray-600 text-base mr-2 flex-shrink-0"
32
- >
33
- {{ to.username ? (to.username | slice:0:1) : '?' }}
34
- </div>
35
-
36
- @if (to.showUsername) {
37
- <div class="flex items-center gap-1 ml-4 w-full">
38
- <span class="text-gray-500">{{ (to.prefixLabel ?? '') | translate }}:</span>
39
-
40
- <span class="font-medium text-gray-800 text-sm">
41
- {{ to.username || ('COMMON.USER' | translate) }}
42
- </span>
43
- </div>
44
- }
45
-
46
-
47
- </div>
48
- </div>
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlyAvatarLabelComponent, isStandalone: true, selector: "formly-avatar-label", usesInheritance: true, ngImport: i0, template: `
28
+ <div class="flex flex-col text-gray-700 text-sm mb-4">
29
+ <div class="flex items-center w-full min-h-[30px]">
30
+ <div
31
+ class="w-7 h-7 rounded-full flex items-center justify-center bg-gray-200 text-gray-600 text-base mr-2 flex-shrink-0"
32
+ >
33
+ {{ to.username ? (to.username | slice:0:1) : '?' }}
34
+ </div>
35
+
36
+ @if (to.showUsername) {
37
+ <div class="flex items-center gap-1 ml-4 w-full">
38
+ <span class="text-gray-500">{{ (to.prefixLabel ?? '') | translate }}:</span>
39
+
40
+ <span class="font-medium text-gray-800 text-sm">
41
+ {{ to.username || ('COMMON.USER' | translate) }}
42
+ </span>
43
+ </div>
44
+ }
45
+
46
+
47
+ </div>
48
+ </div>
49
49
  `, isInline: true, styles: [".formly-avatar-label img{border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyAvatarLabelComponent, decorators: [{
52
52
  type: Component,
53
- args: [{ selector: 'formly-avatar-label', template: `
54
- <div class="flex flex-col text-gray-700 text-sm mb-4">
55
- <div class="flex items-center w-full min-h-[30px]">
56
- <div
57
- class="w-7 h-7 rounded-full flex items-center justify-center bg-gray-200 text-gray-600 text-base mr-2 flex-shrink-0"
58
- >
59
- {{ to.username ? (to.username | slice:0:1) : '?' }}
60
- </div>
61
-
62
- @if (to.showUsername) {
63
- <div class="flex items-center gap-1 ml-4 w-full">
64
- <span class="text-gray-500">{{ (to.prefixLabel ?? '') | translate }}:</span>
65
-
66
- <span class="font-medium text-gray-800 text-sm">
67
- {{ to.username || ('COMMON.USER' | translate) }}
68
- </span>
69
- </div>
70
- }
71
-
72
-
73
- </div>
74
- </div>
53
+ args: [{ selector: 'formly-avatar-label', template: `
54
+ <div class="flex flex-col text-gray-700 text-sm mb-4">
55
+ <div class="flex items-center w-full min-h-[30px]">
56
+ <div
57
+ class="w-7 h-7 rounded-full flex items-center justify-center bg-gray-200 text-gray-600 text-base mr-2 flex-shrink-0"
58
+ >
59
+ {{ to.username ? (to.username | slice:0:1) : '?' }}
60
+ </div>
61
+
62
+ @if (to.showUsername) {
63
+ <div class="flex items-center gap-1 ml-4 w-full">
64
+ <span class="text-gray-500">{{ (to.prefixLabel ?? '') | translate }}:</span>
65
+
66
+ <span class="font-medium text-gray-800 text-sm">
67
+ {{ to.username || ('COMMON.USER' | translate) }}
68
+ </span>
69
+ </div>
70
+ }
71
+
72
+
73
+ </div>
74
+ </div>
75
75
  `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
76
76
  CommonModule,
77
77
  ButtonModule,
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-formly-avatar-label.mjs","sources":["../../../../libs/ng.ui.core/formly-avatar-label/src/lib/formly-avatar-label-module.ts","../../../../libs/ng.ui.core/formly-avatar-label/src/lib/formly-avatar-label.ts","../../../../libs/ng.ui.core/formly-avatar-label/src/es.framework-ng.ui.core-formly-avatar-label.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 FormlyAvatarLabelModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType } from '@ngx-formly/core';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\ninterface AvatarLabelProps {\r\n /**\r\n * The username or display name, shown as text and used for avatar initial\r\n */\r\n username?: string;\r\n\r\n /**\r\n * Prefix label shown before username (e.g. \"FROM\"), expected to be a translatable key\r\n */\r\n prefixLabel?: string;\r\n\r\n /**\r\n * Additional CSS classes to customize wrapper div if needed\r\n */\r\n styleClass?: string;\r\n\r\n /**\r\n * Whether the button should be disabled (optional)\r\n */\r\n disabled?: boolean;\r\n showUsername?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-avatar-label',\r\n template: `\r\n <div class=\"flex flex-col text-gray-700 text-sm mb-4\">\r\n <div class=\"flex items-center w-full min-h-[30px]\">\r\n <div\r\n class=\"w-7 h-7 rounded-full flex items-center justify-center bg-gray-200 text-gray-600 text-base mr-2 flex-shrink-0\"\r\n >\r\n {{ to.username ? (to.username | slice:0:1) : '?' }}\r\n </div>\r\n\r\n @if (to.showUsername) {\r\n <div class=\"flex items-center gap-1 ml-4 w-full\">\r\n <span class=\"text-gray-500\">{{ (to.prefixLabel ?? '') | translate }}:</span>\r\n\r\n <span class=\"font-medium text-gray-800 text-sm\">\r\n {{ to.username || ('COMMON.USER' | translate) }}\r\n </span>\r\n </div>\r\n }\r\n\r\n\r\n </div>\r\n</div>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styles: [`\r\n .formly-avatar-label img {\r\n border-radius: 50%;\r\n }\r\n `],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslatePipe\r\n ],\r\n})\r\nexport class FormlyAvatarLabelComponent extends FieldType {\r\n\r\n override get to(): AvatarLabelProps {\r\n return this.field.props as AvatarLabelProps;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAMa,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,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,uBAAuB,YAFxB,YAAY,CAAA,EAAA,CAAA;;2FAEX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;ACgEK,MAAO,0BAA2B,SAAQ,SAAS,CAAA;AAEvD,IAAA,IAAa,EAAE,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAyB;IAC7C;uGAJW,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArC3B,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAQD,YAAY,8BACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,+EACnB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAvCtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsBT,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EAMrC;wBACV,YAAY;wBACZ,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB;AACC,qBAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA;;;ACnEH;;AAEG;;;;"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-formly-avatar-label.mjs","sources":["../../../../libs/ng.ui.core/formly-avatar-label/src/lib/formly-avatar-label-module.ts","../../../../libs/ng.ui.core/formly-avatar-label/src/lib/formly-avatar-label.ts","../../../../libs/ng.ui.core/formly-avatar-label/src/es.framework-ng.ui.core-formly-avatar-label.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class FormlyAvatarLabelModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { ButtonModule } from 'primeng/button';\n\ninterface AvatarLabelProps {\n /**\n * The username or display name, shown as text and used for avatar initial\n */\n username?: string;\n\n /**\n * Prefix label shown before username (e.g. \"FROM\"), expected to be a translatable key\n */\n prefixLabel?: string;\n\n /**\n * Additional CSS classes to customize wrapper div if needed\n */\n styleClass?: string;\n\n /**\n * Whether the button should be disabled (optional)\n */\n disabled?: boolean;\n showUsername?: boolean;\n}\n\n@Component({\n selector: 'formly-avatar-label',\n template: `\n <div class=\"flex flex-col text-gray-700 text-sm mb-4\">\n <div class=\"flex items-center w-full min-h-[30px]\">\n <div\n class=\"w-7 h-7 rounded-full flex items-center justify-center bg-gray-200 text-gray-600 text-base mr-2 flex-shrink-0\"\n >\n {{ to.username ? (to.username | slice:0:1) : '?' }}\n </div>\n\n @if (to.showUsername) {\n <div class=\"flex items-center gap-1 ml-4 w-full\">\n <span class=\"text-gray-500\">{{ (to.prefixLabel ?? '') | translate }}:</span>\n\n <span class=\"font-medium text-gray-800 text-sm\">\n {{ to.username || ('COMMON.USER' | translate) }}\n </span>\n </div>\n }\n\n\n </div>\n</div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [`\n .formly-avatar-label img {\n border-radius: 50%;\n }\n `],\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslatePipe\n ],\n})\nexport class FormlyAvatarLabelComponent extends FieldType {\n\n override get to(): AvatarLabelProps {\n return this.field.props as AvatarLabelProps;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAMa,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,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,uBAAuB,YAFxB,YAAY,CAAA,EAAA,CAAA;;2FAEX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;ACgEK,MAAO,0BAA2B,SAAQ,SAAS,CAAA;AAEvD,IAAA,IAAa,EAAE,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAyB;IAC7C;uGAJW,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArC3B;;;;;;;;;;;;;;;;;;;;;;GAsBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAQD,YAAY,8BACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,+EACnB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAvCtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB;;;;;;;;;;;;;;;;;;;;;;GAsBT,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EAMrC;wBACV,YAAY;wBACZ,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB;AACC,qBAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA;;;ACnEH;;AAEG;;;;"}
@@ -76,52 +76,52 @@ class FormlySelectionButtonComponent extends FieldType {
76
76
  }
77
77
  }
78
78
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlySelectionButtonComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
79
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlySelectionButtonComponent, isStandalone: true, selector: "formly-selection-button", viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
80
- <p-button
81
- type="button"
82
- [label]="getButtonLabel()"
83
- [icon]="getButtonIcon()"
84
- (click)="popover.toggle($event)"
85
- styleClass="p-button-secondary p-button-outlined p-button-sm"
86
- ></p-button>
87
-
88
- <p-popover #popover [style]="{'min-width': '250px'}">
89
- <ng-template pTemplate="content">
90
- <div class="flex flex-col p-2">
91
- @if (props.popoverHeader) {
92
- <div class="text-xs text-gray-500 mb-2">
93
- {{ props.popoverHeader | translate }}
94
- </div>
95
- }
96
-
97
- @for (option of props.options || []; track option) {
98
- <div
99
- class="flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded"
100
- (click)="onSelect(option[props.optionValue])"
101
- >
102
- @if (option.icon) {
103
- <i [class]="option.icon" class="mr-2 text-lg"></i>
104
- }
105
- <div class="flex flex-col">
106
- <span class="font-medium">{{ (option[props.optionLabel] || '') | translate }}</span>
107
- @if (option.description) {
108
- <span class="text-xs text-gray-500">{{ option.description | translate }}</span>
109
- }
110
- </div>
111
- @if (formControl.value === option[props.optionValue]) {
112
- <i class="pi pi-check ml-auto text-blue-500 text-lg"></i>
113
- }
114
- </div>
115
- }
116
-
117
- @if (!(props.options?.length)) {
118
- <div class="p-3 text-gray-500">
119
- {{ 'COMMON.NO_DATA' | translate }}
120
- </div>
121
- }
122
- </div>
123
- </ng-template>
124
- </p-popover>
79
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlySelectionButtonComponent, isStandalone: true, selector: "formly-selection-button", viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
80
+ <p-button
81
+ type="button"
82
+ [label]="getButtonLabel()"
83
+ [icon]="getButtonIcon()"
84
+ (click)="popover.toggle($event)"
85
+ styleClass="p-button-secondary p-button-outlined p-button-sm"
86
+ ></p-button>
87
+
88
+ <p-popover #popover [style]="{'min-width': '250px'}">
89
+ <ng-template pTemplate="content">
90
+ <div class="flex flex-col p-2">
91
+ @if (props.popoverHeader) {
92
+ <div class="text-xs text-gray-500 mb-2">
93
+ {{ props.popoverHeader | translate }}
94
+ </div>
95
+ }
96
+
97
+ @for (option of props.options || []; track option) {
98
+ <div
99
+ class="flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded"
100
+ (click)="onSelect(option[props.optionValue])"
101
+ >
102
+ @if (option.icon) {
103
+ <i [class]="option.icon" class="mr-2 text-lg"></i>
104
+ }
105
+ <div class="flex flex-col">
106
+ <span class="font-medium">{{ (option[props.optionLabel] || '') | translate }}</span>
107
+ @if (option.description) {
108
+ <span class="text-xs text-gray-500">{{ option.description | translate }}</span>
109
+ }
110
+ </div>
111
+ @if (formControl.value === option[props.optionValue]) {
112
+ <i class="pi pi-check ml-auto text-blue-500 text-lg"></i>
113
+ }
114
+ </div>
115
+ }
116
+
117
+ @if (!(props.options?.length)) {
118
+ <div class="p-3 text-gray-500">
119
+ {{ 'COMMON.NO_DATA' | translate }}
120
+ </div>
121
+ }
122
+ </div>
123
+ </ng-template>
124
+ </p-popover>
125
125
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.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: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i4.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
126
126
  }
127
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlySelectionButtonComponent, decorators: [{
@@ -134,52 +134,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
134
134
  PopoverModule,
135
135
  TranslatePipe
136
136
  ],
137
- template: `
138
- <p-button
139
- type="button"
140
- [label]="getButtonLabel()"
141
- [icon]="getButtonIcon()"
142
- (click)="popover.toggle($event)"
143
- styleClass="p-button-secondary p-button-outlined p-button-sm"
144
- ></p-button>
145
-
146
- <p-popover #popover [style]="{'min-width': '250px'}">
147
- <ng-template pTemplate="content">
148
- <div class="flex flex-col p-2">
149
- @if (props.popoverHeader) {
150
- <div class="text-xs text-gray-500 mb-2">
151
- {{ props.popoverHeader | translate }}
152
- </div>
153
- }
154
-
155
- @for (option of props.options || []; track option) {
156
- <div
157
- class="flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded"
158
- (click)="onSelect(option[props.optionValue])"
159
- >
160
- @if (option.icon) {
161
- <i [class]="option.icon" class="mr-2 text-lg"></i>
162
- }
163
- <div class="flex flex-col">
164
- <span class="font-medium">{{ (option[props.optionLabel] || '') | translate }}</span>
165
- @if (option.description) {
166
- <span class="text-xs text-gray-500">{{ option.description | translate }}</span>
167
- }
168
- </div>
169
- @if (formControl.value === option[props.optionValue]) {
170
- <i class="pi pi-check ml-auto text-blue-500 text-lg"></i>
171
- }
172
- </div>
173
- }
174
-
175
- @if (!(props.options?.length)) {
176
- <div class="p-3 text-gray-500">
177
- {{ 'COMMON.NO_DATA' | translate }}
178
- </div>
179
- }
180
- </div>
181
- </ng-template>
182
- </p-popover>
137
+ template: `
138
+ <p-button
139
+ type="button"
140
+ [label]="getButtonLabel()"
141
+ [icon]="getButtonIcon()"
142
+ (click)="popover.toggle($event)"
143
+ styleClass="p-button-secondary p-button-outlined p-button-sm"
144
+ ></p-button>
145
+
146
+ <p-popover #popover [style]="{'min-width': '250px'}">
147
+ <ng-template pTemplate="content">
148
+ <div class="flex flex-col p-2">
149
+ @if (props.popoverHeader) {
150
+ <div class="text-xs text-gray-500 mb-2">
151
+ {{ props.popoverHeader | translate }}
152
+ </div>
153
+ }
154
+
155
+ @for (option of props.options || []; track option) {
156
+ <div
157
+ class="flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded"
158
+ (click)="onSelect(option[props.optionValue])"
159
+ >
160
+ @if (option.icon) {
161
+ <i [class]="option.icon" class="mr-2 text-lg"></i>
162
+ }
163
+ <div class="flex flex-col">
164
+ <span class="font-medium">{{ (option[props.optionLabel] || '') | translate }}</span>
165
+ @if (option.description) {
166
+ <span class="text-xs text-gray-500">{{ option.description | translate }}</span>
167
+ }
168
+ </div>
169
+ @if (formControl.value === option[props.optionValue]) {
170
+ <i class="pi pi-check ml-auto text-blue-500 text-lg"></i>
171
+ }
172
+ </div>
173
+ }
174
+
175
+ @if (!(props.options?.length)) {
176
+ <div class="p-3 text-gray-500">
177
+ {{ 'COMMON.NO_DATA' | translate }}
178
+ </div>
179
+ }
180
+ </div>
181
+ </ng-template>
182
+ </p-popover>
183
183
  `,
184
184
  }]
185
185
  }], ctorParameters: () => [{ type: i1.LocalizationService }], propDecorators: { popover: [{
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-formly-button-selector.mjs","sources":["../../../../libs/ng.ui.core/formly-button-selector/src/lib/formly-button-selector-module.ts","../../../../libs/ng.ui.core/formly-button-selector/src/lib/formly-button-selector.ts","../../../../libs/ng.ui.core/formly-button-selector/src/es.framework-ng.ui.core-formly-button-selector.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 FormlyButtonSelectorModule {}\r\n","// formly-selection-button.component.ts\r\n\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\r\n\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { PopoverModule } from 'primeng/popover';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { Popover } from 'primeng/popover';\r\nimport { LocalizationService } from '@es.framework/ng.core/services';\r\n\r\ninterface SelectionButtonProps {\r\n options?: any[]; // مصفوفة الخيارات (قد تكون undefined)\r\n optionLabel: string; // حقل النص في كل خيار\r\n optionValue: string; // حقل القيمة في كل خيار\r\n popoverHeader?: string;\r\n buttonLabel?: string;\r\n buttonIcon?: string;\r\n onSelect?: (value: any) => void;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-selection-button',\r\n standalone: true,\r\n imports: [\r\n ButtonModule,\r\n PopoverModule,\r\n TranslatePipe\r\n],\r\n template: `\r\n <p-button\r\n type=\"button\"\r\n [label]=\"getButtonLabel()\"\r\n [icon]=\"getButtonIcon()\"\r\n (click)=\"popover.toggle($event)\"\r\n styleClass=\"p-button-secondary p-button-outlined p-button-sm\"\r\n ></p-button>\r\n \r\n <p-popover #popover [style]=\"{'min-width': '250px'}\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"flex flex-col p-2\">\r\n @if (props.popoverHeader) {\r\n <div class=\"text-xs text-gray-500 mb-2\">\r\n {{ props.popoverHeader | translate }}\r\n </div>\r\n }\r\n \r\n @for (option of props.options || []; track option) {\r\n <div\r\n class=\"flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded\"\r\n (click)=\"onSelect(option[props.optionValue])\"\r\n >\r\n @if (option.icon) {\r\n <i [class]=\"option.icon\" class=\"mr-2 text-lg\"></i>\r\n }\r\n <div class=\"flex flex-col\">\r\n <span class=\"font-medium\">{{ (option[props.optionLabel] || '') | translate }}</span>\r\n @if (option.description) {\r\n <span class=\"text-xs text-gray-500\">{{ option.description | translate }}</span>\r\n }\r\n </div>\r\n @if (formControl.value === option[props.optionValue]) {\r\n <i class=\"pi pi-check ml-auto text-blue-500 text-lg\"></i>\r\n }\r\n </div>\r\n }\r\n \r\n @if (!(props.options?.length)) {\r\n <div class=\"p-3 text-gray-500\">\r\n {{ 'COMMON.NO_DATA' | translate }}\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </p-popover>\r\n `,\r\n})\r\nexport class FormlySelectionButtonComponent extends FieldType<FieldTypeConfig<SelectionButtonProps>> implements OnInit {\r\n @ViewChild('popover') popover!: Popover;\r\n\r\n constructor(private translate: LocalizationService) {\r\n super();\r\n }\r\n\r\n getButtonLabel(): string {\r\n const value = this.formControl.value;\r\n const options = this.props.options ?? [];\r\n const selected = options.find(opt => opt[this.props.optionValue] === value);\r\n\r\n if (selected) {\r\n const labelKey = selected[this.props.optionLabel] ?? '';\r\n return labelKey ? this.translate.instant(labelKey) : String(selected[this.props.optionLabel] ?? '');\r\n }\r\n\r\n // fallback to provided buttonLabel (could be a translation key)\r\n if (this.props.buttonLabel) {\r\n return this.translate.instant(this.props.buttonLabel);\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getButtonIcon(): string | undefined {\r\n const value = this.formControl.value;\r\n const options = this.props.options ?? [];\r\n const selected = options.find(opt => opt[this.props.optionValue] === value);\r\n\r\n if (selected && selected.icon) {\r\n return selected.icon;\r\n }\r\n\r\n return this.props.buttonIcon;\r\n }\r\n\r\n onSelect(value: any): void {\r\n // حدّد القيمة في الفورم\r\n this.formControl.setValue(value);\r\n\r\n // اغلاق البوبوفر\r\n try {\r\n this.popover?.hide();\r\n } catch (e) {\r\n // تجاهل لو ما اشتغل hide لسبب ما\r\n }\r\n\r\n // نفّذ callback إن وُجد\r\n if (this.props.onSelect) {\r\n this.props.onSelect(value);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n const options = this.props.options ?? [];\r\n const defaultValue = (this.formControl.value != null) ? this.formControl.value : options[0]?.[this.props.optionValue];\r\n if (defaultValue != null) {\r\n this.formControl.setValue(defaultValue);\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-formly-button-selector.mjs","sources":["../../../../libs/ng.ui.core/formly-button-selector/src/lib/formly-button-selector-module.ts","../../../../libs/ng.ui.core/formly-button-selector/src/lib/formly-button-selector.ts","../../../../libs/ng.ui.core/formly-button-selector/src/es.framework-ng.ui.core-formly-button-selector.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class FormlyButtonSelectorModule {}\n","// formly-selection-button.component.ts\n\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\n\nimport { ButtonModule } from 'primeng/button';\nimport { PopoverModule } from 'primeng/popover';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { Popover } from 'primeng/popover';\nimport { LocalizationService } from '@es.framework/ng.core/services';\n\ninterface SelectionButtonProps {\n options?: any[]; // مصفوفة الخيارات (قد تكون undefined)\n optionLabel: string; // حقل النص في كل خيار\n optionValue: string; // حقل القيمة في كل خيار\n popoverHeader?: string;\n buttonLabel?: string;\n buttonIcon?: string;\n onSelect?: (value: any) => void;\n}\n\n@Component({\n selector: 'formly-selection-button',\n standalone: true,\n imports: [\n ButtonModule,\n PopoverModule,\n TranslatePipe\n],\n template: `\n <p-button\n type=\"button\"\n [label]=\"getButtonLabel()\"\n [icon]=\"getButtonIcon()\"\n (click)=\"popover.toggle($event)\"\n styleClass=\"p-button-secondary p-button-outlined p-button-sm\"\n ></p-button>\n \n <p-popover #popover [style]=\"{'min-width': '250px'}\">\n <ng-template pTemplate=\"content\">\n <div class=\"flex flex-col p-2\">\n @if (props.popoverHeader) {\n <div class=\"text-xs text-gray-500 mb-2\">\n {{ props.popoverHeader | translate }}\n </div>\n }\n \n @for (option of props.options || []; track option) {\n <div\n class=\"flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded\"\n (click)=\"onSelect(option[props.optionValue])\"\n >\n @if (option.icon) {\n <i [class]=\"option.icon\" class=\"mr-2 text-lg\"></i>\n }\n <div class=\"flex flex-col\">\n <span class=\"font-medium\">{{ (option[props.optionLabel] || '') | translate }}</span>\n @if (option.description) {\n <span class=\"text-xs text-gray-500\">{{ option.description | translate }}</span>\n }\n </div>\n @if (formControl.value === option[props.optionValue]) {\n <i class=\"pi pi-check ml-auto text-blue-500 text-lg\"></i>\n }\n </div>\n }\n \n @if (!(props.options?.length)) {\n <div class=\"p-3 text-gray-500\">\n {{ 'COMMON.NO_DATA' | translate }}\n </div>\n }\n </div>\n </ng-template>\n </p-popover>\n `,\n})\nexport class FormlySelectionButtonComponent extends FieldType<FieldTypeConfig<SelectionButtonProps>> implements OnInit {\n @ViewChild('popover') popover!: Popover;\n\n constructor(private translate: LocalizationService) {\n super();\n }\n\n getButtonLabel(): string {\n const value = this.formControl.value;\n const options = this.props.options ?? [];\n const selected = options.find(opt => opt[this.props.optionValue] === value);\n\n if (selected) {\n const labelKey = selected[this.props.optionLabel] ?? '';\n return labelKey ? this.translate.instant(labelKey) : String(selected[this.props.optionLabel] ?? '');\n }\n\n // fallback to provided buttonLabel (could be a translation key)\n if (this.props.buttonLabel) {\n return this.translate.instant(this.props.buttonLabel);\n }\n\n return '';\n }\n\n getButtonIcon(): string | undefined {\n const value = this.formControl.value;\n const options = this.props.options ?? [];\n const selected = options.find(opt => opt[this.props.optionValue] === value);\n\n if (selected && selected.icon) {\n return selected.icon;\n }\n\n return this.props.buttonIcon;\n }\n\n onSelect(value: any): void {\n // حدّد القيمة في الفورم\n this.formControl.setValue(value);\n\n // اغلاق البوبوفر\n try {\n this.popover?.hide();\n } catch (e) {\n // تجاهل لو ما اشتغل hide لسبب ما\n }\n\n // نفّذ callback إن وُجد\n if (this.props.onSelect) {\n this.props.onSelect(value);\n }\n }\n\n ngOnInit(): void {\n const options = this.props.options ?? [];\n const defaultValue = (this.formControl.value != null) ? this.formControl.value : options[0]?.[this.props.optionValue];\n if (defaultValue != null) {\n this.formControl.setValue(defaultValue);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -24,36 +24,36 @@ class FormlyButtonComponent extends FieldType {
24
24
  return this.field.props;
25
25
  }
26
26
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
27
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: FormlyButtonComponent, isStandalone: true, selector: "formly-button", usesInheritance: true, ngImport: i0, template: `
28
- <div class="flex items-cente flex-col text-gray-700 text-sm mb-4" style="flex-direction: row-reverse;">
29
- <button
30
- pButton
31
- pRipple
32
- type="button"
33
- icon="pi pi-expand"
34
- class="p-button-text p-button-sm"
35
- (click)="to.onExpand && to.onExpand(field, model)"
36
- ></button>
37
- </div>
38
-
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: FormlyButtonComponent, isStandalone: true, selector: "formly-button", usesInheritance: true, ngImport: i0, template: `
28
+ <div class="flex items-cente flex-col text-gray-700 text-sm mb-4" style="flex-direction: row-reverse;">
29
+ <button
30
+ pButton
31
+ pRipple
32
+ type="button"
33
+ icon="pi pi-expand"
34
+ class="p-button-text p-button-sm"
35
+ (click)="to.onExpand && to.onExpand(field, model)"
36
+ ></button>
37
+ </div>
38
+
39
39
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
40
  }
41
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyButtonComponent, decorators: [{
42
42
  type: Component,
43
43
  args: [{
44
44
  selector: 'formly-button',
45
- template: `
46
- <div class="flex items-cente flex-col text-gray-700 text-sm mb-4" style="flex-direction: row-reverse;">
47
- <button
48
- pButton
49
- pRipple
50
- type="button"
51
- icon="pi pi-expand"
52
- class="p-button-text p-button-sm"
53
- (click)="to.onExpand && to.onExpand(field, model)"
54
- ></button>
55
- </div>
56
-
45
+ template: `
46
+ <div class="flex items-cente flex-col text-gray-700 text-sm mb-4" style="flex-direction: row-reverse;">
47
+ <button
48
+ pButton
49
+ pRipple
50
+ type="button"
51
+ icon="pi pi-expand"
52
+ class="p-button-text p-button-sm"
53
+ (click)="to.onExpand && to.onExpand(field, model)"
54
+ ></button>
55
+ </div>
56
+
57
57
  `,
58
58
  imports: [
59
59
  ButtonModule,
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-formly-button.mjs","sources":["../../../../libs/ng.ui.core/formly-button/src/lib/formly-button-module.ts","../../../../libs/ng.ui.core/formly-button/src/lib/formly-button.ts","../../../../libs/ng.ui.core/formly-button/src/es.framework-ng.ui.core-formly-button.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 FormlyButtonModule {}\r\n","\r\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType } from '@ngx-formly/core';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\ninterface TemplateOptions {\r\n onExpand?: (field: any, model: any) => void;\r\n // other props...\r\n}\r\n\r\n@Component({\r\n selector: 'formly-button',\r\n template: `\r\n <div class=\"flex items-cente flex-col text-gray-700 text-sm mb-4\" style=\"flex-direction: row-reverse;\">\r\n<button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n icon=\"pi pi-expand\"\r\n class=\"p-button-text p-button-sm\"\r\n (click)=\"to.onExpand && to.onExpand(field, model)\"\r\n ></button>\r\n </div>\r\n\r\n `,\r\n imports: [\r\n ButtonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslatePipe\r\n],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FormlyButtonComponent extends FieldType {\r\n\r\n override get to(): TemplateOptions {\r\n return this.field.props as TemplateOptions;\r\n}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAMa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAFnB,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,kBAAkB,YAFnB,YAAY,CAAA,EAAA,CAAA;;2FAEX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;AC8BK,MAAO,qBAAsB,SAAQ,SAAS,CAAA;AAElD,IAAA,IAAa,EAAE,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAwB;IAC5C;uGAJa,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBtB,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA;AACA,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB;AACH,qBAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;AClCD;;AAEG;;;;"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-formly-button.mjs","sources":["../../../../libs/ng.ui.core/formly-button/src/lib/formly-button-module.ts","../../../../libs/ng.ui.core/formly-button/src/lib/formly-button.ts","../../../../libs/ng.ui.core/formly-button/src/es.framework-ng.ui.core-formly-button.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class FormlyButtonModule {}\n","\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { ButtonModule } from 'primeng/button';\n\ninterface TemplateOptions {\n onExpand?: (field: any, model: any) => void;\n // other props...\n}\n\n@Component({\n selector: 'formly-button',\n template: `\n <div class=\"flex items-cente flex-col text-gray-700 text-sm mb-4\" style=\"flex-direction: row-reverse;\">\n<button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-expand\"\n class=\"p-button-text p-button-sm\"\n (click)=\"to.onExpand && to.onExpand(field, model)\"\n ></button>\n </div>\n\n `,\n imports: [\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslatePipe\n],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyButtonComponent extends FieldType {\n\n override get to(): TemplateOptions {\n return this.field.props as TemplateOptions;\n}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAMa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAFnB,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,kBAAkB,YAFnB,YAAY,CAAA,EAAA,CAAA;;2FAEX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;AC8BK,MAAO,qBAAsB,SAAQ,SAAS,CAAA;AAElD,IAAA,IAAa,EAAE,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAwB;IAC5C;uGAJa,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBtB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACA,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB;AACH,qBAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;AClCD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-formly-presets.mjs","sources":["../../../../libs/ng.ui.core/formly-presets/src/lib/formly-presets-module.ts","../../../../libs/ng.ui.core/formly-presets/src/lib/formly-presets.ts","../../../../libs/ng.ui.core/formly-presets/src/es.framework-ng.ui.core-formly-presets.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 FormlyPresetsModule {}\r\n","import { FormlyFieldConfig } from \"@ngx-formly/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport const DEFAULT_CONTROL_CLASS = [\r\n 'w-full',\r\n 'border',\r\n 'border-gray-300',\r\n 'rounded',\r\n 'focus:outline-none',\r\n 'focus:ring-2',\r\n 'focus:ring-green-400',\r\n].join(' ');\r\n\r\n\r\nexport interface SelectOption {\r\n label: string;\r\n value: any;\r\n icon?: string; // ← allow icon\r\n}\r\n\r\nexport function numberField(\r\n key: string,\r\n label: string,\r\n required = false,\r\n className = 'col-span-1',\r\n): FormlyFieldConfig {\r\n return {\r\n key,\r\n type: 'input',\r\n className,\r\n wrappers: ['form-field'],\r\n templateOptions: {\r\n type:\"number\",\r\n label,\r\n required,\r\n attributes: { class: DEFAULT_CONTROL_CLASS },\r\n },\r\n };\r\n}\r\n\r\nexport function textField(\r\n key: string,\r\n label: string,\r\n required = false,\r\n className = 'col-span-1',\r\n // ✅ تم تغيير هذا البراميتر ليقبل خصائص إضافية لـ templateOptions\r\n extraTemplateOptions?: { [key: string]: any }\r\n): FormlyFieldConfig {\r\n return {\r\n key,\r\n type: 'advanced-input',\r\n className,\r\n wrappers: ['form-field'],\r\n props: {\r\n label,\r\n required,\r\n attributes: {\r\n class: DEFAULT_CONTROL_CLASS,\r\n },\r\n // ✅ دمج الخصائص الإضافية هنا\r\n ...extraTemplateOptions,\r\n },\r\n };\r\n}\r\n\r\nexport function textField2(\r\n key: string,\r\n label: string,\r\n required = false,\r\n className = 'col-span-1',\r\n expressions?: FormlyFieldConfig['expressions']\r\n): FormlyFieldConfig {\r\n return {\r\n key,\r\n type: 'input',\r\n className,\r\n wrappers: ['form-field'],\r\n templateOptions: {\r\n label,\r\n required,\r\n attributes: {\r\n class: DEFAULT_CONTROL_CLASS,\r\n },\r\n // ✅ اضف disabled ليتضبب الحقل إذا كان readonly\r\n },\r\n expressions,\r\n };\r\n}\r\n\r\n\r\nexport function textareaField(\r\n key: string,\r\n label: string,\r\n rows = 3,\r\n className = 'col-span-1',\r\n): FormlyFieldConfig {\r\n return {\r\n key,\r\n type: 'textarea',\r\n className,\r\n wrappers: ['form-field'],\r\n templateOptions: {\r\n label,\r\n rows,\r\n attributes: { class: DEFAULT_CONTROL_CLASS },\r\n },\r\n };\r\n}\r\n\r\n// formly-presets.ts\r\n\r\n export interface SelectFieldOptions {\r\n key: string;\r\n label: string;\r\n options?: SelectOption[] | Observable<SelectOption[]>;\r\n className?: string;\r\n defaultValue?: any;\r\n required?: boolean;\r\n fullWidth?: boolean;\r\n }\r\n\r\nexport function selectField({\r\n key,\r\n label,\r\n options = [],\r\n className,\r\n defaultValue,\r\n fullWidth = false,\r\n required = false,\r\n}: SelectFieldOptions): FormlyFieldConfig {\r\n const config: FormlyFieldConfig = {\r\n key,\r\n type: 'select',\r\n className: className ?? (fullWidth ? 'col-span-2' : 'col-span-1'),\r\n wrappers: ['form-field'],\r\n templateOptions: {\r\n label,\r\n options,\r\n required,\r\n placeholder: `اختر ${label}`,\r\n showClear: true,\r\n filter: true,\r\n appendTo: 'body',\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n attributes: { class: DEFAULT_CONTROL_CLASS },\r\n },\r\n };\r\n\r\n\r\n if (options !== undefined) {\r\n config.templateOptions!.options = options;\r\n }\r\n\r\n if (defaultValue !== undefined) {\r\n config.defaultValue = defaultValue;\r\n }\r\n\r\n return config;\r\n}\r\n\r\n\r\n\r\n// export function checkboxField(\r\n// key: string,\r\n// label: string,\r\n// required = false,\r\n// className = 'col-span-1',\r\n// useNumberMapping = false\r\n// ): FormlyFieldConfig {\r\n// const field: FormlyFieldConfig = {\r\n// key,\r\n// type: 'checkbox',\r\n// className,\r\n// wrappers: ['form-field'],\r\n// templateOptions: {\r\n// label,\r\n// required,\r\n// attributes: {\r\n// class: 'flex items-center gap-2',\r\n// },\r\n// },\r\n// };\r\n\r\n// if (useNumberMapping) {\r\n// field.hooks = {\r\n// onInit: (field) => {\r\n// // ✅ تهيئة القيمة داخل الفورم كنترول\r\n// const initialValue = field.model?.[key];\r\n// if (initialValue === 1 || initialValue === 2) {\r\n// field.formControl?.setValue(initialValue === 1, { emitEvent: false });\r\n// }\r\n\r\n// // ✅ تحويل عند تغيّر القيمة من الـ checkbox\r\n// field.formControl?.valueChanges.subscribe(val => {\r\n// const newValue = val ? 1 : 2;\r\n// if (field.model) {\r\n// field.model[key] = newValue;\r\n// }\r\n// });\r\n// }\r\n// };\r\n// }\r\n\r\n// return field;\r\n// }\r\n\r\n\r\n\r\n\r\nexport function checkboxField(\r\n key: string,\r\n label: string,\r\n required = false,\r\n className = 'col-span-1',\r\n): FormlyFieldConfig {\r\n return {\r\n key,\r\n type: 'checkbox',\r\n className,\r\n wrappers: ['form-field'],\r\n templateOptions: {\r\n label,\r\n required,\r\n attributes: {\r\n class: 'flex items-center gap-2',\r\n },\r\n },\r\n hooks: {\r\n onInit: (field) => {\r\n const val = field.model?.[key];\r\n\r\n if (val === 1) {\r\n field.formControl?.setValue(true, { emitEvent: false });\r\n } else if (val === 2) {\r\n field.formControl?.setValue(false, { emitEvent: false });\r\n } else if (val === undefined) {\r\n field.model[key] = 2; // تعيين القيمة الافتراضية في الموديل\r\n field.formControl?.setValue(false, { emitEvent: false });\r\n } else {\r\n field.formControl?.setValue(false, { emitEvent: false });\r\n }\r\n\r\n field.formControl?.valueChanges.subscribe(val => {\r\n const newVal = val ? 1 : 2;\r\n if (field.model && field.model[key] !== newVal) {\r\n field.model[key] = newVal;\r\n }\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-formly-presets.mjs","sources":["../../../../libs/ng.ui.core/formly-presets/src/lib/formly-presets-module.ts","../../../../libs/ng.ui.core/formly-presets/src/lib/formly-presets.ts","../../../../libs/ng.ui.core/formly-presets/src/es.framework-ng.ui.core-formly-presets.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class FormlyPresetsModule {}\n","import { FormlyFieldConfig } from \"@ngx-formly/core\";\nimport { Observable } from \"rxjs\";\n\nexport const DEFAULT_CONTROL_CLASS = [\n 'w-full',\n 'border',\n 'border-gray-300',\n 'rounded',\n 'focus:outline-none',\n 'focus:ring-2',\n 'focus:ring-green-400',\n].join(' ');\n\n\nexport interface SelectOption {\n label: string;\n value: any;\n icon?: string; // ← allow icon\n}\n\nexport function numberField(\n key: string,\n label: string,\n required = false,\n className = 'col-span-1',\n): FormlyFieldConfig {\n return {\n key,\n type: 'input',\n className,\n wrappers: ['form-field'],\n templateOptions: {\n type:\"number\",\n label,\n required,\n attributes: { class: DEFAULT_CONTROL_CLASS },\n },\n };\n}\n\nexport function textField(\n key: string,\n label: string,\n required = false,\n className = 'col-span-1',\n // ✅ تم تغيير هذا البراميتر ليقبل خصائص إضافية لـ templateOptions\n extraTemplateOptions?: { [key: string]: any }\n): FormlyFieldConfig {\n return {\n key,\n type: 'advanced-input',\n className,\n wrappers: ['form-field'],\n props: {\n label,\n required,\n attributes: {\n class: DEFAULT_CONTROL_CLASS,\n },\n // ✅ دمج الخصائص الإضافية هنا\n ...extraTemplateOptions,\n },\n };\n}\n\nexport function textField2(\n key: string,\n label: string,\n required = false,\n className = 'col-span-1',\n expressions?: FormlyFieldConfig['expressions']\n): FormlyFieldConfig {\n return {\n key,\n type: 'input',\n className,\n wrappers: ['form-field'],\n templateOptions: {\n label,\n required,\n attributes: {\n class: DEFAULT_CONTROL_CLASS,\n },\n // ✅ اضف disabled ليتضبب الحقل إذا كان readonly\n },\n expressions,\n };\n}\n\n\nexport function textareaField(\n key: string,\n label: string,\n rows = 3,\n className = 'col-span-1',\n): FormlyFieldConfig {\n return {\n key,\n type: 'textarea',\n className,\n wrappers: ['form-field'],\n templateOptions: {\n label,\n rows,\n attributes: { class: DEFAULT_CONTROL_CLASS },\n },\n };\n}\n\n// formly-presets.ts\n\n export interface SelectFieldOptions {\n key: string;\n label: string;\n options?: SelectOption[] | Observable<SelectOption[]>;\n className?: string;\n defaultValue?: any;\n required?: boolean;\n fullWidth?: boolean;\n }\n\nexport function selectField({\n key,\n label,\n options = [],\n className,\n defaultValue,\n fullWidth = false,\n required = false,\n}: SelectFieldOptions): FormlyFieldConfig {\n const config: FormlyFieldConfig = {\n key,\n type: 'select',\n className: className ?? (fullWidth ? 'col-span-2' : 'col-span-1'),\n wrappers: ['form-field'],\n templateOptions: {\n label,\n options,\n required,\n placeholder: `اختر ${label}`,\n showClear: true,\n filter: true,\n appendTo: 'body',\n optionLabel: 'label',\n optionValue: 'value',\n attributes: { class: DEFAULT_CONTROL_CLASS },\n },\n };\n\n\n if (options !== undefined) {\n config.templateOptions!.options = options;\n }\n\n if (defaultValue !== undefined) {\n config.defaultValue = defaultValue;\n }\n\n return config;\n}\n\n\n\n// export function checkboxField(\n// key: string,\n// label: string,\n// required = false,\n// className = 'col-span-1',\n// useNumberMapping = false\n// ): FormlyFieldConfig {\n// const field: FormlyFieldConfig = {\n// key,\n// type: 'checkbox',\n// className,\n// wrappers: ['form-field'],\n// templateOptions: {\n// label,\n// required,\n// attributes: {\n// class: 'flex items-center gap-2',\n// },\n// },\n// };\n\n// if (useNumberMapping) {\n// field.hooks = {\n// onInit: (field) => {\n// // ✅ تهيئة القيمة داخل الفورم كنترول\n// const initialValue = field.model?.[key];\n// if (initialValue === 1 || initialValue === 2) {\n// field.formControl?.setValue(initialValue === 1, { emitEvent: false });\n// }\n\n// // ✅ تحويل عند تغيّر القيمة من الـ checkbox\n// field.formControl?.valueChanges.subscribe(val => {\n// const newValue = val ? 1 : 2;\n// if (field.model) {\n// field.model[key] = newValue;\n// }\n// });\n// }\n// };\n// }\n\n// return field;\n// }\n\n\n\n\nexport function checkboxField(\n key: string,\n label: string,\n required = false,\n className = 'col-span-1',\n): FormlyFieldConfig {\n return {\n key,\n type: 'checkbox',\n className,\n wrappers: ['form-field'],\n templateOptions: {\n label,\n required,\n attributes: {\n class: 'flex items-center gap-2',\n },\n },\n hooks: {\n onInit: (field) => {\n const val = field.model?.[key];\n\n if (val === 1) {\n field.formControl?.setValue(true, { emitEvent: false });\n } else if (val === 2) {\n field.formControl?.setValue(false, { emitEvent: false });\n } else if (val === undefined) {\n field.model[key] = 2; // تعيين القيمة الافتراضية في الموديل\n field.formControl?.setValue(false, { emitEvent: false });\n } else {\n field.formControl?.setValue(false, { emitEvent: false });\n }\n\n field.formControl?.valueChanges.subscribe(val => {\n const newVal = val ? 1 : 2;\n if (field.model && field.model[key] !== newVal) {\n field.model[key] = newVal;\n }\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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"}