@elite.framework/ng.core 1.0.63 → 1.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/fesm2022/elite.framework-ng.core-src-lib-components-attachments.mjs +204 -0
  2. package/fesm2022/elite.framework-ng.core-src-lib-components-attachments.mjs.map +1 -0
  3. package/fesm2022/elite.framework-ng.core-src-lib-components-breadcrumb.mjs +132 -0
  4. package/fesm2022/elite.framework-ng.core-src-lib-components-breadcrumb.mjs.map +1 -0
  5. package/fesm2022/elite.framework-ng.core-src-lib-components-color-picker.mjs +76 -0
  6. package/fesm2022/elite.framework-ng.core-src-lib-components-color-picker.mjs.map +1 -0
  7. package/fesm2022/elite.framework-ng.core-src-lib-components-column-settings-popover.mjs +172 -0
  8. package/fesm2022/elite.framework-ng.core-src-lib-components-column-settings-popover.mjs.map +1 -0
  9. package/fesm2022/elite.framework-ng.core-src-lib-components-condition-editor.mjs +794 -0
  10. package/fesm2022/elite.framework-ng.core-src-lib-components-condition-editor.mjs.map +1 -0
  11. package/fesm2022/elite.framework-ng.core-src-lib-components-custom-switch.mjs +110 -0
  12. package/fesm2022/elite.framework-ng.core-src-lib-components-custom-switch.mjs.map +1 -0
  13. package/fesm2022/elite.framework-ng.core-src-lib-components-deactivation-reason.mjs +130 -0
  14. package/fesm2022/elite.framework-ng.core-src-lib-components-deactivation-reason.mjs.map +1 -0
  15. package/fesm2022/elite.framework-ng.core-src-lib-components-form-button.mjs +50 -0
  16. package/fesm2022/elite.framework-ng.core-src-lib-components-form-button.mjs.map +1 -0
  17. package/fesm2022/elite.framework-ng.core-src-lib-components-form-field.mjs +154 -0
  18. package/fesm2022/elite.framework-ng.core-src-lib-components-form-field.mjs.map +1 -0
  19. package/fesm2022/elite.framework-ng.core-src-lib-components-form-template.mjs +24 -0
  20. package/fesm2022/elite.framework-ng.core-src-lib-components-form-template.mjs.map +1 -0
  21. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-image.mjs +100 -0
  22. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-image.mjs.map +1 -0
  23. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-label.mjs +78 -0
  24. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-label.mjs.map +1 -0
  25. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button-selector.mjs +167 -0
  26. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button-selector.mjs.map +1 -0
  27. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button.mjs +62 -0
  28. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button.mjs.map +1 -0
  29. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-split-button.mjs +50 -0
  30. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-split-button.mjs.map +1 -0
  31. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-username-with-domain.mjs +76 -0
  32. package/fesm2022/elite.framework-ng.core-src-lib-components-formly-username-with-domain.mjs.map +1 -0
  33. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-autocomplete.mjs +163 -0
  34. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-autocomplete.mjs.map +1 -0
  35. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-button.mjs +133 -0
  36. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-button.mjs.map +1 -0
  37. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-card.mjs +214 -0
  38. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-card.mjs.map +1 -0
  39. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-crud-table.mjs +385 -0
  40. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-crud-table.mjs.map +1 -0
  41. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-errormessage.mjs +23 -0
  42. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-errormessage.mjs.map +1 -0
  43. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-formly-fields.mjs +53 -0
  44. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-formly-fields.mjs.map +1 -0
  45. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-loadingspinner.mjs +23 -0
  46. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-loadingspinner.mjs.map +1 -0
  47. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-search.mjs +85 -0
  48. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-search.mjs.map +1 -0
  49. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-selector.mjs +430 -0
  50. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-selector.mjs.map +1 -0
  51. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-table.mjs +216 -0
  52. package/fesm2022/elite.framework-ng.core-src-lib-components-generic-table.mjs.map +1 -0
  53. package/fesm2022/elite.framework-ng.core-src-lib-components-header-wrapper.mjs +18 -0
  54. package/fesm2022/elite.framework-ng.core-src-lib-components-header-wrapper.mjs.map +1 -0
  55. package/fesm2022/elite.framework-ng.core-src-lib-components-icon-picker.mjs +195 -0
  56. package/fesm2022/elite.framework-ng.core-src-lib-components-icon-picker.mjs.map +1 -0
  57. package/fesm2022/elite.framework-ng.core-src-lib-components-input-switch.mjs +94 -0
  58. package/fesm2022/elite.framework-ng.core-src-lib-components-input-switch.mjs.map +1 -0
  59. package/fesm2022/elite.framework-ng.core-src-lib-components-input-with-icon.mjs +55 -0
  60. package/fesm2022/elite.framework-ng.core-src-lib-components-input-with-icon.mjs.map +1 -0
  61. package/fesm2022/elite.framework-ng.core-src-lib-components-label-type.mjs +112 -0
  62. package/fesm2022/elite.framework-ng.core-src-lib-components-label-type.mjs.map +1 -0
  63. package/fesm2022/elite.framework-ng.core-src-lib-components-odata-query-builder.mjs +297 -0
  64. package/fesm2022/elite.framework-ng.core-src-lib-components-odata-query-builder.mjs.map +1 -0
  65. package/fesm2022/elite.framework-ng.core-src-lib-components-repeat.mjs +135 -0
  66. package/fesm2022/elite.framework-ng.core-src-lib-components-repeat.mjs.map +1 -0
  67. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-cards.mjs +40 -0
  68. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-cards.mjs.map +1 -0
  69. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs +41 -0
  70. package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs.map +1 -0
  71. package/fesm2022/elite.framework-ng.core-src-lib-components-tabs.mjs +45 -0
  72. package/fesm2022/elite.framework-ng.core-src-lib-components-tabs.mjs.map +1 -0
  73. package/fesm2022/elite.framework-ng.core-src-lib-components-tag-type.mjs +192 -0
  74. package/fesm2022/elite.framework-ng.core-src-lib-components-tag-type.mjs.map +1 -0
  75. package/fesm2022/elite.framework-ng.core-src-lib-components-text-editor.mjs +44 -0
  76. package/fesm2022/elite.framework-ng.core-src-lib-components-text-editor.mjs.map +1 -0
  77. package/fesm2022/elite.framework-ng.core-src-lib-components-wrappers.mjs +174 -0
  78. package/fesm2022/elite.framework-ng.core-src-lib-components-wrappers.mjs.map +1 -0
  79. package/fesm2022/elite.framework-ng.core-src-lib-directives.mjs +59 -0
  80. package/fesm2022/elite.framework-ng.core-src-lib-directives.mjs.map +1 -0
  81. package/fesm2022/elite.framework-ng.core-src-lib-pipes.mjs +135 -0
  82. package/fesm2022/elite.framework-ng.core-src-lib-pipes.mjs.map +1 -0
  83. package/fesm2022/elite.framework-ng.core.mjs +1643 -384
  84. package/fesm2022/elite.framework-ng.core.mjs.map +1 -1
  85. package/index.d.ts +493 -24
  86. package/package.json +14 -62
  87. package/src/lib/components/attachments/index.d.ts +31 -0
  88. package/src/lib/components/breadcrumb/index.d.ts +10 -0
  89. package/src/lib/components/color-picker/index.d.ts +9 -0
  90. package/src/lib/components/column-settings-popover/index.d.ts +39 -0
  91. package/src/lib/components/condition-editor/index.d.ts +73 -0
  92. package/src/lib/components/custom-switch/index.d.ts +12 -0
  93. package/src/lib/components/deactivation-reason/index.d.ts +24 -0
  94. package/src/lib/components/form-button/index.d.ts +10 -0
  95. package/src/lib/components/form-field/index.d.ts +30 -0
  96. package/src/lib/components/form-template/index.d.ts +9 -0
  97. package/src/lib/components/formly-avatar-image/index.d.ts +11 -0
  98. package/src/lib/components/formly-avatar-label/index.d.ts +29 -0
  99. package/src/lib/components/formly-button/index.d.ts +13 -0
  100. package/src/lib/components/formly-button-selector/index.d.ts +28 -0
  101. package/src/lib/components/formly-split-button/index.d.ts +16 -0
  102. package/src/lib/components/formly-username-with-domain/index.d.ts +12 -0
  103. package/src/lib/components/generic-autocomplete/index.d.ts +34 -0
  104. package/src/lib/components/generic-button/index.d.ts +35 -0
  105. package/src/lib/components/generic-card/index.d.ts +90 -0
  106. package/src/lib/components/generic-crud-table/index.d.ts +120 -0
  107. package/src/lib/components/generic-errormessage/index.d.ts +10 -0
  108. package/src/lib/components/generic-formly-fields/index.d.ts +22 -0
  109. package/src/lib/components/generic-loadingspinner/index.d.ts +9 -0
  110. package/src/lib/components/generic-search/index.d.ts +29 -0
  111. package/src/lib/components/generic-selector/index.d.ts +66 -0
  112. package/src/lib/components/generic-table/index.d.ts +60 -0
  113. package/src/lib/components/header-wrapper/index.d.ts +8 -0
  114. package/src/lib/components/icon-picker/index.d.ts +23 -0
  115. package/src/lib/components/input-switch/index.d.ts +9 -0
  116. package/src/lib/components/input-with-icon/index.d.ts +10 -0
  117. package/src/lib/components/label-type/index.d.ts +19 -0
  118. package/src/lib/components/odata-query-builder/index.d.ts +81 -0
  119. package/src/lib/components/repeat/index.d.ts +17 -0
  120. package/src/lib/components/sidebar-cards/index.d.ts +18 -0
  121. package/src/lib/components/sidebar-toggles/index.d.ts +18 -0
  122. package/src/lib/components/tabs/index.d.ts +10 -0
  123. package/src/lib/components/tag-type/index.d.ts +27 -0
  124. package/src/lib/components/text-editor/index.d.ts +9 -0
  125. package/src/lib/components/wrappers/index.d.ts +24 -0
  126. package/src/lib/directives/index.d.ts +23 -0
  127. package/src/lib/pipes/index.d.ts +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-condition-editor.mjs","sources":["../../../projects/core/src/lib/components/condition-editor/suggestions.ts","../../../projects/core/src/lib/components/condition-editor/condition-editor-type.ts","../../../projects/core/src/lib/components/condition-editor/elite.framework-ng.core-src-lib-components-condition-editor.ts"],"sourcesContent":["export interface Suggestion {\r\n id?: number;\r\n name?: string;\r\n label: string;\r\n value: string;\r\n detail?: string;\r\n documentation?: string;\r\n kind?: string;\r\n category?: string;\r\n}\r\nexport const suggestions: Suggestion[] = [\r\n {\r\n label: \"عدد دقائق التأخير\",\r\n value: \"AttendanceDelayMinutes\",\r\n kind: \"Field\",\r\n detail: \"عدد دقائق التأخير\",\r\n documentation: \"**AttendanceDelayMinutes**\\nعدد الدقائق التي تأخر بها الموظف عن بدء الورديّة.\"\r\n },\r\n {\r\n label: \"دقائق الانصراف المبكر\",\r\n value: \"EarlyLeaveMinutes\",\r\n kind: \"Field\",\r\n detail: \"دقائق الانصراف المبكر\",\r\n documentation: \"**EarlyLeaveMinutes**\\nعدد الدقائق التي سجل بها الموظف انسحابًا مبكرًا عن الورديّة.\"\r\n },\r\n {\r\n label: \"سعر الساعة\",\r\n value: \"HourlyRate\",\r\n kind: \"Field\",\r\n detail: \"سعر الساعة\",\r\n documentation: \"**HourlyRate**\\nتكلفة الساعة المستخرجة من الراتب الأساسي وساعات العمل المتوقعة.\"\r\n },\r\n {\r\n label: \"قيمة اليوم المتوقعة\",\r\n value: \"ScheduledDayValue\",\r\n kind: \"Field\",\r\n detail: \"قيمة اليوم المتوقعة\",\r\n documentation: \"**ScheduledDayValue**\\nقيمة اليوم المحسوبة بناءً على السعر بالساعة وساعات الورديّة المتوقعة.\"\r\n },\r\n {\r\n label: \"قيمة اليوم الفعلية\",\r\n value: \"ActualDayValue\",\r\n kind: \"Field\",\r\n detail: \"قيمة اليوم الفعلية\",\r\n documentation: \"**ActualDayValue**\\nقيمة اليوم المحسوبة بناءً على السعر بالساعة وساعات العمل الفعليّة.\"\r\n },\r\n {\r\n label: \"عدد أيام العمل\",\r\n value: \"WorkingDays\",\r\n kind: \"Field\",\r\n detail: \"عدد أيام العمل\",\r\n documentation: \"**WorkingDays**\\nعدد الأيام في دفتر الحضور.\"\r\n },\r\n {\r\n label: \"الراتب الأساسي\",\r\n value: \"BasicSalary\",\r\n kind: \"Field\",\r\n detail: \"بند الراتب الأساسي\",\r\n documentation: \"**BasicSalary**\\n بند الراتب الأساسي.\"\r\n },\r\n // Employee fields\r\n {\r\n label: \"رمز الموظف\",\r\n value: \"Employee.Code\",\r\n kind: \"Field\",\r\n detail: \"رمز الموظف\",\r\n documentation: \"**Employee.Code**\\nالرمز الفريد المعطى للموظف في النظام.\"\r\n },\r\n {\r\n label: \"الاسم الكامل\",\r\n value: \"Employee.FullName\",\r\n kind: \"Field\",\r\n detail: \"الاسم الكامل للموظف\",\r\n documentation: \"**Employee.FullName**\\nالاسم الأول واسم العائلة للموظف.\"\r\n },\r\n {\r\n label: \"نوع الموظف\",\r\n value: \"Employee.Type\",\r\n kind: \"Field\",\r\n detail: \"نوع الموظف\",\r\n documentation: \"**Employee.Type**\\nنوع الموظف (دوام كامل، مؤقت، الخ).\"\r\n },\r\n\r\n // Shift fields\r\n {\r\n label: \"اسم الورديّة\",\r\n value: \"Shift.Name\",\r\n kind: \"Field\",\r\n detail: \"اسم الورديّة\",\r\n documentation: \"**Shift.Name**\\nالاسم المعطى للورديّة (صباحية، مسائية).\"\r\n },\r\n {\r\n label: \"بداية الورديّة\",\r\n value: \"Shift.StartTime\",\r\n kind: \"Field\",\r\n detail: \"بداية الورديّة\",\r\n documentation: \"**Shift.StartTime**\\nوقت بدء الورديّة.\"\r\n },\r\n {\r\n label: \"نهاية الورديّة\",\r\n value: \"Shift.EndTime\",\r\n kind: \"Field\",\r\n detail: \"نهاية الورديّة\",\r\n documentation: \"**Shift.EndTime**\\nوقت نهاية الورديّة.\"\r\n },\r\n {\r\n label: \"رمز نوع الورديّة\",\r\n value: \"Shift.TypeKey\",\r\n kind: \"Field\",\r\n detail: \"رمز نوع الورديّة\",\r\n documentation: \"**Shift.TypeKey**\\nالمفتاح البرمجي لنوع الورديّة.\"\r\n },\r\n\r\n // AttendanceSheet fields\r\n {\r\n label: \"من تاريخ\",\r\n value: \"Sheet.DateFrom\",\r\n kind: \"Field\",\r\n detail: \"تاريخ بداية الدفتر\",\r\n documentation: \"**Sheet.DateFrom**\\nأول يوم في دفتر الحضور (اليوم الأول للشهر).\"\r\n },\r\n {\r\n label: \"إلى تاريخ\",\r\n value: \"Sheet.DateTo\",\r\n kind: \"Field\",\r\n detail: \"تاريخ نهاية الدفتر\",\r\n documentation: \"**Sheet.DateTo**\\nآخر يوم في دفتر الحضور (اليوم الأخير للشهر).\"\r\n },\r\n {\r\n label: \"عدد أيام الحضور\",\r\n value: \"Sheet.PresentDays\",\r\n kind: \"Field\",\r\n detail: \"عدد أيام الحضور\",\r\n documentation: \"**Sheet.PresentDays**\\nعدد الأيام التي سجل فيها الموظف دخول وخروج.\"\r\n },\r\n\r\n // AttendanceDay fields\r\n {\r\n label: \"تاريخ اليوم\",\r\n value: \"Day.Date\",\r\n kind: \"Field\",\r\n detail: \"تاريخ يوم الحضور\",\r\n documentation: \"**Day.Date**\\nالتاريخ الفعلي ليوم الحضور.\"\r\n },\r\n {\r\n label: \"تسجيل دخول\",\r\n value: \"Day.SignIn\",\r\n kind: \"Field\",\r\n detail: \"وقت تسجيل دخول الموظف\",\r\n documentation: \"**Day.SignIn**\\nالطابع الزمني لتسجيل دخول الموظف.\"\r\n },\r\n {\r\n label: \"تسجيل خروج\",\r\n value: \"Day.SignOut\",\r\n kind: \"Field\",\r\n detail: \"وقت تسجيل خروج الموظف\",\r\n documentation: \"**Day.SignOut**\\nالطابع الزمني لتسجيل خروج الموظف.\"\r\n },\r\n\r\n // LeavePolicy fields\r\n {\r\n label: \"اسم سياسة الإجازة\",\r\n value: \"LeavePolicy.Name\",\r\n kind: \"Field\",\r\n detail: \"اسم سياسة الإجازة\",\r\n documentation: \"**LeavePolicy.Name**\\nالاسم المعطى لسياسة الإجازة.\"\r\n },\r\n {\r\n label: \"رمز الحالة\",\r\n value: \"LeavePolicy.StatusKey\",\r\n kind: \"Field\",\r\n detail: \"رمز حالة السياسة\",\r\n documentation: \"**LeavePolicy.StatusKey**\\nالمفتاح البرمجي لحالة سياسة الإجازة.\"\r\n },\r\n {\r\n label: \"حالة السياسة\",\r\n value: \"LeavePolicy.Status\",\r\n kind: \"Field\",\r\n detail: \"حالة السياسة\",\r\n documentation: \"**LeavePolicy.Status**\\nالوصف الكامل لحالة سياسة الإجازة.\"\r\n },\r\n\r\n // Leave fields\r\n {\r\n label: \"بداية الإجازة\",\r\n value: \"Leave.DateStart\",\r\n kind: \"Field\",\r\n detail: \"بداية الإجازة\",\r\n documentation: \"**Leave.DateStart**\\nاليوم الأول للإجازة.\"\r\n },\r\n {\r\n label: \"نهاية الإجازة\",\r\n value: \"Leave.DateEnd\",\r\n kind: \"Field\",\r\n detail: \"نهاية الإجازة\",\r\n documentation: \"**Leave.DateEnd**\\nاليوم الأخير للإجازة.\"\r\n },\r\n\r\n // SalaryTemplate fields\r\n // {\r\n // label: \"بنود الأرباح\",\r\n // value: \"template.Earnings\",\r\n // kind: \"Field\",\r\n // detail: \"قائمة بنود الأرباح\",\r\n // documentation: \"**SalaryTemplate.Earnings**\\nقائمة العناصر التي تمثل مستحقات (أرباح) القالب.\"\r\n // },\r\n // {\r\n // label: \"بنود الاستقطاعات\",\r\n // value: \"template.Deductions\",\r\n // kind: \"Field\",\r\n // detail: \"قائمة بنود الاستقطاعات\",\r\n // documentation: \"**SalaryTemplate.Deductions**\\nقائمة العناصر التي تمثل استقطاعات القالب.\"\r\n // },\r\n\r\n // // SalaryTemplateItem fields\r\n // {\r\n // label: \"المبلغ الثابت للبند\",\r\n // value: \"item.Amount\",\r\n // kind: \"Field\",\r\n // detail: \"المبلغ الثابت للبند\",\r\n // documentation: \"**SalaryTemplateItem.Amount**\\nالقيمة الثابتة المخصصة لهذا البند.\"\r\n // },\r\n // {\r\n // label: \"صيغة البند\",\r\n // value: \"item.Formula\",\r\n // kind: \"Field\",\r\n // detail: \"الصيغة الحسابية للبند\",\r\n // documentation: \"**SalaryTemplateItem.Formula**\\nالصيغة البرمجية لتعريف قيمة البند عند SalaryValueType = Formula.\"\r\n // },\r\n\r\n { label: '(Leave) Total Leaves Taken', value: 'GetLeaveTaken(leaveId)', detail: 'إجمالي الإجازات المأخوذة' },\r\n { label: '(Leave) Total Leaves Taken Before', value: 'GetLeaveTakenBefore(leaveId)', detail: 'إجمالي الإجازات المأخوذة قبل' },\r\n { label: '(Leave) Total Leaves After', value: 'GetLeaveTakenAfter(leaveId)', detail: 'إجمالي الإجازات المأخوذة بعد' },\r\n { label: '(Leave) Leaves Credit Before', value: 'GetLeaveCreditBefore(leaveId)', detail: 'رصيد الإجازات قبل' },\r\n { label: '(Leave) Leaves Credit After', value: 'GetLeaveCreditAfter(leaveId)', detail: 'رصيد الإجازات بعد' },\r\n\r\n\r\n\r\n { label: 'عدد مرات تحقق القاعدة', value: 'GetFlagCount(ruleId)', detail: 'عدد مرات تحقق القاعدة خلال الفترة' },\r\n { label: 'إجمالي قيمة القاعدة', value: 'GetFlagValue(ruleId)', detail: 'القيمة الإجمالية للقاعدة' },\r\n { label: 'أكبر من', value: '>', detail: 'القيمة الأولى أكبر من الثانية' },\r\n { label: 'أكبر من أو يساوي', value: '>=', detail: 'القيمة الأولى أكبر من أو تساوي الثانية' },\r\n { label: 'أصغر من', value: '<', detail: 'القيمة الأولى أصغر من الثانية' },\r\n { label: 'أصغر من أو يساوي', value: '<=', detail: 'القيمة الأولى أصغر من أو تساوي الثانية' },\r\n { label: 'يساوي', value: '==', detail: 'القيمتان متساويتان' },\r\n { label: 'لا يساوي', value: '!=', detail: 'القيمتان غير متساويتان' },\r\n { label: 'و (AND)', value: '&&', detail: 'تتحقق إذا كان الشرطان صحيحين' },\r\n { label: 'أو (OR)', value: '||', detail: 'تتحقق إذا كان أحد الشرطين صحيحاً' },\r\n { label: 'صحيح', value: 'true', detail: 'القيمة صحيحة' },\r\n { label: 'خطأ', value: 'false', detail: 'القيمة خاطئة' }\r\n ];\r\n","import { Chip} from 'primeng/chip';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ChangeDetectorRef, Component, ViewChild } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { Popover, PopoverModule } from 'primeng/popover';\r\nimport { Suggestion, suggestions } from './suggestions';\r\nimport { finalize, firstValueFrom, Subscription } from 'rxjs';\r\nimport { BaseService } from '@elite.framework/ng.core';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'condition-expression-builder',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AutoCompleteModule,\r\n Chip,\r\n ButtonModule,\r\n InputTextModule,\r\n DialogModule,\r\n PopoverModule,\r\n TranslateModule\r\n ],\r\n providers: [BaseService],\r\n template: `\r\n <div class=\"flex flex-col gap-3\">\r\n\r\n <!-- TABLE MODE -->\r\n @if (displayMode === 'table') {\r\n<div class=\"flex gap-2\">\r\n <div class=\"flex flex-wrap flex-1 gap-1\">\r\n <div class=\"border rounded-md p-2 bg-gray-50 flex flex-wrap gap-2 min-h-[40px] items-center\">\r\n\r\n\r\n @for (token of tokens; track $index) {\r\n <span class=\"px-2 py-1 rounded bg-blue-100 text-blue-800 flex items-center gap-1\">\r\n {{ token.label | translate }}\r\n </span>\r\n}\r\n</div>\r\n </div>\r\n <button type=\"button\" pButton icon=\"pi pi-pencil\" label=\"\"\r\n class=\"p-button-sm\"\r\n (click)=\"displayEditDialog = true\"></button>\r\n </div>\r\n\r\n <!-- Dialog with full editor inside -->\r\n <p-dialog [(visible)]=\"displayEditDialog\" [modal]=\"false\" [style]=\"{width: '700px'}\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n {{ editDialogTitle | translate }}\r\n </ng-template>\r\n\r\n<div class=\"p-4 space-y-4\">\r\n <ng-container *ngTemplateOutlet=\"fullEditorTpl\"></ng-container>\r\n</div>\r\n\r\n </p-dialog>\r\n }\r\n @else{\r\n <ng-container *ngTemplateOutlet=\"fullEditorTpl\"></ng-container>\r\n }\r\n\r\n\r\n <!-- FULL MODE -->\r\n <ng-template #fullEditorTpl>\r\n <!-- Your existing full UI layout here -->\r\n <div class=\"flex flex-col gap-3\">\r\n\r\n <!-- Expression preview -->\r\n <div class=\"border rounded-md p-2 bg-gray-50 flex flex-wrap gap-2 min-h-[40px] items-center\">\r\n @for (token of tokens; track $index) {\r\n <span class=\"px-2 py-1 rounded bg-blue-100 text-blue-800 flex items-center gap-1\">\r\n {{ token.label | translate }}\r\n <button type=\"button\" pButton icon=\"pi pi-times\"\r\n class=\"p-button-rounded p-button-text p-button-sm\"\r\n (click)=\"removeToken($index)\">\r\n </button>\r\n </span>\r\n}\r\n </div>\r\n\r\n <!-- Autocomplete for suggestions -->\r\n <p-autoComplete\r\n [(ngModel)]=\"selectedSuggestion\"\r\n field=\"label\"\r\n [suggestions]=\"filteredSuggestions\"\r\n (completeMethod)=\"filterSuggestions($event)\"\r\n (onSelect)=\"onSuggestionSelected($event)\"\r\n placeholder=\"اكتب للبحث عن الحقول أو العمليات أو الدوال...\"\r\n [forceSelection]=\"false\"\r\n [dropdown]=\"true\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full\"\r\n >\r\n <ng-template let-suggestion pTemplate=\"item\">\r\n <div>\r\n <strong>{{ suggestion.label | translate}}</strong>\r\n <small class=\"block text-gray-500\">{{ suggestion.detail| translate }}</small>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n\r\n <!-- Add custom value -->\r\n <div class=\"flex gap-2\">\r\n <input pInputText type=\"text\" [(ngModel)]=\"customValue\" placeholder=\"أدخل قيمة ثابتة...\" class=\"flex-1\">\r\n <button pButton label=\"إضافة\" icon=\"pi pi-plus\" (click)=\"addCustomToken()\" class=\"p-button-sm\" type=\"button\"></button>\r\n </div>\r\n\r\n <!-- Parameter input dialog -->\r\n <p-dialog [(visible)]=\"displayDialog\" [modal]=\"false\" [closable]=\"false\" [style]=\"{width: '400px'}\">\r\n <ng-template pTemplate=\"header\">\r\n {{ (dialogMode === 'rule' ? 'اختر القاعدة' : 'اختر الإجازة') | translate }}\r\n </ng-template>\r\n\r\n <div class=\"p-4 space-y-4\">\r\n <p-autoComplete\r\n #autoComp\r\n [(ngModel)]=\"dialogSelectedRule\"\r\n field=\"name\"\r\n optionLabel=\"name\"\r\n [suggestions]=\"filteredRuleSuggestions\"\r\n (completeMethod)=\"search($event)\"\r\n (onSelect)=\"onSuggestionRule($event)\"\r\n placeholder=\"{{ dialogMode === 'rule' ? 'ابحث عن قاعدة' : 'ابحث عن إجازة' }}\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"true\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full rounded-none\"\r\n >\r\n <ng-template let-suggestion pTemplate=\"item\">\r\n <div>\r\n <strong>{{ suggestion.name | translate}}</strong>\r\n <small class=\"block text-gray-500\">{{ suggestion.description | translate}}</small>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n\r\n <p-footer class=\"flex justify-end gap-2\">\r\n <button type=\"button\" pButton label=\"إلغاء\" icon=\"pi pi-times\" class=\"p-button-text\" severity=\"danger\" (click)=\"cancelDialog()\"></button>\r\n <button type=\"button\" pButton label=\"موافق\" icon=\"pi pi-check\" (click)=\"confirmDialog()\" [disabled]=\"!dialogSelectedRule\"></button>\r\n </p-footer>\r\n </p-dialog>\r\n </div>\r\n </ng-template>\r\n </div>\r\n `\r\n})\r\nexport class ConditionExpressionBuilderType extends FieldType {\r\n // @ViewChild('paramOverlay') paramOverlay!: OverlayPanel;\r\n @ViewChild('autoComp') autoComp!: any;\r\n @ViewChild('op') op!: Popover;\r\n tokens: { label: string, value: string }[] = [];\r\n selectedSuggestion: any;\r\n customValue: string = '';\r\n filteredSuggestions: Suggestion[] = [];\r\n\r\n // Dialog state\r\n displayDialog = false;\r\n dialogSelectedRule: Suggestion | any = null;\r\n pendingSuggestion: Suggestion | any = null;\r\n filteredRuleSuggestions: Suggestion[] = [];\r\n\r\n suggestions = suggestions;\r\n loading: boolean = false;\r\napi: BaseService|any;\r\n dialogMode: string = '';\r\n\r\n displayMode: 'table' | 'full' = 'full';\r\n editDialogTitle = 'Edit Expression';\r\n\r\ndisplayEditDialog = false;\r\n/**\r\n *\r\n */\r\nprivate valueChangeSubscription!: Subscription;\r\nconstructor(private svc: BaseService,private cdr: ChangeDetectorRef) {\r\n super();\r\n\r\n}\r\n ngOnInit() {\r\n this.api = this.svc;\r\n const to = this.props;\r\n this.api.apiName = to['serviceName'];\r\n\r\n this.displayMode = to['displayMode'] ?? 'full';\r\n\r\n this.initTokens();\r\n\r\n this.valueChangeSubscription = this.formControl.valueChanges\r\n .subscribe(() => {\r\n this.initTokens();\r\n\r\n });\r\n}\r\n\r\n ngOnDestroy() {\r\n if (this.valueChangeSubscription) {\r\n this.valueChangeSubscription.unsubscribe();\r\n }\r\n }\r\n initTokens(){\r\n const existing = this.formControl.value || '';\r\n if (existing) {\r\n const tokens = existing.split(' ').filter((x: any) => x);\r\n Promise.all(\r\n tokens.map(async (v: string) => ({\r\n value: v,\r\n label: await this.getLabelForValue(v)\r\n }))\r\n ).then(resolvedTokens => {\r\n this.tokens = resolvedTokens;\r\n this.cdr.detectChanges(); // <-- Trigger UI update\r\n });\r\n } else {\r\n this.tokens = [];\r\n }\r\n }\r\nopenDialogForTableMode() {\r\n // You can reuse your dialog logic here\r\n this.displayDialog = true;\r\n this.dialogMode = 'rule'; // or 'leave', depending on your case\r\n}\r\n parseParameterizedToken(value: string): { base: string; param: string } | null {\r\n const match = value.match(/^(\\w+)\\(([^)]+)\\)$/);\r\n if (match) {\r\n return { base: match[1], param: match[2] };\r\n }\r\n return null;\r\n }\r\n\r\n// getLabelForValue(value: string): string {\r\n// const paramToken = this.parseParameterizedToken(value);\r\n\r\n// if (paramToken) {\r\n// // Find a matching suggestion by replacing any parameter placeholder\r\n// const baseSuggestion = this.suggestions.find(\r\n// s =>\r\n// s.value === `${paramToken.base}(ruleId)` ||\r\n// s.value === `${paramToken.base}(leaveId)` ||\r\n// s.value === paramToken.base\r\n// );\r\n\r\n// if (baseSuggestion) {\r\n// // Remove any placeholder text from the label\r\n// const baseLabel = baseSuggestion.label\r\n// .replace(/\\(ruleId\\)/g, '')\r\n// .replace(/\\(leaveId\\)/g, '')\r\n// .trim();\r\n\r\n// return `${baseLabel} (${paramToken.param})`;\r\n// }\r\n// }\r\n\r\n// // Exact match without parameters\r\n// const exact = this.suggestions.find(s => s.value === value);\r\n// if (exact) return exact.label;\r\n\r\n// return value;\r\n// }\r\n\r\n\r\nasync getLabelForValue(value: string): Promise<string> {\r\n const paramToken = this.parseParameterizedToken(value);\r\n\r\n if (paramToken) {\r\n let paramLabel = paramToken.param;\r\n\r\n // Find matching base suggestion early (optional)\r\n const baseSuggestion = this.suggestions.find(\r\n s =>\r\n s.value === `${paramToken.base}(ruleId)` ||\r\n s.value === `${paramToken.base}(leaveId)` ||\r\n s.value === paramToken.base\r\n );\r\n\r\n if (value.includes('(ruleId)') || paramToken.base.toLowerCase().includes('flag')) {\r\n this.api.apiName = this.props['ruleServiceName'];\r\n try {\r\n const res: any = await firstValueFrom(\r\n this.api.get( paramToken.param).pipe()\r\n );\r\n // Assuming API returns { items: [...] } or array directly\r\n // const matchedRule = (res.items ?? res ?? []).find((r: any) => r.id == Number(paramToken.param));\r\n const matchedRule = res;\r\n if (matchedRule) paramLabel = matchedRule.label || matchedRule.name || paramLabel;\r\n } catch {\r\n // ignore errors, fallback to param value\r\n }\r\n }\r\n\r\n if (value.includes('(leaveId)') || paramToken.base.toLowerCase().includes('leave')) {\r\n this.api.apiName = this.props['leaveServiceName'];\r\n try {\r\n const res: any = await firstValueFrom(\r\n this.api.getList(paramToken.param ).pipe()\r\n );\r\n const matchedLeave = res;\r\n if (matchedLeave) paramLabel = matchedLeave.label || matchedLeave.name || paramLabel;\r\n } catch {\r\n // ignore errors\r\n }\r\n }\r\n\r\n if (baseSuggestion) {\r\n const baseLabel = baseSuggestion.label\r\n .replace(/\\(ruleId\\)/g, '')\r\n .replace(/\\(leaveId\\)/g, '')\r\n .trim();\r\n return `${baseLabel} (${paramLabel})`;\r\n }\r\n }\r\n\r\n // fallback exact match in suggestions\r\n const exact = this.suggestions.find(s => s.value === value);\r\n if (exact) return exact.label;\r\n\r\n return value;\r\n}\r\n\r\n\r\n\r\n filterSuggestions(event: any) {\r\n const query = event.query.toLowerCase();\r\n this.filteredSuggestions = this.suggestions.filter(s => {\r\n const paramToken = this.parseParameterizedToken(s.value);\r\n const baseValue = paramToken ? paramToken.base : s.value;\r\n return (\r\n s.label.toLowerCase().includes(query) ||\r\n baseValue.toLowerCase().includes(query) ||\r\n s.value.toLowerCase().includes(query)\r\n );\r\n });\r\n }\r\n\r\n search(event: { query: string }) {\r\n this.api.apiName = this.dialogMode === 'rule'\r\n ? this.props['ruleServiceName'] // existing rules service\r\n : this.props['leaveServiceName']; // new leave service\r\n\r\n const q = event.query?.toString().toLowerCase() || '';\r\n const lf = this.props['labelField'] || 'name';\r\n const fixedFilters = this.props['fixedFilters'] || {};\r\n\r\n this.loading = true;\r\n this.filteredRuleSuggestions = [];\r\n\r\n const searchParams = {\r\n [lf]: q,\r\n ...fixedFilters,\r\n };\r\n\r\n this.api.getList(searchParams)\r\n .pipe(finalize(() => (this.loading = false)))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.filteredRuleSuggestions = res.items ?? res ?? [];\r\n setTimeout(() => this.autoComp?.show(), 0);\r\n },\r\n error: () => {\r\n this.filteredRuleSuggestions = [];\r\n },\r\n });\r\n}\r\n\r\n\r\n onSuggestionRule(event: any) {\r\n const suggestion: Suggestion = event.value;\r\n if (!suggestion) return;\r\n this.dialogSelectedRule = suggestion;\r\n }\r\n async onSuggestionSelected(event: any) {\r\n const suggestion: Suggestion = event.value;\r\n if (!suggestion) return;\r\n\r\n if (suggestion.value.includes('(ruleId)') || suggestion.value.includes('(leaveId)')) {\r\n this.pendingSuggestion = suggestion;\r\n this.dialogSelectedRule = null;\r\n this.displayDialog = true;\r\n\r\n // Detect mode: rule or leave\r\n this.dialogMode = suggestion.value.includes('(ruleId)') ? 'rule' : 'leave';\r\n } else {\r\n this.tokens.push({\r\n value: suggestion.value,\r\n label: await this.getLabelForValue(suggestion.value)\r\n });\r\n this.updateExpression();\r\n }\r\n this.selectedSuggestion = '';\r\n}\r\n\r\n\r\n\r\n async confirmDialog() {\r\n if (!this.pendingSuggestion || !this.dialogSelectedRule) return;\r\n\r\n const paramValue = this.dialogSelectedRule.id\r\n || this.dialogSelectedRule.value\r\n || this.dialogSelectedRule.label;\r\n\r\n const placeholder = this.dialogMode === 'rule' ? '(ruleId)' : '(leaveId)';\r\n const newValue = this.pendingSuggestion.value.replace(placeholder, `(${paramValue})`);\r\n\r\n this.tokens.push({\r\n value: newValue,\r\n label: await this.getLabelForValue(newValue)\r\n });\r\n\r\n this.updateExpression();\r\n this.closeDialog();\r\n}\r\n\r\n\r\n cancelDialog() {\r\n this.closeDialog();\r\n }\r\n\r\n closeDialog() {\r\n this.displayDialog = false;\r\n this.dialogSelectedRule = null;\r\n this.pendingSuggestion = null;\r\n }\r\n\r\n async addCustomToken() {\r\n if (!this.customValue.trim()) return;\r\n const val = this.customValue.trim();\r\n this.tokens.push({\r\n value: val,\r\n label: await this.getLabelForValue(val)\r\n });\r\n this.updateExpression();\r\n this.customValue = '';\r\n }\r\n\r\n removeToken(index: number) {\r\n this.tokens.splice(index, 1);\r\n this.updateExpression();\r\n }\r\n\r\n updateExpression() {\r\n const expression = this.tokens.map(t => t.value).join(' ');\r\n this.formControl.setValue(expression);\r\n if (this.to['expressionChange']) {\r\n this.to['expressionChange'].emit(expression);\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,WAAW,GAAiB;AACvC,IAAA;AACE,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,KAAK,EAAE,wBAAwB;AAC/B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,mBAAmB;AAC3B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,uBAAuB;AAC9B,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,qBAAqB;AAC5B,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,qBAAqB;AAC7B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,oBAAoB;AAC3B,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,aAAa,EAAE;AAChB,KAAA;AACF,IAAA;AACG,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,aAAa,EAAE;AAChB,KAAA;;AAED,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,qBAAqB;AAC7B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,aAAa,EAAE;AAChB,KAAA;;AAGD,IAAA;AACE,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,kBAAkB;AACzB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,kBAAkB;AAC1B,QAAA,aAAa,EAAE;AAChB,KAAA;;AAGD,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,aAAa,EAAE;AAChB,KAAA;;AAGD,IAAA;AACE,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,kBAAkB;AAC1B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,aAAa,EAAE;AAChB,KAAA;;AAGD,IAAA;AACE,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,KAAK,EAAE,kBAAkB;AACzB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,mBAAmB;AAC3B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,uBAAuB;AAC9B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,kBAAkB;AAC1B,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE,oBAAoB;AAC3B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,aAAa,EAAE;AAChB,KAAA;;AAGD,IAAA;AACE,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,eAAe;AACvB,QAAA,aAAa,EAAE;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,eAAe;AACvB,QAAA,aAAa,EAAE;AAChB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkCF,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,0BAA0B,EAAE;IAC3G,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,8BAA8B,EAAE;IAC7H,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,8BAA8B,EAAE;IACrH,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC9G,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAI1G,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,mCAAmC,EAAE;IAC9G,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,0BAA0B,EAAE;IACnG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,+BAA+B,EAAE;IACzE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,wCAAwC,EAAE;IAC5F,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,+BAA+B,EAAE;IACzE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,wCAAwC,EAAE;IAC5F,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE;IAC7D,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE;IACpE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,8BAA8B,EAAE;IACzE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC,EAAE;IAC7E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;IACxD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc;;;AC1FpD,MAAO,8BAA+B,SAAQ,SAAS,CAAA;AA4BzC,IAAA,GAAA;AAAyB,IAAA,GAAA;;AA1BhB,IAAA,QAAQ;AACd,IAAA,EAAE;IACvB,MAAM,GAAuC,EAAE;AAC/C,IAAA,kBAAkB;IAClB,WAAW,GAAW,EAAE;IACxB,mBAAmB,GAAiB,EAAE;;IAGtC,aAAa,GAAG,KAAK;IACrB,kBAAkB,GAAqB,IAAI;IAC3C,iBAAiB,GAAqB,IAAI;IAC1C,uBAAuB,GAAiB,EAAE;IAE1C,WAAW,GAAG,WAAW;IACzB,OAAO,GAAY,KAAK;AAC1B,IAAA,GAAG;IACD,UAAU,GAAW,EAAE;IAEvB,WAAW,GAAqB,MAAM;IACvC,eAAe,GAAG,iBAAiB;IAEpC,iBAAiB,GAAG,KAAK;AACzB;;AAEG;AACK,IAAA,uBAAuB;IAC/B,WAAA,CAAoB,GAAgB,EAAS,GAAsB,EAAA;AACjE,QAAA,KAAK,EAAE;QADW,IAAA,CAAA,GAAG,GAAH,GAAG;QAAsB,IAAA,CAAA,GAAG,GAAH,GAAG;;IAI/C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AACnB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;QAEpC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,MAAM;QAE/C,IAAI,CAAC,UAAU,EAAE;AAEhB,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC;aAC5C,SAAS,CAAC,MAAK;YAChB,IAAI,CAAC,UAAU,EAAE;AAEjB,SAAC,CAAC;;IAGP,WAAW,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;;;IAG9C,UAAU,GAAA;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC/C,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC;AACxD,YAAA,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,GAAG,CAAC,OAAO,CAAS,MAAM;AAC/B,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrC,aAAA,CAAC,CAAC,CACJ,CAAC,IAAI,CAAC,cAAc,IAAG;AACtB,gBAAA,IAAI,CAAC,MAAM,GAAG,cAAc;AAC5B,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;;;IAGpB,sBAAsB,GAAA;;AAEpB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;;AAEzB,IAAA,uBAAuB,CAAC,KAAa,EAAA;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC/C,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;;AAE5C,QAAA,OAAO,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;IAkCf,MAAM,gBAAgB,CAAC,KAAa,EAAA;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAEtD,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK;;YAGjC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1C,CAAC,IACC,CAAC,CAAC,KAAK,KAAK,GAAG,UAAU,CAAC,IAAI,CAAA,QAAA,CAAU;AACxC,gBAAA,CAAC,CAAC,KAAK,KAAK,GAAG,UAAU,CAAC,IAAI,CAAA,SAAA,CAAW;AACzC,gBAAA,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,CAC9B;AAED,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAChF,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;AAChD,gBAAA,IAAI;AACF,oBAAA,MAAM,GAAG,GAAQ,MAAM,cAAc,CACnC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CACvC;;;oBAGD,MAAM,WAAW,GAAG,GAAG;AACvB,oBAAA,IAAI,WAAW;wBAAE,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,IAAI,UAAU;;AACjF,gBAAA,MAAM;;;;AAKV,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAClF,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACjD,gBAAA,IAAI;AACF,oBAAA,MAAM,GAAG,GAAQ,MAAM,cAAc,CACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAE,CAAC,IAAI,EAAE,CAC3C;oBACD,MAAM,YAAY,GAAG,GAAG;AACxB,oBAAA,IAAI,YAAY;wBAAE,UAAU,GAAG,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,IAAI,UAAU;;AACpF,gBAAA,MAAM;;;;YAKV,IAAI,cAAc,EAAE;AAClB,gBAAA,MAAM,SAAS,GAAG,cAAc,CAAC;AAC9B,qBAAA,OAAO,CAAC,aAAa,EAAE,EAAE;AACzB,qBAAA,OAAO,CAAC,cAAc,EAAE,EAAE;AAC1B,qBAAA,IAAI,EAAE;AACT,gBAAA,OAAO,CAAA,EAAG,SAAS,CAAA,EAAA,EAAK,UAAU,GAAG;;;;AAKzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AAC3D,QAAA,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,KAAK;AAE7B,QAAA,OAAO,KAAK;;AAKZ,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;QACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAG;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC;AACxD,YAAA,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK;YACxD,QACE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrC,gBAAA,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEzC,SAAC,CAAC;;AAGH,IAAA,MAAM,CAAC,KAAwB,EAAA;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK;cACnC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;cAC7B,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAEnC,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,MAAM;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE;AAErD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE;AAEjC,QAAA,MAAM,YAAY,GAAG;YACnB,CAAC,EAAE,GAAG,CAAC;AACP,YAAA,GAAG,YAAY;SAChB;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY;AAC1B,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC3C,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACjB,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI,EAAE;AACrD,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;aAC3C;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE;aAClC;AACF,SAAA,CAAC;;AAIJ,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,MAAM,UAAU,GAAe,KAAK,CAAC,KAAK;AAC1C,QAAA,IAAI,CAAC,UAAU;YAAE;AACjB,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU;;IAEvC,MAAM,oBAAoB,CAAC,KAAU,EAAA;AACpC,QAAA,MAAM,UAAU,GAAe,KAAK,CAAC,KAAK;AAC1C,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACnF,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU;AACnC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;AAGzB,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,OAAO;;aACrE;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK;AACpD,aAAA,CAAC;YACF,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;;AAK5B,IAAA,MAAM,aAAa,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAAE;AAEzD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;eACtC,IAAI,CAAC,kBAAkB,CAAC;AACxB,eAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAElC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM,GAAG,UAAU,GAAG,WAAW;AACzE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,CAAG,CAAC;AAErF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AAC5C,SAAA,CAAC;QAEF,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;;IAIlB,YAAY,GAAA;QACV,IAAI,CAAC,WAAW,EAAE;;IAGpB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;AAG/B,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG;AACvC,SAAA,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;;AAGvB,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,gBAAgB,GAAA;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE;YAC/B,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;;;uGAxSrC,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,SAAA,EAhI7B,CAAC,WAAW,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,IAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACf,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAxIC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,IAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAElB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,8BACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAkIN,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA9I1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,kBAAkB;wBAClB,IAAI;wBACJ,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,aAAa;wBACb;AACD,qBAAA;oBACA,SAAS,EAAE,CAAC,WAAW,CAAC;AACzB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HT,EAAA;AACF,iBAAA;gHAG4B,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;gBACJ,EAAE,EAAA,CAAA;sBAAlB,SAAS;uBAAC,IAAI;;;AClKrB;;AAEG;;;;"}
@@ -0,0 +1,110 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
5
+ import * as i2 from '@angular/forms';
6
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
7
+ import { FieldType } from '@ngx-formly/core';
8
+ import * as i4 from '@ngx-translate/core';
9
+ import { TranslateModule } from '@ngx-translate/core';
10
+ import { ToggleSwitch } from 'primeng/toggleswitch';
11
+ import * as i3 from 'primeng/tooltip';
12
+ import { TooltipModule, Tooltip } from 'primeng/tooltip';
13
+
14
+ class CustomSwitchFieldComponent extends FieldType {
15
+ updateModel(value) {
16
+ this.formControl.setValue(value);
17
+ // التحويل الآمن للمفتاح
18
+ const key = Array.isArray(this.key) ? this.key.join('.') : this.key;
19
+ if (this.model && key) {
20
+ this.model[key] = value ? 1 : 2;
21
+ }
22
+ }
23
+ ngAfterViewInit() {
24
+ const key = Array.isArray(this.key) ? this.key.join('.') : this.key;
25
+ if (!key)
26
+ return;
27
+ if (this.model[key] === undefined) {
28
+ this.model[key] = 1;
29
+ this.formControl.setValue(true);
30
+ }
31
+ else if (this.model[key] === 1) {
32
+ this.formControl.setValue(true);
33
+ }
34
+ else if (this.model[key] === 2) {
35
+ this.formControl.setValue(false);
36
+ }
37
+ // ✅ تأكد أن الموديل دائماً رقم 1 أو 2
38
+ this.model[key] = this.formControl.value ? 1 : 2;
39
+ }
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSwitchFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomSwitchFieldComponent, isStandalone: true, selector: "formly-field-custom-switch", usesInheritance: true, ngImport: i0, template: `
42
+ <div class="flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1"
43
+ style=" border-radius: var(--p-inputtext-border-radius);">
44
+
45
+
46
+ <label [for]="id" class="font-bold text-lg text-gray-800">
47
+ {{ (to.label ?? '') | translate }}
48
+
49
+ <span *ngIf="to.required" class="text-red-500">*</span>
50
+ </label>
51
+
52
+ <!-- التبديل نفسه -->
53
+ <p-toggleSwitch
54
+ [formControl]="formControl"
55
+ [inputId]="id"
56
+ [pTooltip]="field.props['tooltip']"
57
+ [styleClass]="''"
58
+ (onChange)="updateModel($event.checked)"
59
+ ></p-toggleSwitch>
60
+
61
+ </div>
62
+
63
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["styleClass", "tabindex", "inputId", "readonly", "trueValue", "falseValue", "ariaLabel", "size", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSwitchFieldComponent, decorators: [{
66
+ type: Component,
67
+ args: [{
68
+ selector: 'formly-field-custom-switch',
69
+ standalone: true,
70
+ imports: [CommonModule,
71
+ ReactiveFormsModule,
72
+ FormsModule,
73
+ ToggleSwitch,
74
+ TranslateModule,
75
+ TooltipModule,
76
+ Tooltip
77
+ ],
78
+ template: `
79
+ <div class="flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1"
80
+ style=" border-radius: var(--p-inputtext-border-radius);">
81
+
82
+
83
+ <label [for]="id" class="font-bold text-lg text-gray-800">
84
+ {{ (to.label ?? '') | translate }}
85
+
86
+ <span *ngIf="to.required" class="text-red-500">*</span>
87
+ </label>
88
+
89
+ <!-- التبديل نفسه -->
90
+ <p-toggleSwitch
91
+ [formControl]="formControl"
92
+ [inputId]="id"
93
+ [pTooltip]="field.props['tooltip']"
94
+ [styleClass]="''"
95
+ (onChange)="updateModel($event.checked)"
96
+ ></p-toggleSwitch>
97
+
98
+ </div>
99
+
100
+ `,
101
+ changeDetection: ChangeDetectionStrategy.OnPush,
102
+ }]
103
+ }] });
104
+
105
+ /**
106
+ * Generated bundle index. Do not edit.
107
+ */
108
+
109
+ export { CustomSwitchFieldComponent };
110
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-custom-switch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-custom-switch.mjs","sources":["../../../projects/core/src/lib/components/custom-switch/custom-switch.ts","../../../projects/core/src/lib/components/custom-switch/elite.framework-ng.core-src-lib-components-custom-switch.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { FieldType, FieldTypeConfig, FormlyAttributes } from '@ngx-formly/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ToggleSwitch } from 'primeng/toggleswitch';\r\nimport { TooltipModule, Tooltip } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'formly-field-custom-switch',\r\n standalone: true,\r\n imports: [CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ToggleSwitch,\r\n TranslateModule,\r\n TooltipModule,\r\n Tooltip\r\n],\r\n template: `\r\n <div class=\"flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1\"\r\n style=\" border-radius: var(--p-inputtext-border-radius);\">\r\n\r\n\r\n <label [for]=\"id\" class=\"font-bold text-lg text-gray-800\">\r\n {{ (to.label ?? '') | translate }}\r\n\r\n <span *ngIf=\"to.required\" class=\"text-red-500\">*</span>\r\n </label>\r\n\r\n <!-- التبديل نفسه -->\r\n <p-toggleSwitch\r\n [formControl]=\"formControl\"\r\n [inputId]=\"id\"\r\n [pTooltip]=\"field.props['tooltip']\"\r\n [styleClass]=\"''\"\r\n (onChange)=\"updateModel($event.checked)\"\r\n ></p-toggleSwitch>\r\n\r\n </div>\r\n\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSwitchFieldComponent extends FieldType<FieldTypeConfig> implements AfterViewInit {\r\n\r\n updateModel(value: boolean) {\r\n this.formControl.setValue(value);\r\n\r\n // التحويل الآمن للمفتاح\r\n const key = Array.isArray(this.key) ? this.key.join('.') : this.key;\r\n\r\n if (this.model && key) {\r\n this.model[key] = value ? 1 : 2;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n const key = Array.isArray(this.key) ? this.key.join('.') : this.key;\r\n\r\n if (!key) return;\r\n\r\n if (this.model[key] === undefined) {\r\n this.model[key] = 1;\r\n this.formControl.setValue(true);\r\n }\r\n else if (this.model[key] === 1) {\r\n this.formControl.setValue(true);\r\n }\r\n else if (this.model[key] === 2) {\r\n this.formControl.setValue(false);\r\n }\r\n\r\n // ✅ تأكد أن الموديل دائماً رقم 1 أو 2\r\n this.model[key] = this.formControl.value ? 1 : 2;\r\n}\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;AA4CM,MAAO,0BAA6B,SAAQ,SAA0B,CAAA;AAE1E,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;;QAGhC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;AAEnE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;;;IAIpC,eAAe,GAAA;QACd,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;AAEnE,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;;aAE5B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;;aAE5B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;;;AAIlC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;;uGA9BrC,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,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzB3B,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9BS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,+BACV,YAAY,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA4BN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBApCtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACpC,oBAAA,UAAU,EAAE,IAAI;oBAClB,OAAO,EAAE,CAAC,YAAY;wBACnB,mBAAmB;wBACnB,WAAW;wBACV,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb;AACL,qBAAA;AACC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;AC3CD;;AAEG;;;;"}
@@ -0,0 +1,130 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { Component } from '@angular/core';
4
+ import * as i2 from '@angular/forms';
5
+ import { FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';
6
+ import { FormlyForm } from '@ngx-formly/core';
7
+ import * as i4 from '@ngx-translate/core';
8
+ import { TranslateModule } from '@ngx-translate/core';
9
+ import * as i3 from 'primeng/button';
10
+ import { ButtonModule } from 'primeng/button';
11
+ import { Subject, takeUntil } from 'rxjs';
12
+ import * as i1 from 'primeng/dynamicdialog';
13
+
14
+ class DeactivationReasonFormComponent {
15
+ ref;
16
+ config;
17
+ form = new FormGroup({});
18
+ model = {};
19
+ fields;
20
+ loading = false;
21
+ errorMessage = null;
22
+ destroy$ = new Subject();
23
+ idField;
24
+ constructor(ref, config) {
25
+ this.ref = ref;
26
+ this.config = config;
27
+ this.model = config.data?.model || {};
28
+ this.idField = this.config.data.idField;
29
+ this.fields = [
30
+ {
31
+ key: 'deactivationReason',
32
+ type: 'textarea',
33
+ props: {
34
+ label: 'DeactivationReason',
35
+ placeholder: 'DeactivationReason',
36
+ rows: 5,
37
+ required: true,
38
+ },
39
+ },
40
+ ];
41
+ }
42
+ onSubmit() {
43
+ if (this.form.invalid)
44
+ return;
45
+ // this.loading = true;
46
+ // this.errorMessage = null;
47
+ const service = this.config.data.service;
48
+ const id = this.model[this.idField];
49
+ this.model.isActive = false;
50
+ const operation$ = service.update(id, this.model);
51
+ operation$.pipe(takeUntil(this.destroy$)).subscribe({
52
+ next: () => {
53
+ this.ref.close(this.model); // نجاح العملية
54
+ },
55
+ error: (err) => {
56
+ this.loading = false;
57
+ this.errorMessage = err.error?.message ||
58
+ err.message ||
59
+ 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';
60
+ }
61
+ });
62
+ }
63
+ ngOnDestroy() {
64
+ this.destroy$.next();
65
+ this.destroy$.complete();
66
+ }
67
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DeactivationReasonFormComponent, deps: [{ token: i1.DynamicDialogRef }, { token: i1.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component });
68
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: DeactivationReasonFormComponent, isStandalone: true, selector: "app-deactivation-reason-form", ngImport: i0, template: `
69
+ <form [formGroup]="form" (ngSubmit)="onSubmit()" class="p-4 space-y-4">
70
+ <formly-form [form]="form" [fields]="fields" [model]="model"></formly-form>
71
+
72
+
73
+ <div class="bottom-0 left-0 right-0 bg-gray-200 border-t border-gray-400 px-4 py-3 flex justify-end gap-2">
74
+
75
+ <p-button
76
+ [label]="( 'SAVE') | translate"
77
+ size="small"
78
+ [disabled]="form.invalid"
79
+ [type]="'submit'">
80
+ </p-button>
81
+
82
+ <p-button
83
+ [label]="'CANCEL' | translate "
84
+ severity="danger"
85
+ size="small"
86
+ (onClick)="ref.close(false)">
87
+ </p-button>
88
+
89
+ </div>
90
+ </form>
91
+ `, isInline: true, dependencies: [{ kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DeactivationReasonFormComponent, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ selector: 'app-deactivation-reason-form',
97
+ template: `
98
+ <form [formGroup]="form" (ngSubmit)="onSubmit()" class="p-4 space-y-4">
99
+ <formly-form [form]="form" [fields]="fields" [model]="model"></formly-form>
100
+
101
+
102
+ <div class="bottom-0 left-0 right-0 bg-gray-200 border-t border-gray-400 px-4 py-3 flex justify-end gap-2">
103
+
104
+ <p-button
105
+ [label]="( 'SAVE') | translate"
106
+ size="small"
107
+ [disabled]="form.invalid"
108
+ [type]="'submit'">
109
+ </p-button>
110
+
111
+ <p-button
112
+ [label]="'CANCEL' | translate "
113
+ severity="danger"
114
+ size="small"
115
+ (onClick)="ref.close(false)">
116
+ </p-button>
117
+
118
+ </div>
119
+ </form>
120
+ `,
121
+ imports: [FormlyForm, CommonModule, ReactiveFormsModule, FormsModule, TranslateModule, ButtonModule]
122
+ }]
123
+ }], ctorParameters: () => [{ type: i1.DynamicDialogRef }, { type: i1.DynamicDialogConfig }] });
124
+
125
+ /**
126
+ * Generated bundle index. Do not edit.
127
+ */
128
+
129
+ export { DeactivationReasonFormComponent };
130
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-deactivation-reason.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-deactivation-reason.mjs","sources":["../../../projects/core/src/lib/components/deactivation-reason/deactivation-reason.ts","../../../projects/core/src/lib/components/deactivation-reason/elite.framework-ng.core-src-lib-components-deactivation-reason.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnDestroy } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'app-deactivation-reason-form',\n template: `\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" class=\"p-4 space-y-4\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n\n\n <div class=\"bottom-0 left-0 right-0 bg-gray-200 border-t border-gray-400 px-4 py-3 flex justify-end gap-2\">\n\n <p-button\n [label]=\"( 'SAVE') | translate\"\n size=\"small\"\n [disabled]=\"form.invalid\"\n [type]=\"'submit'\">\n </p-button>\n\n <p-button\n [label]=\"'CANCEL' | translate \"\n severity=\"danger\"\n size=\"small\"\n (onClick)=\"ref.close(false)\">\n </p-button>\n\n </div>\n </form>\n `,\n imports:[FormlyForm,CommonModule,ReactiveFormsModule,FormsModule,TranslateModule,ButtonModule]\n})\nexport class DeactivationReasonFormComponent implements OnDestroy {\n form = new FormGroup({});\n model: any = {};\n fields: FormlyFieldConfig[];\n loading = false;\n errorMessage: string | null = null;\n private destroy$ = new Subject<void>();\n private idField: keyof any;\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) {\n this.model = config.data?.model || {};\n this.idField = this.config.data.idField;\n this.fields = [\n {\n key: 'deactivationReason',\n type: 'textarea',\n props: {\n label: 'DeactivationReason',\n placeholder: 'DeactivationReason',\n rows: 5,\n required: true,\n },\n },\n ];\n }\n\n\n onSubmit() {\n if (this.form.invalid) return;\n\n // this.loading = true;\n // this.errorMessage = null;\n\n const service = this.config.data.service;\n const id = (this.model as any)[this.idField] ;\n this.model.isActive = false;\n const operation$: Observable<any> = service.update(id, this.model);\n\n operation$.pipe(takeUntil(this.destroy$)).subscribe({\n next: () => {\n this.ref.close(this.model); // نجاح العملية\n },\n error: (err) => {\n this.loading = false;\n this.errorMessage = err.error?.message ||\n err.message ||\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component } from '@angular/core';
3
+ import { FieldType } from '@ngx-formly/core';
4
+ import { NgClass } from '@angular/common';
5
+
6
+ class FormlyFieldButton extends FieldType {
7
+ onClick($event) {
8
+ if (this.props['onClick']) {
9
+ this.props['onClick']($event);
10
+ }
11
+ }
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyFieldButton, deps: null, target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: FormlyFieldButton, isStandalone: true, selector: "formly-field-button", usesInheritance: true, ngImport: i0, template: `
14
+ <div>
15
+ <button
16
+ [type]="props.type"
17
+ [ngClass]="'btn btn-' + props['btnType']"
18
+ (click)="onClick($event)"
19
+ >
20
+ {{ props['text'] }}
21
+ </button>
22
+ </div>
23
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyFieldButton, decorators: [{
26
+ type: Component,
27
+ args: [{
28
+ selector: 'formly-field-button',
29
+ template: `
30
+ <div>
31
+ <button
32
+ [type]="props.type"
33
+ [ngClass]="'btn btn-' + props['btnType']"
34
+ (click)="onClick($event)"
35
+ >
36
+ {{ props['text'] }}
37
+ </button>
38
+ </div>
39
+ `,
40
+ standalone: true,
41
+ imports: [NgClass],
42
+ }]
43
+ }] });
44
+
45
+ /**
46
+ * Generated bundle index. Do not edit.
47
+ */
48
+
49
+ export { FormlyFieldButton };
50
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-form-button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-form-button.mjs","sources":["../../../projects/core/src/lib/components/form-button/form-button.type.ts","../../../projects/core/src/lib/components/form-button/elite.framework-ng.core-src-lib-components-form-button.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\nimport { NgClass } from '@angular/common';\r\n@Component({\r\n selector: 'formly-field-button',\r\n template: `\r\n <div>\r\n <button\r\n [type]=\"props.type\"\r\n [ngClass]=\"'btn btn-' + props['btnType']\"\r\n (click)=\"onClick($event)\"\r\n >\r\n {{ props['text'] }}\r\n </button>\r\n </div>\r\n `,\r\n standalone: true,\r\n imports: [NgClass],\r\n})\r\nexport class FormlyFieldButton extends FieldType {\r\n onClick($event: Event) {\r\n if (this.props['onClick']) {\r\n this.props['onClick']($event);\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAmBM,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAC9C,IAAA,OAAO,CAAC,MAAa,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;;;uGAHtB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdlB,CAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAES,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEN,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,OAAO,CAAC;AACnB,iBAAA;;;AClBD;;AAEG;;;;"}
@@ -0,0 +1,154 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, NgModule } from '@angular/core';
3
+ import * as i1 from '@ngx-formly/core';
4
+ import { FieldWrapper, FormlyModule } from '@ngx-formly/core';
5
+ import * as i2 from '@ngx-translate/core';
6
+ import { TranslateModule, TranslatePipe } from '@ngx-translate/core';
7
+ import { CommonModule } from '@angular/common';
8
+ import { ReactiveFormsModule } from '@angular/forms';
9
+
10
+ class FormlyWrapperFormField extends FieldWrapper {
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyWrapperFormField, deps: null, target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: FormlyWrapperFormField, isStandalone: false, selector: "formly-wrapper-primeng-form-field", usesInheritance: true, ngImport: i0, template: `
13
+ <div class="p-field">
14
+ <!-- text-lg -->
15
+ @if (props.label && props.hideLabel !== true) {
16
+ <label [for]="id" class="font-bold">
17
+ {{ props.label | translate }}
18
+ @if (props.required && props.hideRequiredMarker !== true) {
19
+ <span aria-hidden="true">*</span>
20
+ }
21
+ </label>
22
+ }
23
+
24
+ <div class="mb-2"></div>
25
+ <ng-container #fieldComponent></ng-container>
26
+
27
+ @if (showError) {
28
+ <small class="text-red-600 text-sm mt-1 block font-medium">
29
+ <formly-validation-message [field]="field"></formly-validation-message>
30
+ </small>
31
+ }
32
+ </div>
33
+ `, isInline: true, dependencies: [{ kind: "component", type: i1.LegacyFormlyValidationMessage, selector: "formly-validation-message" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyWrapperFormField, decorators: [{
36
+ type: Component,
37
+ args: [{
38
+ selector: 'formly-wrapper-primeng-form-field',
39
+ standalone: false,
40
+ template: `
41
+ <div class="p-field">
42
+ <!-- text-lg -->
43
+ @if (props.label && props.hideLabel !== true) {
44
+ <label [for]="id" class="font-bold">
45
+ {{ props.label | translate }}
46
+ @if (props.required && props.hideRequiredMarker !== true) {
47
+ <span aria-hidden="true">*</span>
48
+ }
49
+ </label>
50
+ }
51
+
52
+ <div class="mb-2"></div>
53
+ <ng-container #fieldComponent></ng-container>
54
+
55
+ @if (showError) {
56
+ <small class="text-red-600 text-sm mt-1 block font-medium">
57
+ <formly-validation-message [field]="field"></formly-validation-message>
58
+ </small>
59
+ }
60
+ </div>
61
+ `,
62
+ }]
63
+ }] });
64
+ class FormlyWrapperFormFieldNo extends FieldWrapper {
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyWrapperFormFieldNo, deps: null, target: i0.ɵɵFactoryTarget.Component });
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: FormlyWrapperFormFieldNo, isStandalone: false, selector: "formly-wrapper-primeng-form-field-no", usesInheritance: true, ngImport: i0, template: `
67
+ <div class="p-field">
68
+ <!-- text-lg -->
69
+ @if (props.label && props.hideLabel !== true) {
70
+ <label [for]="id" class="font-bold">
71
+ @if (props.required && props.hideRequiredMarker !== true) {
72
+ <span aria-hidden="true">*</span>
73
+ }
74
+ </label>
75
+ }
76
+
77
+ <ng-container #fieldComponent></ng-container>
78
+
79
+ @if (showError) {
80
+ <small class="text-red-600 text-sm mt-1 block font-medium">
81
+ <formly-validation-message [field]="field"></formly-validation-message>
82
+ </small>
83
+ }
84
+ </div>
85
+ `, isInline: true, dependencies: [{ kind: "component", type: i1.LegacyFormlyValidationMessage, selector: "formly-validation-message" }] });
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyWrapperFormFieldNo, decorators: [{
88
+ type: Component,
89
+ args: [{
90
+ selector: 'formly-wrapper-primeng-form-field-no',
91
+ standalone: false,
92
+ template: `
93
+ <div class="p-field">
94
+ <!-- text-lg -->
95
+ @if (props.label && props.hideLabel !== true) {
96
+ <label [for]="id" class="font-bold">
97
+ @if (props.required && props.hideRequiredMarker !== true) {
98
+ <span aria-hidden="true">*</span>
99
+ }
100
+ </label>
101
+ }
102
+
103
+ <ng-container #fieldComponent></ng-container>
104
+
105
+ @if (showError) {
106
+ <small class="text-red-600 text-sm mt-1 block font-medium">
107
+ <formly-validation-message [field]="field"></formly-validation-message>
108
+ </small>
109
+ }
110
+ </div>
111
+ `,
112
+ }]
113
+ }] });
114
+
115
+ function withFormlyFormField() {
116
+ return {
117
+ wrappers: [
118
+ {
119
+ name: 'form-field',
120
+ component: FormlyWrapperFormField,
121
+ },
122
+ {
123
+ name: 'form-field-no',
124
+ component: FormlyWrapperFormFieldNo,
125
+ },
126
+ ],
127
+ };
128
+ }
129
+
130
+ class FormlyFormFieldModule {
131
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
132
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: FormlyFormFieldModule, declarations: [FormlyWrapperFormField,
133
+ FormlyWrapperFormFieldNo], imports: [CommonModule, ReactiveFormsModule, i1.FormlyModule, TranslateModule, TranslatePipe], exports: [FormlyWrapperFormField] });
134
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyFormFieldModule, imports: [CommonModule, ReactiveFormsModule, FormlyModule.forChild(withFormlyFormField()), TranslateModule] });
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormlyFormFieldModule, decorators: [{
137
+ type: NgModule,
138
+ args: [{
139
+ declarations: [
140
+ FormlyWrapperFormField,
141
+ FormlyWrapperFormFieldNo,
142
+ // FormlyFormFieldWrapperComponent,
143
+ ],
144
+ imports: [CommonModule, ReactiveFormsModule, FormlyModule.forChild(withFormlyFormField()), TranslateModule, TranslatePipe],
145
+ exports: [FormlyWrapperFormField]
146
+ }]
147
+ }] });
148
+
149
+ /**
150
+ * Generated bundle index. Do not edit.
151
+ */
152
+
153
+ export { FormlyFormFieldModule, FormlyWrapperFormField, withFormlyFormField };
154
+ //# sourceMappingURL=elite.framework-ng.core-src-lib-components-form-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elite.framework-ng.core-src-lib-components-form-field.mjs","sources":["../../../projects/core/src/lib/components/form-field/src/form-field.wrapper.ts","../../../projects/core/src/lib/components/form-field/src/form-field.config.ts","../../../projects/core/src/lib/components/form-field/src/form-field.module.ts","../../../projects/core/src/lib/components/form-field/src/elite.framework-ng.core-src-lib-components-form-field.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport {\n FieldWrapper,\n FormlyFieldConfig,\n FormlyFieldProps as CoreFormlyFieldProps\n} from '@ngx-formly/core';\n\nexport interface FormlyFieldProps extends CoreFormlyFieldProps {\n hideRequiredMarker?: boolean;\n hideLabel?: boolean;\n}\n\n@Component({\n selector: 'formly-wrapper-primeng-form-field',\n standalone: false,\n template: `\n <div class=\"p-field\">\n <!-- text-lg -->\n @if (props.label && props.hideLabel !== true) {\n <label [for]=\"id\" class=\"font-bold\">\n {{ props.label | translate }}\n @if (props.required && props.hideRequiredMarker !== true) {\n <span aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"mb-2\"></div>\n <ng-container #fieldComponent></ng-container>\n\n @if (showError) {\n <small class=\"text-red-600 text-sm mt-1 block font-medium\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n `,\n})\nexport class FormlyWrapperFormField extends FieldWrapper<FormlyFieldConfig<FormlyFieldProps>> {}\n\n\n@Component({\n selector: 'formly-wrapper-primeng-form-field-no',\n standalone: false,\n template: `\n <div class=\"p-field\">\n <!-- text-lg -->\n @if (props.label && props.hideLabel !== true) {\n <label [for]=\"id\" class=\"font-bold\">\n @if (props.required && props.hideRequiredMarker !== true) {\n <span aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <ng-container #fieldComponent></ng-container>\n\n @if (showError) {\n <small class=\"text-red-600 text-sm mt-1 block font-medium\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n `,\n})\nexport class FormlyWrapperFormFieldNo extends FieldWrapper<FormlyFieldConfig<FormlyFieldProps>> {}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyWrapperFormField, FormlyWrapperFormFieldNo } from './form-field.wrapper';\n\nexport function withFormlyFormField(): ConfigOption {\n return {\n wrappers: [\n {\n name: 'form-field',\n component: FormlyWrapperFormField,\n },\n {\n name: 'form-field-no',\n component: FormlyWrapperFormFieldNo,\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule, LegacyFormlyValidationMessage, } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyWrapperFormField, FormlyWrapperFormFieldNo } from './form-field.wrapper';\nimport { withFormlyFormField } from './form-field.config';\nimport { TranslateModule, TranslatePipe } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [\n\n FormlyWrapperFormField,\n FormlyWrapperFormFieldNo,\n // FormlyFormFieldWrapperComponent,\n ],\n imports: [CommonModule, ReactiveFormsModule, FormlyModule.forChild(withFormlyFormField()),TranslateModule,TranslatePipe],\n exports:[FormlyWrapperFormField]\n})\nexport class FormlyFormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}