@elite.framework/ng.core 1.0.45 → 1.0.46

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.
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.core.mjs","sources":["../../../projects/core/src/lib/components/odata-query-builder/odata-query-builder.component.ts","../../../projects/core/src/lib/components/odata-query-builder/odata-query-builder.component.html","../../../projects/core/src/lib/components/condition-editor/suggestions.ts","../../../projects/core/src/lib/tokens/environment.token.ts","../../../projects/core/src/lib/tokens/options.token.ts","../../../projects/core/src/lib/models/rest.ts","../../../projects/core/src/lib/services/rest.service.ts","../../../projects/core/src/lib/services/base.service.ts","../../../projects/core/src/lib/components/condition-editor/condition-editor-type.ts","../../../projects/core/src/lib/components/form-template/template.type.ts","../../../projects/core/src/lib/components/form-button/form-button.type.ts","../../../projects/core/src/lib/models/AttachmentDto.ts","../../../projects/core/src/lib/components/attachments/attachment-type.ts","../../../projects/core/src/lib/components/attachments/attachment-type.html","../../../projects/core/src/lib/components/breadcrumb/breadcrumb.ts","../../../projects/core/src/lib/components/color-picker/color-picker.type.ts","../../../projects/core/src/lib/components/column-settings-popover/column-settings-popover.ts","../../../projects/core/src/lib/components/column-settings-popover/column-settings-popover.html","../../../projects/core/src/lib/components/custom-switch/custom-switch.ts","../../../projects/core/src/lib/components/deactivation-reason/deactivation-reason.ts","../../../projects/core/src/lib/components/formly-avatar-label/formly-avatar-label.ts","../../../projects/core/src/lib/components/formly-button/formly-button.ts","../../../projects/core/src/lib/components/formly-button-selector/formly-button-selector.ts","../../../projects/core/src/lib/components/formly-split-button/formly-split-button.ts","../../../projects/core/src/lib/components/formly-username-with-domain/formly-username-with-domain.ts","../../../projects/core/src/lib/components/generic-autocomplete/generic-autocomplete-component.ts","../../../projects/core/src/lib/components/formly-avatar-image/formly-avatar-image.ts","../../../projects/core/src/lib/components/generic-button/generic-button.ts","../../../projects/core/src/lib/components/generic-button/generic-button.html","../../../projects/core/src/lib/components/generic-card/generic-card.ts","../../../projects/core/src/lib/components/generic-card/generic-card.html","../../../projects/core/src/lib/components/generic-formly-fields/generic-formly-fields.ts","../../../projects/core/src/lib/components/generic-formly-fields/generic-formly-fields.html","../../../projects/core/src/lib/components/generic-errormessage/generic-errormessage.ts","../../../projects/core/src/lib/components/generic-errormessage/generic-errormessage.html","../../../projects/core/src/lib/components/generic-crud-dialog/generic-crud-dialog.ts","../../../projects/core/src/lib/components/generic-crud-dialog/generic-crud-dialog.html","../../../projects/core/src/lib/components/generic-search/generic-search.ts","../../../projects/core/src/lib/components/generic-search/generic-search.html","../../../projects/core/src/lib/components/generic-table/generic-table.ts","../../../projects/core/src/lib/components/generic-table/generic-table.html","../../../projects/core/src/lib/services/SwalService.service.ts","../../../projects/core/src/lib/components/generic-crud-table/generic-crud-table.ts","../../../projects/core/src/lib/components/generic-crud-table/generic-crud-table.html","../../../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/datepicker/src/datepicker.type.ts","../../../projects/core/src/lib/components/datepicker/src/datepicker.config.ts","../../../projects/core/src/lib/components/datepicker/src/datepicker.module.ts","../../../projects/core/src/lib/components/generic-selector/generic-selector.component.ts","../../../projects/core/src/lib/components/icon-picker/icon-picker.type.ts","../../../projects/core/src/lib/components/input-switch/input-switch.type.ts","../../../projects/core/src/lib/components/input-with-icon/input-with-icon.type.ts","../../../projects/core/src/lib/components/label-type/label-type.ts","../../../projects/core/src/lib/components/repeat/repeat-section.type.ts","../../../projects/core/src/lib/components/tabs/tabs.type.ts","../../../projects/core/src/lib/components/tag-type/formly-color-tag-type.ts","../../../projects/core/src/lib/components/tag-type/formly-option-tag-type.ts","../../../projects/core/src/lib/components/tag-type/formly-tag-type.ts","../../../projects/core/src/lib/directives/appAutofocus.ts","../../../projects/core/src/lib/components/text-editor/formly-rich-text-editor-type.ts","../../../projects/core/src/lib/components/wrappers/label.wrapper.ts","../../../projects/core/src/lib/components/wrappers/td-wrapper.type.ts","../../../projects/core/src/lib/components/input/src/input.type.ts","../../../projects/core/src/lib/components/input/src/input.config.ts","../../../projects/core/src/lib/components/input/src/input.module.ts","../../../projects/core/src/lib/components/select/src/select.type.ts","../../../projects/core/src/lib/components/select/src/select.config.ts","../../../projects/core/src/lib/components/select/src/select.module.ts","../../../projects/core/src/lib/components/textarea/src/textarea.type.ts","../../../projects/core/src/lib/components/textarea/src/textarea.config.ts","../../../projects/core/src/lib/components/textarea/src/textarea.module.ts","../../../projects/core/src/lib/components/checkbox/src/checkbox.type.ts","../../../projects/core/src/lib/components/checkbox/src/checkbox.config.ts","../../../projects/core/src/lib/components/checkbox/src/checkbox.module.ts","../../../projects/core/src/lib/components/wrappers/panel.wrapper.ts","../../../projects/core/src/lib/components/label-type/clickable-label-type.ts","../../../projects/core/src/lib/providers/formly.config.ts","../../../projects/core/src/lib/components/generic-drawer/generic-drawer.ts","../../../projects/core/src/lib/components/generic-drawer/generic-drawer.html","../../../projects/core/src/lib/components/generic-loadingspinner/generic-loadingspinner.ts","../../../projects/core/src/lib/components/generic-loadingspinner/generic-loadingspinner.html","../../../projects/core/src/lib/components/header-wrapper/header-wrapper.ts","../../../projects/core/src/lib/components/header-wrapper/header-wrapper.html","../../../projects/core/src/lib/components/sidebar-cards/sidebar-cards.ts","../../../projects/core/src/lib/components/sidebar-cards/sidebar-cards.html","../../../projects/core/src/lib/components/sidebar-toggles/sidebar-toggles.ts","../../../projects/core/src/lib/components/sidebar-toggles/sidebar-toggles.html","../../../projects/core/src/lib/components/wrappers/tooltip-wrapper.ts","../../../projects/core/src/lib/components/radio/src/radio.type.ts","../../../projects/core/src/lib/components/radio/src/radio.config.ts","../../../projects/core/src/lib/components/radio/src/radio.module.ts","../../../projects/core/src/lib/components/base-crud.ts","../../../projects/core/src/lib/components/formly-presets.ts","../../../projects/core/src/lib/directives/rtl-lang.ts","../../../projects/core/src/lib/models/Common.ts","../../../projects/core/src/lib/pipes/statustext-pipe.ts","../../../projects/core/src/lib/pipes/tafkeet-pipe.ts","../../../projects/core/src/lib/pipes/time-ago.pipe.ts","../../../projects/core/src/lib/providers/environment.provider.ts","../../../projects/core/src/lib/services/generic.service.ts","../../../projects/core/src/lib/services/ssr-cookie.service.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/elite.framework-ng.core.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FormlyFieldConfig, FormlyFieldProps, FormlyForm } from '@ngx-formly/core';\r\nimport { EntityField } from './odata-types';\r\nimport { CommonModule } from '@angular/common';\r\n\r\ninterface ConditionGroup {\r\n operator: 'and' | 'or';\r\n conditions: Condition[];\r\n}\r\n\r\ninterface Condition {\r\n field: string;\r\n operator: string;\r\n value: any;\r\n}\r\n\r\ninterface OrderBy {\r\n field: string;\r\n direction: 'asc' | 'desc';\r\n}\r\n\r\ninterface GroupBy {\r\n field: string;\r\n}\r\n\r\ninterface QueryModel {\r\n conditionGroups: ConditionGroup[];\r\n orderBy: OrderBy[];\r\n groupBy: GroupBy[];\r\n top: number | null;\r\n skip: number | null;\r\n}\r\n\r\ninterface FieldSelectProps extends FormlyFieldProps {\r\n options: { value: string; label: string }[];\r\n}\r\n\r\ninterface RepeatFieldProps extends FormlyFieldProps {\r\n addText: string;\r\n}\r\n\r\ninterface FieldArrayConfig extends FormlyFieldConfig {\r\n fieldGroup: FormlyFieldConfig[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-odata-query-builder',\r\n templateUrl: './odata-query-builder.component.html',\r\n styleUrls: ['./odata-query-builder.component.css'],\r\n imports: [CommonModule,FormlyForm]\r\n})\r\nexport class ODataQueryBuilderComponent {\r\n @Input() set entityFields(fields: EntityField[]) {\r\n this._entityFields = fields || [];\r\n this.updateFieldOptions();\r\n }\r\n get entityFields(): EntityField[] {\r\n return this._entityFields;\r\n }\r\n private _entityFields: EntityField[] = [];\r\n\r\n @Output() queryChange = new EventEmitter<string>();\r\n\r\n form = new FormGroup({});\r\n model: QueryModel = {\r\n conditionGroups: [\r\n {\r\n operator: 'and',\r\n conditions: []\r\n }\r\n ],\r\n orderBy: [],\r\n groupBy: [],\r\n top: null,\r\n skip: null\r\n };\r\n\r\n fields: FormlyFieldConfig[] = [\r\n {\r\n key: 'conditionGroups',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Condition Group',\r\n required: true\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'operator',\r\n type: 'select',\r\n props: {\r\n label: 'Group Operator',\r\n required: true,\r\n options: [\r\n { value: 'and', label: 'AND' },\r\n { value: 'or', label: 'OR' }\r\n ]\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'conditions',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Condition',\r\n required: true\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'field',\r\n type: 'select',\r\n props: {\r\n label: 'Field',\r\n required: true,\r\n options: []\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'operator',\r\n type: 'select',\r\n props: {\r\n label: 'Operator',\r\n required: true,\r\n options: [\r\n { value: 'eq', label: 'Equals' },\r\n { value: 'ne', label: 'Not Equals' },\r\n { value: 'gt', label: 'Greater Than' },\r\n { value: 'ge', label: 'Greater or Equal' },\r\n { value: 'lt', label: 'Less Than' },\r\n { value: 'le', label: 'Less or Equal' },\r\n { value: 'contains', label: 'Contains' },\r\n { value: 'startswith', label: 'Starts With' },\r\n { value: 'endswith', label: 'Ends With' }\r\n ]\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'value',\r\n type: 'input',\r\n props: {\r\n label: 'Value',\r\n required: true\r\n },\r\n expressions: {\r\n 'props.type': (field: FormlyFieldConfig) => {\r\n const model = field.model as Condition;\r\n if (!model?.field) return 'string';\r\n const selectedField = this.entityFields.find(f => f.value === model.field);\r\n return selectedField?.type || 'string';\r\n }\r\n }\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n },\r\n {\r\n key: 'orderBy',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Order By'\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'field',\r\n type: 'select',\r\n props: {\r\n label: 'Field',\r\n required: true,\r\n options: []\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'direction',\r\n type: 'select',\r\n props: {\r\n label: 'Direction',\r\n required: true,\r\n options: [\r\n { value: 'asc', label: 'Ascending' },\r\n { value: 'desc', label: 'Descending' }\r\n ]\r\n } as FieldSelectProps\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n },\r\n {\r\n key: 'groupBy',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Group By'\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'field',\r\n type: 'select',\r\n props: {\r\n label: 'Field',\r\n required: true,\r\n options: []\r\n } as FieldSelectProps\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n },\r\n {\r\n key: 'top',\r\n type: 'input',\r\n props: {\r\n label: 'Top',\r\n type: 'number',\r\n min: 1\r\n }\r\n },\r\n {\r\n key: 'skip',\r\n type: 'input',\r\n props: {\r\n label: 'Skip',\r\n type: 'number',\r\n min: 0\r\n }\r\n }\r\n ];\r\n\r\n constructor() {}\r\n\r\n private updateFieldOptions(): void {\r\n const fieldOptions = this.entityFields.map(f => ({ value: f.value, label: f.label }));\r\n\r\n // Update conditions field options in all groups\r\n const conditionGroupsField = this.fields.find(f => f.key === 'conditionGroups');\r\n if (conditionGroupsField && (conditionGroupsField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const conditionsField = (conditionGroupsField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'conditions');\r\n if (conditionsField && (conditionsField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const fieldSelect = (conditionsField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'field');\r\n if (fieldSelect) {\r\n (fieldSelect.props as FieldSelectProps).options = fieldOptions;\r\n }\r\n }\r\n }\r\n\r\n // Update orderBy field options\r\n const orderByField = this.fields.find(f => f.key === 'orderBy');\r\n if (orderByField && (orderByField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const fieldSelect = (orderByField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'field');\r\n if (fieldSelect) {\r\n (fieldSelect.props as FieldSelectProps).options = fieldOptions;\r\n }\r\n }\r\n\r\n // Update groupBy field options\r\n const groupByField = this.fields.find(f => f.key === 'groupBy');\r\n if (groupByField && (groupByField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const fieldSelect = (groupByField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'field');\r\n if (fieldSelect) {\r\n (fieldSelect.props as FieldSelectProps).options = fieldOptions;\r\n }\r\n }\r\n }\r\n\r\n buildQuery(): string {\r\n let queryParts: string[] = [];\r\n\r\n // Handle condition groups\r\n if (this.model.conditionGroups?.length > 0) {\r\n const groupFilters = this.model.conditionGroups\r\n .filter((group: ConditionGroup) => group.conditions?.length > 0)\r\n .map((group: ConditionGroup) => {\r\n const conditionParts = group.conditions\r\n .filter((cond: Condition) => cond.field && cond.operator && cond.value !== undefined && cond.value !== null)\r\n .map((cond: Condition) => {\r\n const field = this.entityFields.find(f => f.value === cond.field);\r\n let value = cond.value;\r\n\r\n if (field?.type === 'string') {\r\n value = `'${String(value).replace(/'/g, \"''\")}'`; // Escape single quotes\r\n } else if (field?.type === 'date' && value) {\r\n value = new Date(value).toISOString();\r\n } else if (field?.type === 'boolean') {\r\n value = value ? 'true' : 'false';\r\n }\r\n\r\n return `${cond.field} ${cond.operator} ${value}`;\r\n });\r\n\r\n if (conditionParts.length > 0) {\r\n return conditionParts.length > 1\r\n ? `(${conditionParts.join(` ${group.operator} `)})`\r\n : conditionParts[0];\r\n }\r\n return null;\r\n })\r\n .filter(Boolean);\r\n\r\n if (groupFilters.length > 0) {\r\n queryParts.push(`$filter=${groupFilters.join(' and ')}`);\r\n }\r\n }\r\n\r\n // Handle order by\r\n if (this.model.orderBy?.length > 0) {\r\n const orderParts = this.model.orderBy\r\n .filter((order: OrderBy) => order.field && order.direction)\r\n .map((order: OrderBy) => `${order.field} ${order.direction}`);\r\n\r\n if (orderParts.length > 0) {\r\n queryParts.push(`$orderby=${orderParts.join(', ')}`);\r\n }\r\n }\r\n\r\n // Handle group by\r\n if (this.model.groupBy?.length > 0) {\r\n const groupParts = this.model.groupBy\r\n .filter((group: GroupBy) => group.field)\r\n .map((group: GroupBy) => group.field);\r\n\r\n if (groupParts.length > 0) {\r\n queryParts.push(`$groupby=${groupParts.join(',')}`);\r\n }\r\n }\r\n\r\n // Handle top\r\n if (this.model.top) {\r\n queryParts.push(`$top=${this.model.top}`);\r\n }\r\n\r\n // Handle skip\r\n if (this.model.skip) {\r\n queryParts.push(`$skip=${this.model.skip}`);\r\n }\r\n\r\n const query = queryParts.join('&');\r\n this.queryChange.emit(query);\r\n return query;\r\n }\r\n}\r\n","<div class=\"p-4 bg-white rounded-lg shadow-md\">\r\n <h2 class=\"text-xl font-semibold mb-4 text-gray-800\">OData Query Builder</h2>\r\n\r\n <formly-form\r\n [form]=\"form\"\r\n [model]=\"model\"\r\n [fields]=\"fields\"\r\n class=\"space-y-4\"\r\n ></formly-form>\r\n\r\n <div class=\"mt-6 flex justify-end space-x-3\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Reset\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-outlined\"\r\n (click)=\"form.reset()\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Build Query\"\r\n icon=\"pi pi-cog\"\r\n (click)=\"buildQuery()\"\r\n ></button>\r\n </div>\r\n\r\n <div *ngIf=\"form.valid && form.dirty\" class=\"mt-6 p-4 bg-gray-50 rounded\">\r\n <h3 class=\"font-medium text-gray-700 mb-2\">Generated OData Query:</h3>\r\n <pre class=\"p-3 bg-gray-100 rounded text-sm overflow-x-auto\">{{ buildQuery() }}</pre>\r\n </div>\r\n</div>\r\n","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","// core/tokens/environment.token.ts\nimport { InjectionToken } from '@angular/core';\n\nexport const ENVIRONMENT = new InjectionToken<EnvironmentConfig>('ENVIRONMENT');\n\nexport interface EnvironmentConfig {\n production: boolean;\n apiUrl: string;\n [key: string]: any; // Optional extensibility\n}\n","import { InjectionToken } from '@angular/core';\nimport { Root } from '../models/Common';\n\nexport const CORE_OPTIONS = new InjectionToken<Root>('CORE_OPTIONS');\n\nexport function coreOptionsFactory({ ...options }: Root) {\n return {\n ...options,\n } as Root;\n}\n\n\n\n","import { HttpHeaders, HttpParameterCodec, HttpParams } from '@angular/common/http';\n\nexport namespace Rest {\n export type Config = Partial<{\n apiName: string;\n skipHandleError: boolean;\n skipAddingHeader: boolean;\n observe: Observe;\n httpParamEncoder?: HttpParameterCodec;\n }>;\n\n export const enum Observe {\n Body = 'body',\n Events = 'events',\n Response = 'response',\n }\n\n export const enum ResponseType {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n JSON = 'json',\n Text = 'text',\n }\n\n export type Params = HttpParams | { [param: string]: any };\n\n export interface Request<T> {\n body?: T;\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n method: string;\n params?: Params;\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n url: string;\n withCredentials?: boolean;\n }\n}\n","import { HttpClient, HttpRequest, HttpParameterCodec, HttpParams } from \"@angular/common/http\";\nimport { Injectable, Inject, inject } from \"@angular/core\";\nimport { Observable, throwError, catchError } from \"rxjs\";\nimport { Root } from \"../models/Common\";\nimport { ENVIRONMENT } from \"../tokens/environment.token\";\nimport { CORE_OPTIONS } from \"../tokens/options.token\";\nimport { Rest } from \"../models/rest\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RestService {\n private environment = inject(ENVIRONMENT);\n constructor(\n @Inject(CORE_OPTIONS) protected options: Root,\n protected http: HttpClient,\n // protected environment: EnvironmentService,\n // protected httpErrorReporter: HttpErrorReporterService,\n ) { }\n\n protected getApiFromStore(apiName: string | undefined): string {\n return this.environment.apiUrl;\n }\n\n handleError(err: any): Observable<any> {\n // this.httpErrorReporter.reportError(err);\n return throwError(() => err);\n }\n\n request<T, R>(\n request: HttpRequest<T> | Rest.Request<T>,\n config?: Rest.Config,\n api?: string,\n ): Observable<R> {\n // debugger\n config = config || ({} as Rest.Config);\n api = api || this.getApiFromStore(config.apiName);\n const { method, params, ...options } = request;\n const { observe = Rest.Observe.Body, skipHandleError } = config;\n const url = this.removeDuplicateSlashes( api + request.url);\n\n const httpClient: HttpClient = this.getHttpClient(config.skipAddingHeader ?? false);\n return httpClient\n .request<R>(method, url, {\n observe,\n ...(params && {\n params: this.getParams(params, config.httpParamEncoder),\n }),\n ...options,\n } as any)\n .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));\n }\n private getHttpClient(isExternal: boolean) {\n return /* isExternal ? this.externalHttp : */ this.http;\n }\n\n private getParams(params: Rest.Params, encoder?: HttpParameterCodec): HttpParams {\n const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {\n if (isUndefinedOrEmptyString(value)) return acc;\n if (value === null && !this.options.sendNullsAsQueryParam) return acc;\n acc[key] = value;\n return acc;\n }, {} as any);\n return encoder\n ? new HttpParams({ encoder, fromObject: filteredParams })\n : new HttpParams({ fromObject: filteredParams });\n }\n\n private removeDuplicateSlashes(url: string): string {\n return url.replace(/([^:]\\/)\\/+/g, '$1');\n }\n\n}\n\nexport function isUndefinedOrEmptyString(value: unknown): boolean {\n return value === undefined || value === '';\n}\n","\n\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { PaginatedResult } from '../models/Paginated';\nimport { RestService } from './rest.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseService {\n apiName = '';\n moduleName = '';\n constructor(public restService: RestService) {}\n get = (id: string) =>\n this.restService.request<any, any>({\n method: 'GET',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n },\n { apiName: this.apiName });\n\n getList = (input:any, endpoint?: string ) => {\n\n const params = Object.keys(input).reduce((acc:any, key) => {\n acc[key] = input[key];\n return acc;\n }, {});\n\n const url = endpoint ? endpoint : `/${this.moduleName}/${this.apiName}`;\n\n return this.restService.request<any, PaginatedResult<any>>({\n method: 'GET',\n url: url,\n params: params,\n }, { apiName: this.apiName })\n .pipe(\n map(response => response)\n );\n };\n create = (input: any) =>\n this.restService.request<any, any>({\n method: 'POST',\n url: `/${this.moduleName}/${this.apiName}`,\n body: input,\n },\n { apiName: this.apiName });\n update = (id: string, input: any) =>\n this.restService.request<any, any>({\n method: 'PUT',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n body: input,\n },\n { apiName: this.apiName });\n\n delete = (id: string) =>\n this.restService.request<any, void>({\n method: 'DELETE',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n },\n { apiName: this.apiName });\n\n\n}\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 '../../services/base.service';\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","import { FieldType, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { Component } from '@angular/core';\r\nimport { SafeHtmlPipe } from 'primeng/menu';\r\n\r\n@Component({\r\n imports:[SafeHtmlPipe],\r\n selector: 'formly-template',\r\n template: `<div [innerHTML]=\"to['innerHTML'] | safeHtml\"></div>`,\r\n})\r\nexport class FormlyTemplateType extends FieldType {}\r\n","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","\nexport class AttachmentDto {\n id?: number;\n binaryObjectId?: string;\n description?: string;\n mimeType?: string |any;\n fileName?: string;\n base64?: string;\n caption?: string;\n link?: string;\n}\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\n\nimport { FieldType } from '@ngx-formly/core';\n\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageService } from 'primeng/api';\n\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ENVIRONMENT } from '../../tokens/environment.token';\nimport { AttachmentDto } from '../../models/AttachmentDto';\n\n\n@Component({\n selector: 'attachment-type',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n FileUploadModule,\n ButtonModule,\n InputTextModule\n ],\n providers: [MessageService],\n templateUrl: './attachment-type.html',\n})\nexport class AttachmentTypeComponent extends FieldType {\n defaultAcceptTypes = '.pdf,application/pdf,image/*,.txt,text/plain,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel';\n\n maxFileSize = 1 * 1024 * 1024; // 1 MB\n tenantId = 0;\n private env = inject(ENVIRONMENT);\n\n constructor(private messageService: MessageService) {\n super();\n\n }\n get url():string{\n return this.env.apiUrl + (this.props['apiUrl'] ?? '/api/files');\n }\n get attachments(): AttachmentDto[] {\n return Array.isArray(this.formControl.value)\n ? this.formControl.value\n : (this.formControl.value ? [this.formControl.value] : []);\n }\n\n set attachments(value: AttachmentDto[]) {\n if (this.props['multiple']) {\n this.formControl.setValue(value);\n } else {\n this.formControl.setValue(value?.[0] || null);\n }\n }\n\n get attachment(): AttachmentDto | null {\n return Array.isArray(this.formControl.value)\n ? (this.formControl.value[0] || null)\n : this.formControl.value || null;\n }\n\n\n set attachment(value: AttachmentDto | null) {\n if (this.props['multiple']) {\n const arr = Array.isArray(this.formControl.value)\n ? [...this.formControl.value]\n : (this.formControl.value ? [this.formControl.value] : []);\n if (value) arr.push(value);\n this.formControl.setValue(arr);\n } else {\n this.formControl.setValue(value);\n }\n }\n\n async onUpload(event: any) {\n const files: File[] = event.files;\n const isMultiple = this.props['multiple'] ?? true;\n const allowedTypes = (this.props['accept'] as string) || '';\n\n for (const file of files) {\n if (file.size > this.maxFileSize) {\n this.messageService.add({\n severity: 'error',\n summary: 'خطأ',\n detail: `الملف \"${file.name}\" يتجاوز الحد الأقصى (1MB)`,\n });\n continue;\n }\n\n if (allowedTypes && !this.isFileTypeAllowed(file, allowedTypes)) {\n this.messageService.add({\n severity: 'error',\n summary: 'نوع الملف غير مسموح',\n detail: `الملف \"${file.name}\" ليس من الأنواع المسموحة`,\n });\n continue;\n }\n\n if (isMultiple && this.attachments.some(a => a.fileName === file.name)) {\n continue;\n }\n\n const base64 = await this.fileToBase64(file);\n const attachment = new AttachmentDto();\n attachment.fileName = file.name;\n attachment.mimeType = file.type;\n attachment.base64 = base64;\n\n if (isMultiple) {\n this.attachments = [...this.attachments, attachment];\n } else {\n this.attachment = attachment;\n }\n }\n }\n\n remove(index: number) {\n const copy = [...this.attachments];\n copy.splice(index, 1);\n this.attachments = copy;\n }\n\n choose(event: any, callback: any) {\n callback();\n }\n\n private fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve((reader.result as string).split(',')[1]);\n reader.onerror = err => reject(err);\n });\n }\n\n private isFileTypeAllowed(file: File, allowedTypes: string): boolean {\n const accepted = allowedTypes.split(',').map(t => t.trim());\n return accepted.some(type => {\n if (type === '*/*') return true;\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.split('/')[0] + '/');\n }\n return file.type === type;\n });\n }\n\n getFileLabel(mime: string): string {\n if (!mime) return 'FILE';\n if (mime.includes('pdf')) return 'PDF';\n if (mime.includes('excel') || mime.includes('spreadsheet')) return 'XLS';\n if (mime.includes('word')) return 'DOC';\n if (mime.includes('image')) return 'IMG';\n if (mime.includes('zip')) return 'ZIP';\n if (mime.includes('csv')) return 'CSV';\n if (mime.includes('text')) return 'TXT';\n return 'FILE';\n }\n\n getLabelClass(mime: string): string {\n if (mime.includes('pdf')) return 'bg-red-600 text-white';\n if (mime.includes('excel')) return 'bg-green-600 text-white';\n if (mime.includes('word')) return 'bg-blue-600 text-white';\n if (mime.includes('image')) return 'bg-yellow-500 text-white';\n if (mime.includes('zip')) return 'bg-pink-600 text-white';\n return 'bg-gray-400 text-white';\n }\n\n getIconColor(mime: string): string {\n if (mime.includes('pdf')) return 'text-red-400';\n if (mime.includes('excel')) return 'text-green-500';\n if (mime.includes('word')) return 'text-blue-500';\n if (mime.includes('image')) return 'text-yellow-500';\n if (mime.includes('zip')) return 'text-pink-500';\n return 'text-gray-400';\n }\n\n getFileIcon(mime: string): string {\n if (mime.includes('pdf')) return 'pi pi-file-pdf';\n if (mime.includes('excel') || mime.includes('spreadsheet')) return 'pi pi-file-excel';\n if (mime.includes('word')) return 'pi pi-file-word';\n if (mime.includes('image')) return 'pi pi-image';\n if (mime.includes('zip')) return 'pi pi-file-zip';\n return 'pi pi-file';\n }\n}\n","<p-fileUpload\n name=\"file\"\n [customUpload]=\"true\"\n [auto]=\"true\"\n [multiple]=\"props['multiple'] !== false\"\n [maxFileSize]=\"maxFileSize\"\n [accept]=\"props['accept'] || defaultAcceptTypes\"\n (uploadHandler)=\"onUpload($event)\"\n chooseLabel=\"اسحب الملفات أو انقر للإرفاق\"\n class=\"w-full\"\n>\n <!-- Header Template -->\n <ng-template pTemplate=\"header\" let-chooseCallback=\"chooseCallback\">\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\n <div class=\"flex gap-2\">\n <p-button\n (click)=\"choose($event, chooseCallback)\"\n icon=\"pi pi-plus\"\n [rounded]=\"true\"\n [outlined]=\"true\"\n styleClass=\"border border-green-600 text-green-600 hover:bg-green-100 bg-white shadow-sm !rounded-full\"\n ></p-button>\n </div>\n </div>\n </ng-template>\n\n <!-- Content Template -->\n <ng-template pTemplate=\"content\">\n <!-- Multi mode -->\n <div class=\"p-2 flex flex-wrap gap-4\">\n <div\n *ngFor=\"let file of attachments; let i = index\"\n style=\"height: 7rem;\"\n class=\"relative w-24 h-28 bg-white border rounded-lg shadow-sm flex flex-col items-center justify-center\"\n >\n <!-- File type label -->\n <div\n class=\"absolute top-0 left-0 px-2 py-0.5 text-[10px] font-bold uppercase rounded-br-md shadow-sm text-white\"\n [ngClass]=\"getLabelClass(file.mimeType)\"\n >\n {{ getFileLabel(file.mimeType) }}\n </div>\n\n <!-- Remove button -->\n <button\n style=\"top: 3px;right: 3px;\"\n class=\"absolute top-1 right-1 text-red-500 hover:text-red-700\"\n (click)=\"remove(i)\"\n title=\"حذف\"\n >\n <i class=\"pi pi-times text-xs\"></i>\n </button>\n\n <!-- Center icon -->\n <i\n [class]=\"getFileIcon(file.mimeType)\"\n [ngClass]=\"getIconColor(file.mimeType)\"\n class=\"!text-4xl text-center mt-5\"\n ></i>\n\n <!-- File name -->\n <div style=\"max-width: 85%;\" class=\"mt-1 text-[11px] text-gray-600 truncate max-w-[85%] text-center\">\n\n <div class=\"truncate\">{{ file.fileName }}</div>\n </div>\n\n <!-- Download icon -->\n <a\n *ngIf=\"file.binaryObjectId\"\n style=\"bottom: 3px;right: 3px;\"\n class=\"absolute bottom-1 right-1 text-gray-400 hover:text-blue-500\"\n [href]=\"url+'/' + file.binaryObjectId\"\n target=\"_blank\"\n download\n title=\"تحميل\"\n >\n <i class=\"pi pi-download text-xs\"></i>\n </a>\n </div>\n</div>\n\n <!-- Single mode -->\n <div *ngIf=\"props['multiple'] === false && attachment\">\n <div class=\"flex items-center justify-between p-2 border-b\">\n <span>{{ attachment.fileName }}</span>\n <p-button\n icon=\"pi pi-times\"\n class=\"p-button-rounded p-button-text text-red-600\"\n (click)=\"remove(0)\"\n ></p-button>\n </div>\n <!-- Caption input if allowed -->\n <div *ngIf=\"props['allowCaption']\" class=\"mt-1\">\n <input\n pInputText\n type=\"text\"\n class=\"w-full border rounded px-2 py-1 text-sm\"\n placeholder=\"أضف وصفاً\"\n (change)=\"attachment = attachment\"\n [(ngModel)]=\"attachment.caption\"\n />\n </div>\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template pTemplate=\"empty\">\n <div\n *ngIf=\"(props['multiple'] !== false && (!attachments || attachments.length === 0)) ||\n (props['multiple'] === false && !attachment)\"\n class=\"border-2 border-dashed rounded-md p-4 bg-gray-50 hover:bg-gray-100 transition flex align-items-center justify-content-center flex-column\"\n >\n <i class=\"pi pi-cloud-upload border-2 rounded p-5 text-8xl text-400 border-400\"></i>\n <p class=\"mt-4 mb-0\">اسحب وأفلِت الملفات هنا للتحميل.</p>\n </div>\n </ng-template>\n</p-fileUpload>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MenuItem } from 'primeng/api';\nimport { RouterModule } from '@angular/router'; // <--- أضف هذا الاستيراد\n\n@Component({\n selector: 'app-breadcrumb',\n standalone: true,\n imports: [CommonModule, RouterModule], // <--- أضف RouterModule هنا\n template: `\n <nav class=\"overflow-x-auto\">\n <ul class=\"flex items-center text-white text-sm font-medium\" role=\"list\">\n <li class=\"relative z-10\">\n <a\n [routerLink]=\"['/']\"\n class=\"flex items-center h-10 px-4 pr-6 text-white bg-primary-500 hover:bg-teal-500 active:bg-teal-600 transition-all duration-150 rounded-r-md\"\n style=\"clip-path: polygon(12px 0, 100% 0, 100% 100%, 12px 100%, 0% 50%)\"\n >\n <i class=\"pi pi-home mr-2 rtl:ml-2 rtl:mr-0 text-base\"></i>\n </a>\n </li>\n <li\n *ngFor=\"let item of breadcrumb; let i = index; let first = first; let last = last\"\n class=\"relative z-10\"\n >\n\n <ng-container *ngIf=\"item.routerLink && !last; else textOnly\">\n <a\n [routerLink]=\"item.routerLink\"\n class=\"flex items-center h-10 px-4 pr-6 text-white bg-primary-500 hover:bg-teal-500 active:bg-teal-600 transition-all duration-150\"\n [ngClass]=\"{\n 'bg-primary-500': i % 2 === 0,\n 'bg-primary-600': i % 2 === 1,\n 'rounded-l-md pl-5': first,\n 'rounded-r-md pr-5': last\n }\"\n style=\"clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)\"\n >\n <i *ngIf=\"item.icon\" [class]=\"item.icon + ' mr-2 text-base'\"></i>\n {{ item.label }}\n </a>\n </ng-container>\n <ng-template #textOnly>\n <span\n class=\"flex items-center h-10 px-4 pr-6 text-white\"\n [ngClass]=\"{\n 'bg-primary-500': i % 2 === 0,\n 'bg-primary-600': i % 2 === 1,\n 'rounded-l-md pl-5': first,\n 'rounded-r-md pr-5': last\n }\"\n style=\"clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)\"\n >\n <i *ngIf=\"item.icon\" [class]=\"item.icon + ' mr-2 text-base'\"></i>\n {{ item.label }}\n </span>\n </ng-template>\n </li>\n </ul>\n </nav>\n `,\n})\nexport class BreadcrumbComponent {\n @Input() breadcrumb: MenuItem[] | any = [];\n}\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { FormsModule, NgModel } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ColorPickerModule } from 'primeng/colorpicker';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'formly-field-color-picker',\n imports: [CommonModule, ColorPickerModule,FormsModule,TranslateModule],\n template: `\n\n\n <div class=\"flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1\" style=\" border-radius: var(--p-inputtext-border-radius);\">\n <p-colorPicker\n [style.direction]=\"'ltr'\"\n [(ngModel)]=\"formControl.value\"\n (ngModelChange)=\"formControl.setValue($event)\"\n [style]=\"to['style']\"\n [disabled]=\"to.disabled ?? false\"\n [inline]=\"to['inline'] ?? false\"\n [format]=\"to['format'] ?? 'hex'\"\n [tabindex]=\"'' + (to.tabindex ?? 0)\"\n [id]=\"id\"\n [name]=\"to['name'] || key\"\n\n\n ></p-colorPicker>\n <!-- appendTo=\"body\" -->\n <label [for]=\"id\" class=\"text-sm text-gray-800 mr-2 whitespace-nowrap\">\n {{ (to.label ?? '') | translate}}\n </label>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorPickerComponent extends FieldType<FieldTypeConfig> {}\n","// src/app/shared/column-settings-popover/column-settings-popover.component.ts\nimport { Component, Input, Output, EventEmitter, ViewChild, OnInit, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PopoverModule } from 'primeng/popover';\nimport { DividerModule } from 'primeng/divider';\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ColumnDef } from '../../models/Columndef';\nimport { OrderListModule } from 'primeng/orderlist';\nimport { CheckboxModule, Checkbox } from 'primeng/checkbox';\n\ntype PopoverColumnDef<T> = ColumnDef<T> & { isSelected?: boolean };\n\n@Component({\n  selector: 'lib-column-settings-popover',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    PopoverModule,\n    DividerModule,\n    ButtonModule,\n    TooltipModule,\n    TranslateModule,\n    OrderListModule,\n    CheckboxModule,\n    Checkbox\n  ],\n  templateUrl: './column-settings-popover.html',\n  styleUrls: ['./column-settings-popover.css']\n})\nexport class ColumnSettingsPopoverComponent<T extends { [key: string]: any }> implements OnInit, OnChanges {\n  @ViewChild('op') op: any;\n\n  @Input() fixedColumns: ColumnDef<T>[] = [];\n  @Input() toggleableColumns: ColumnDef<T>[] = [];\n\n  // تم إزالة @Input() tableId لأنه لن يستخدم هنا للحفظ\n  @Input() tableId: string = 'defaultTable';\n\n\n  _displayOrderListColumns: PopoverColumnDef<T>[] = [];\n  private _selectedToggleableColumns: ColumnDef<T>[] = [];\n\n  @Input()\n  get selectedToggleableColumns(): ColumnDef<T>[] {\n    return this._selectedToggleableColumns;\n  }\n  set selectedToggleableColumns(val: ColumnDef<T>[]) {\n    if (!this.areColumnsEqual(this._selectedToggleableColumns, val)) {\n      this._selectedToggleableColumns = val;\n      this.syncDisplayColumnsWithSelectedInput();\n    }\n  }\n\n  @Output() selectedToggleableColumnsChange = new EventEmitter<ColumnDef<T>[]>();\n\n  // تم إزالة @Output() columnRemoved و @Output() popoverHidden لأن selectedToggleableColumnsChange يغني عنهما\n\n  constructor(private translate: TranslateService) {}\n\n  ngOnInit(): void {\n    console.log('ColumnSettingsPopoverComponent: ngOnInit called.');\n    // في ngOnInit، نقوم فقط بتهيئة الأعمدة للعرض بناءً على المدخلات\n    this.initializeDisplayColumns();\n    this.syncDisplayColumnsWithSelectedInput();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // عند تغير toggleableColumns، نعيد تهيئة القائمة للعرض\n    if (changes['toggleableColumns']) {\n      console.log('ColumnSettingsPopoverComponent: toggleableColumns input changed.');\n      this.initializeDisplayColumns();\n    }\n    // عند تغير selectedToggleableColumns من المكون الأب، نقوم بمزامنة حالتها\n    if (changes['selectedToggleableColumns']) {\n      console.log('ColumnSettingsPopoverComponent: selectedToggleableColumns input changed (from parent).');\n      this.syncDisplayColumnsWithSelectedInput();\n    }\n  }\n // ⭐ Getter/Setter لمربع الاختيار \"تحديد الكل\" ⭐\n  get allColumnsSelected(): boolean {\n    if (!this._displayOrderListColumns || this._displayOrderListColumns.length === 0) {\n      return false;\n    }\n    return this._displayOrderListColumns.every(col => col.isSelected);\n  }\n\n  set allColumnsSelected(value: boolean) {\n    this._displayOrderListColumns.forEach(col => col.isSelected = value);\n    this.emitCurrentSelection();\n  }\n\n  // ⭐ دالة لتهيئة _displayOrderListColumns من toggleableColumns ⭐\n  private initializeDisplayColumns(): void {\n    this._displayOrderListColumns = this.toggleableColumns.map(col => ({\n      ...col,\n      isSelected: false // نترك isSelected كـ false مؤقتاً\n    }));\n  }\n\n  // دالة لمزامنة حالة العرض مع الأعمدة المحددة من المكون الأب\n  private syncDisplayColumnsWithSelectedInput(): void {\n    if (!this._displayOrderListColumns || this._displayOrderListColumns.length === 0) {\n      return;\n    }\n\n    const selectedFieldsSet = new Set(this._selectedToggleableColumns.map(col => col.field));\n\n    // تحديث خاصية isSelected بناءً على selectedFieldsSet\n    this._displayOrderListColumns.forEach(col => {\n      col.isSelected = selectedFieldsSet.has(col.field);\n    });\n\n    // إعادة ترتيب القائمة لتكون الأعمدة المحددة في الأعلى\n    const orderedSelected = this._displayOrderListColumns\n      .filter(col => selectedFieldsSet.has(col.field))\n      .sort((a, b) => {\n        return Array.from(selectedFieldsSet).indexOf(a.field) - Array.from(selectedFieldsSet).indexOf(b.field);\n      });\n\n    const orderedUnselected = this._displayOrderListColumns.filter(col => !selectedFieldsSet.has(col.field));\n\n    this._displayOrderListColumns = [...orderedSelected, ...orderedUnselected];\n    console.log('ColumnSettingsPopoverComponent: _displayOrderListColumns synced with selectedToggleableColumns input:', this._displayOrderListColumns);\n  }\n\n  toggle(event: Event): void {\n    this.op.toggle(event);\n  }\n\n  hide(): void {\n    this.op.hide();\n  }\n\n  // عند تغيير حالة أي مربع اختيار\n  onColumnVisibilityChange(column: PopoverColumnDef<T>): void {\n    this.emitCurrentSelection();\n  }\n\n  // عند إعادة ترتيب القائمة\n  onOrderListReorder(event: any): void {\n    this.emitCurrentSelection();\n  }\n\n  // دالة لإرسال التغييرات إلى المكون الأب\n  private emitCurrentSelection(): void {\n    const currentSelected = this._displayOrderListColumns\n      .filter(col => col.isSelected)\n      .map(col => {\n        const { isSelected, ...rest } = col;\n        return rest as ColumnDef<T>;\n      });\n\n    this.selectedToggleableColumnsChange.emit(currentSelected);\n  }\n\n  private areColumnsEqual(cols1: ColumnDef<T>[], cols2: ColumnDef<T>[]): boolean {\n    if (cols1.length !== cols2.length) {\n      return false;\n    }\n    // التحقق من أن العناصر هي نفسها وبنفس الترتيب\n    for (let i = 0; i < cols1.length; i++) {\n      if (cols1[i].field !== cols2[i].field) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n","<p-popover #op appendTo=\"body\" styleClass=\"w-80\">\n\n\n\n\n <!-- ⭐ مربع اختيار \"تحديد الكل\" ⭐ -->\n <div class=\"flex items-center mb-3\">\n <p-checkbox\n [(ngModel)]=\"allColumnsSelected\"\n [binary]=\"true\"\n inputId=\"selectAllColumns\"\n ></p-checkbox>\n <label for=\"selectAllColumns\" class=\"ml-2 cursor-pointer font-medium text-color-secondary\">\n {{ 'COMMON.SELECT_ALL' | translate }}\n </label>\n </div>\n\n <p-orderList\n [value]=\"_displayOrderListColumns\"\n header=\"{{ 'COMMON.REORDER_AND_SELECT_COLUMNS' | translate }}\"\n [listStyle]=\"{'height':'250px'}\"\n [responsive]=\"true\"\n [dragdrop]=\"true\"\n (onReorder)=\"onOrderListReorder($event)\"\n styleClass=\"w-full\"\n >\n <ng-template let-col pTemplate=\"item\">\n <div class=\"p-2 border rounded-md flex items-center justify-between w-full\">\n <!-- مربع اختيار للتحكم في الرؤية -->\n <p-checkbox\n [(ngModel)]=\"col.isSelected\"\n (ngModelChange)=\"onColumnVisibilityChange(col)\"\n [binary]=\"true\"\n class=\"mr-4\"\n ></p-checkbox>\n <span class=\"flex-grow\">{{ col.header | translate }}</span>\n <i class=\"pi pi-bars text-surface-400 cursor-grab\"></i> <!-- أيقونة السحب -->\n </div>\n </ng-template>\n </p-orderList>\n\n\n</p-popover>\n","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","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","import { CommonModule } from '@angular/common';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\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 TranslateModule\n ],\n})\nexport class FormlyAvatarLabelComponent extends FieldType {\n\n override get to(): AvatarLabelProps {\n return this.field.props as AvatarLabelProps;\n }\n}\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 { TranslateModule } from '@ngx-translate/core';\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 CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule\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","// formly-selection-button.component.ts\n\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { PopoverModule } from 'primeng/popover';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Popover } from 'primeng/popover';\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 CommonModule,\n ButtonModule,\n PopoverModule,\n TranslateModule\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 <div *ngIf=\"props.popoverHeader\" class=\"text-xs text-gray-500 mb-2\">\n {{ props.popoverHeader | translate }}\n </div>\n\n <div\n *ngFor=\"let option of props.options || []\"\n class=\"flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded\"\n (click)=\"onSelect(option[props.optionValue])\"\n >\n <i *ngIf=\"option.icon\" [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 <span class=\"text-xs text-gray-500\" *ngIf=\"option.description\">{{ option.description | translate }}</span>\n </div>\n\n <i *ngIf=\"formControl.value === option[props.optionValue]\" class=\"pi pi-check ml-auto text-blue-500 text-lg\"></i>\n </div>\n\n <div *ngIf=\"!(props.options?.length)\" class=\"p-3 text-gray-500\">\n {{ 'COMMON.NO_DATA' | translate }}\n </div>\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: TranslateService) {\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","// formly-split-button.component.ts\n\nimport { Component } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { MenuItem } from 'primeng/api';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\n\ninterface SplitButtonProps {\n label: string;\n icon?: string;\n items: MenuItem[];\n onClick?: () => void;\n // إضافة أي خصائص أخرى تحتاجها من p-splitButton\n}\n\n@Component({ selector: 'formly-split-button-type',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule, SplitButtonModule,\n FormsModule,\n ReactiveFormsModule\n ],\n template: `\n <p-splitButton\n [label]=\"props.label\"\n [icon]=\"props.icon\"\n [model]=\"props.items\"\n (onClick)=\"props.onClick?.()\"\n class=\"p-button-sm p-button-text p-button-plain\"\n ></p-splitButton>\n `,\n})\nexport class FormlySplitButtonComponent extends FieldType<FieldTypeConfig<SplitButtonProps>> {\n\n}\n","import { Component } from '@angular/core';\nimport { FieldType, FieldTypeConfig,FormlyAttributes } from '@ngx-formly/core'; // ✅ استيراد FormlyModule\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon'; // ✅ استيراد وحدة p-inputgroup-addon\nimport { InputGroupModule } from 'primeng/inputgroup'; // ✅ استيراد وحدة p-inputgroup\n\n@Component({\n standalone: true, // ✅ يجب إضافة هذه الخاصية\n selector: 'lib-formly-username-with-domain',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n InputTextModule,\n InputGroupModule, // ✅ إضافة InputGroupModule\n InputGroupAddonModule, // ✅ إضافة InputGroupAddonModule\n FormlyAttributes\n ],\n template: `\n <input\n type=\"text\"\n pInputText\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n (blur)=\"onBlur()\"\n />\n `,\n})\nexport class UsernameWithDomainComponent extends FieldType<FieldTypeConfig> {\n // ✅ إضافة ثابت لاسم النطاق لتسهيل التغيير\n readonly domain = '@ELITESOFTSYS.COM';\n\n // ✅ دالة يتم استدعاؤها عند تهيئة الحقل\n ngOnInit() {\n const currentValue = this.formControl.value;\n\n // إذا كانت القيمة تحتوي على النطاق، قم بإزالته\n if (currentValue && typeof currentValue === 'string' && currentValue.endsWith(this.domain)) {\n const username = currentValue.replace(this.domain, '');\n this.formControl.setValue(username);\n }\n }\n\n // ✅ هذه الدالة يتم استدعاؤها عند خروج المستخدم من الحقل\n\n onBlur() {\n const currentValue = this.formControl.value;\n\n // إذا كانت القيمة لا تحتوي على النطاق، قم بإضافته\n if (currentValue && typeof currentValue === 'string' && !currentValue.endsWith(this.domain)) {\n this.formControl.setValue(currentValue + this.domain);\n }\n }\n}\n\n","import { Component, EventEmitter, Injector, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AutoCompleteModule, AutoComplete } from 'primeng/autocomplete';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { finalize } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { BaseService } from '../../services/base.service';\n\n@Component({\n selector: 'app-generic-autocomplete',\n template: `\n <p-autoComplete\n #autoComp\n [ngModel]=\"selectedItem\"\n (ngModelChange)=\"onSelectionChange($event)\"\n [suggestions]=\"options_\"\n (completeMethod)=\"search($event)\"\n [multiple]=\"multiple\"\n [optionLabel]=\"labelField || 'name'\"\n [dropdown]=\"true\"\n [forceSelection]=\"true\"\n [placeholder]=\"(placeholder || '') | translate\"\n dropdownMode=\"current\"\n appendTo=\"self\"\n class=\"w-full\"\n [showEmptyMessage]=\"true\"\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\n [showTransitionOptions]=\"'0ms'\"\n ></p-autoComplete>\n `,\n providers: [BaseService],\n standalone: true, // تأكد أن المكون مستقل\n imports: [\n FormsModule,\n AutoCompleteModule,\n CommonModule,\n TranslateModule,\n ]\n})\nexport class GenericAutocompleteComponent implements OnInit {\n @ViewChild('autoComp') autoComp!: AutoComplete;\n\n // الخصائص المدخلة (Inputs)\n @Input() serviceName!: string;\n @Input() listEndpoint?: string;\n @Input() labelField?: string = 'name';\n @Input() valueField?: string = 'id';\n @Input() multiple: boolean = false;\n @Input() placeholder?: string;\n @Input() fixedFilters?: Record<string, any>;\n @Input() value: any;\n @Input() loadOnInit: boolean = false;\n\n // الأحداث المخرجة (Outputs)\n @Output() selectionChange = new EventEmitter<any>();\n\n options_: any[] = [];\n selectedItem: any;\n loading = false;\n\n api!: BaseService;\n\n constructor(private svc: BaseService) {}\n\n ngOnInit() {\n\n this.api = this.svc;\n this.api.apiName = this.serviceName;\n\n // ✅ إضافة الشرط الجديد للتحميل التلقائي عند تهيئة المكون\n if (this.loadOnInit) {\n this.search({ query: '' });\n }\n }\n\n onSelectionChange(val: any) {\n this.selectedItem = val;\n this.selectionChange.emit(val);\n }\n\n search(event: { query: string }) {\n const q = event.query?.toString().toLowerCase() || '';\n this.loading = true;\n this.options_ = [];\n\n const searchParams = {\n [this.labelField!]: q,\n ...this.fixedFilters,\n };\n\n const listEndpoint = this.listEndpoint;\n this.api.getList(searchParams, listEndpoint)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (res: any) => {\n this.options_ = res.items ?? res ?? [];\n setTimeout(() => this.autoComp?.show(), 0);\n },\n error: () => {\n this.options_ = [];\n },\n });\n }\n\n getEmptyMessage(): string {\n if (this.loading) {\n return 'LOADING_DATA_MESSAGE';\n } else if (this.options_.length === 0) {\n return 'NO_RESULTS_FOUND';\n }\n return '';\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\r\nimport { AvatarModule } from 'primeng/avatar';\r\n\r\n@Component({\r\n selector: 'formly-field-avatar-image',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n AvatarModule\r\n ],\r\n template: `\r\n <div [ngClass]=\"field.props['containerClass'] || ''\">\r\n <label *ngIf=\"field.props.label && field.props['hideLabel'] !== true\" [for]=\"id\" class=\"p-formgroup-inline block text-sm font-medium text-gray-700\">\r\n {{ field.props.label }}\r\n <span *ngIf=\"field.props.required\" class=\"text-red-500\">*</span>\r\n </label>\r\n <div class=\"mt-1 flex items-center\">\r\n <p-avatar\r\n [image]=\"displayValue\"\r\n [size]=\"field.props['size'] || 'large'\"\r\n [shape]=\"field.props['shape'] || 'circle'\"\r\n [style]=\"field.props['avatarStyle'] || ''\"\r\n [styleClass]=\"field.props['avatarClass'] || ''\"\r\n (onClick)=\"field.props['onClick'] && field.props['onClick']($event)\"\r\n\r\n ></p-avatar>\r\n <!-- (onImageError)=\"field.props['onImageError'] && field.props['onImageError']($event)\" -->\r\n <div *ngIf=\"field.props['showPlaceholder']\" class=\"ml-4\">\r\n <span class=\"text-gray-500\">{{ field.props['placeholderText'] || 'No image selected' }}</span>\r\n </div>\r\n </div>\r\n <small *ngIf=\"showError\" class=\"mt-1 text-sm text-red-600\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </small>\r\n <small *ngIf=\"field.props.description\" class=\"mt-1 text-sm text-gray-500\">{{ field.props.description }}</small>\r\n </div>\r\n `,\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FormlyAvatarImageComponent extends FieldType<FieldTypeConfig> {\r\n get type() {\r\n return this.field.type as string;\r\n }\r\n get displayValue(): any {\r\n const value = this.formControl?.value;\r\n const baseUrl = this.field.props['baseUrl'] || '';\r\n const defaultImage = this.field.props['defaultImage'] || '';\r\n\r\n if (value) {\r\n return baseUrl ? `${baseUrl}${value}` : value;\r\n }\r\n\r\n return defaultImage;\r\n}\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { MenuItem } from 'primeng/api';\n\ntype ButtonVariant = 'text' | 'outlined' | 'raised' | 'rounded';\ntype ButtonSeverity = 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' ;\ntype ButtonSize = 'small' | 'normal' | 'large';\ntype IconPosition = 'left' | 'right';\n\n@Component({\n selector: 'lib-generic-button',\n standalone: true,\n imports: [ CommonModule , ButtonModule, SplitButtonModule,/* HasPermissionDirective */],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './generic-button.html',\n})\nexport class GenericButton {\n\n // permissionChecker = inject(PermissionCheckerService);\n\n // لو وُجدت هذه المصفوفة، نُستخدم splitButton\n @Input() model?: MenuItem[];\n\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() icon: string = '';\n @Input() label: string = '';\n @Input() variant: ButtonVariant = 'raised';\n @Input() severity: ButtonSeverity = 'primary';\n @Input() size: ButtonSize = 'normal';\n @Input() iconPosition: IconPosition = 'left';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() ariaLabel?: string;\n @Input() extraClasses = ''; // لأي Tailwind إضافي\n @Input() permission?: string;\n @Output() clicked = new EventEmitter<void>();\n @Output() itemClick = new EventEmitter<any>();\n\n\n // خريطة أحجام\n private sizeMap: Record<ButtonSize,string> = {\n small: 'px-2 py-1 text-sm',\n normal: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n };\n\n // خريطة ألوان للـ raised و rounded\n private colorMap: Record<ButtonSeverity,string> = {\n primary: 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 text-white',\n secondary: 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500 text-white',\n success: 'bg-green-600 hover:bg-green-700 focus:ring-green-500 text-white',\n info: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n warning: 'bg-yellow-500 hover:bg-yellow-600 focus:ring-yellow-400 text-white',\n danger: 'bg-red-600 hover:bg-red-700 focus:ring-red-500 text-white',\n };\n\n // خريطة حدوده للـ outlined\n private outlinedMap: Record<ButtonSeverity,string> = {\n primary: 'border border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n secondary: 'border border-gray-600 text-gray-600 hover:bg-gray-50 focus:ring-gray-500',\n success: 'border border-green-600 text-green-600 hover:bg-green-50 focus:ring-green-500',\n info: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n warning: 'border border-yellow-500 text-yellow-500 hover:bg-yellow-50 focus:ring-yellow-400',\n danger: 'border border-red-600 text-red-600 hover:bg-red-50 focus:ring-red-500',\n };\n\n get twClasses(): string {\n const base = [\n 'inline-flex items-center justify-center font-medium',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 transition',\n this.sizeMap[this.size]\n ];\n // variant-specific\n if (this.variant === 'outlined') {\n base.push(this.outlinedMap[this.severity]);\n } else {\n base.push(this.colorMap[this.severity]);\n }\n if (this.variant === 'text') {\n base.push('bg-transparent hover:bg-gray-100 focus:ring-gray-200 text-gray-700');\n }\n if (this.variant === 'rounded') {\n base.push('rounded-full');\n } else {\n base.push('rounded-md');\n }\n if (this.disabled || this.loading) {\n base.push('opacity-50 cursor-not-allowed');\n }\n if (this.extraClasses) {\n base.push(this.extraClasses);\n }\n return base.join(' ');\n }\n\n onClick() {\n if (!this.disabled && !this.loading) {\n this.clicked.emit();\n }\n }\n\n onItemClick(evt: any) {\n this.itemClick.emit(evt);\n }\n\n // دالة مساعدة لدمج حالة التعطيل مع حالة الصلاحية\n // get isDisabledOrLoadingOrNoPermission(): boolean {\n // // إذا كان الزر معطلاً بشكل صريح أو في حالة تحميل، فهو معطل\n // if (this.disabled || this.loading) {\n // return true;\n // }\n // // إذا تم تحديد صلاحية للزر، تحقق منها\n // if (this.permission) {\n // return !this.permissionChecker.isGranted(this.permission);\n // }\n // // إذا لم يتم تحديد صلاحية، فالزر ليس معطلاً بسبب الصلاحيات\n // return false;\n // }\n\n}\n","\n<!-- generic-button.component.html -->\n <!-- *hasPermission=\"permission\" -->\n<ng-container >\n <ng-container *ngIf=\"model?.length; else simpleBtn\">\n <!-- حالة الـ splitButton -->\n <p-splitButton\n [model]=\"model\"\n [icon]=\"icon\"\n [label]=\"label\"\n [styleClass]=\"twClasses\"\n [disabled]=\"disabled || loading\" (onClick)=\"onClick()\"\n (onClick)=\"onClick()\"\n (onItemClick)=\"onItemClick($event)\"\n ></p-splitButton>\n </ng-container>\n\n <ng-template #simpleBtn>\n <!-- حالة الزرّ العادي -->\n <button\n [attr.type]=\"type\"\n pButton\n [icon]=\"loading ? 'pi pi-spin pi-spinner' : icon\"\n [label]=\"label\"\n [ngClass]=\"twClasses\"\n [attr.aria-label]=\"ariaLabel || label\"\n [disabled]=\"disabled || loading\" (onClick)=\"onClick()\"\n (click)=\"onClick()\"\n >\n\n <!-- محتوى مخصّص -->\n <ng-content *ngIf=\"!label && !icon && !loading\"></ng-content>\n </button>\n </ng-template>\n </ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActionDef } from '../../models/Actiondef';\nimport { ColumnDef } from '../../models/Columndef';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { MenuModule } from 'primeng/menu';\n\n@Component({\n selector: 'lib-generic-card',\n imports: [\n CommonModule,\n ButtonModule,\n MenuModule,\n TranslateModule,\n FormsModule,\n ],\n templateUrl: './generic-card.html',\n styleUrl: './generic-card.css'\n})\nexport class GenericCard <T extends { [key: string]: any }> implements OnInit{\n\n @Input() data: T[] = [];\n @Input() columns: ColumnDef<T>[] = [];\n @Input() loading = false;\n @Input() actions: ActionDef<T>[] = [];\n @Input() actionsMode: 'buttons' | 'menu' = 'buttons';\n @Input() showOperations: boolean = true;\n\n // Added inputs for selection mirroring the table component\n @Input() rowSelectable: boolean = false;\n @Input() showRowSelectionCheckbox: boolean = false;\n @Input() paginator: boolean = false; // Indicates if pagination is externally managed\n\n // Row class function, mirroring the table component\n @Input() rowClassFn: (rowData: any) => string = () => '';\n\n @Output() action = new EventEmitter<{ name: string; row: T }>();\n\n\n _selection: T | T[] | null = null;\n @Input()\n get selection(): T | T[] | null {\n return this._selection;\n }\n set selection(val: T | T[] | null) {\n this._selection = val;\n // No emit here, emit only from actual user interaction methods\n }\n\n @Output() selectionChange = new EventEmitter<T | T[] | null>();\n @Output() rowSelect = new EventEmitter<T>();\n // Note: onLazyLoad is not directly applicable as the card component doesn't have internal pagination UI.\n // The parent component should manage data slicing and pass the correct 'data' array.\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n // Initialize selection if needed, e.g., if a default selection should be present\n }\n\n /**\n * Generates menu items for the action menu.\n * @param row The data row for which to generate actions.\n * @returns An array of PrimeNG MenuItem objects.\n */\n getMenuItems(row: T): MenuItem[] {\n return this.actions.map(act => ({\n label: act.label,\n icon: act.icon,\n command: () => this.action.emit({ name: act.name, row }),\n styleClass: act.styleClass\n }));\n }\n\n /**\n * Handles click events on a clickable cell.\n * @param col The ColumnDef of the clicked column.\n * @param rowData The data row of the clicked cell.\n * @param event The mouse event.\n */\n handleCellClick(col: ColumnDef<any>, rowData: any, event: MouseEvent): void {\n event.stopPropagation(); // Prevent card selection if applicable\n if (col.clickAction) {\n col.clickAction(rowData, event);\n }\n }\n\n /**\n * Handles mouse enter events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellHover(col: ColumnDef<T>, row: T, event: MouseEvent): void {\n event.stopPropagation();\n col.onCellMouseEnter?.(row, event);\n }\n\n /**\n * Handles mouse leave events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellLeave(col: ColumnDef<T>, row: T, event: MouseEvent): void {\n event.stopPropagation();\n col.onCellMouseLeave?.(row, event);\n }\n\n /**\n * Handles click on the entire card for row selection (if not using checkboxes).\n * @param item The data item associated with the clicked card.\n */\n handleCardClick(item: T): void {\n if (this.rowSelectable && !this.showRowSelectionCheckbox) {\n // Single selection mode logic\n if (this._selection === item) {\n this._selection = null; // Deselect if already selected\n } else {\n this._selection = item; // Select the current item\n }\n this.selectionChange.emit(this._selection);\n this.rowSelect.emit(item); // Emit the selected item\n }\n }\n\n /**\n * Checks if an item is currently selected.\n * Used for checkbox binding.\n * @param item The item to check.\n * @returns True if the item is selected, false otherwise.\n */\n isItemSelected(item: T): boolean {\n if (!this._selection) {\n return false;\n }\n if (Array.isArray(this._selection)) {\n // Check if item exists in the array (for multi-select)\n return (this._selection as T[]).includes(item);\n }\n // Single selection mode\n return this._selection === item;\n }\n\n /**\n * Toggles the selection state of an item.\n * Used when a checkbox is clicked.\n * @param item The item to toggle.\n * @param event The change event from the checkbox.\n */\n toggleItemSelection(item: T, event: Event): void {\n event.stopPropagation(); // Prevent card click event from firing\n const isChecked = (event.target as HTMLInputElement).checked;\n\n if (this.showRowSelectionCheckbox) {\n // Multi-selection logic\n let currentSelectionArray = Array.isArray(this._selection) ? [...this._selection] : [];\n\n if (isChecked) {\n if (!currentSelectionArray.includes(item)) {\n currentSelectionArray.push(item);\n }\n } else {\n currentSelectionArray = currentSelectionArray.filter(selectedItem => selectedItem !== item);\n }\n this._selection = currentSelectionArray;\n } else if (this.rowSelectable) {\n // Single selection logic (if no checkboxes, this block would be redundant with handleCardClick, but kept for clarity)\n this._selection = isChecked ? item : null;\n }\n this.selectionChange.emit(this._selection);\n if (isChecked) {\n this.rowSelect.emit(item);\n }\n }\n\n /**\n * Used by *ngFor to optimize rendering.\n * Assumes each item has a unique 'id' property.\n * @param index The index of the item.\n * @param item The data item.\n * @returns The unique identifier of the item.\n */\n trackById(index: number, item: T): any {\n // You might need to adjust 'id' if your data uses a different unique identifier\n return (item as any).id || index;\n }\n\n}\n","\n<div class=\"p-4 p-4 flex flex-col gap-6 font-inter\">\n <div *ngIf=\"loading\" class=\"col-span-full text-center py-8\">\n <div class=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-500 inline-block\"></div>\n <p class=\"mt-4 text-gray-600\">Loading data...</p>\n </div>\n\n <div *ngIf=\"!loading && data.length === 0\" class=\"col-span-full text-center py-8 text-gray-500\">\n No records found.\n </div>\n\n <div *ngFor=\"let item of data; trackBy: trackById\"\n [ngClass]=\"rowClassFn(item)\"\n class=\"bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-300 overflow-hidden flex flex-row items-center\"\n (click)=\"handleCardClick(item)\"\n [class.cursor-pointer]=\"rowSelectable && !showRowSelectionCheckbox\">\n\n <div *ngIf=\"showRowSelectionCheckbox\" class=\"p-4\">\n <input type=\"checkbox\"\n [checked]=\"isItemSelected(item)\"\n (change)=\"toggleItemSelection(item, $event)\"\n class=\"form-checkbox h-5 w-5 text-blue-600 rounded focus:ring-blue-500\">\n </div>\n\n <div class=\"p-6 flex-grow\">\n <div class=\"flex flex-wrap -mx-2\">\n <ng-container *ngFor=\"let col of columns\">\n <div *ngIf=\"col.isCardVisible\" class=\"px-2 mb-2 w-full sm:w-1/5\">\n <div class=\"flex flex-col sm:flex-row sm:items-center text-sm\">\n <span class=\"font-semibold text-gray-700 sm:w-1/3 sm:min-w-[80px] sm:pr-2\">{{ col.header | translate }}:</span>\n <div class=\"flex-grow text-gray-800 text-left mt-1 sm:mt-0\">\n <ng-container *ngIf=\"col.clickable; else readonlyCardCell\">\n <span class=\"cursor-pointer hover:underline text-blue-600\"\n (click)=\"handleCellClick(col, item, $event)\"\n (mouseenter)=\"col.hoverable && onCellHover(col, item, $event)\"\n (mouseleave)=\"col.hoverable && onCellLeave(col, item, $event)\">\n <ng-container *ngIf=\"col.formatter; else defaultCardText\">\n <span [innerHTML]=\"col.formatter(item)\"></span>\n </ng-container>\n <ng-template #defaultCardText>\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\n </ng-template>\n </span>\n </ng-container>\n\n <ng-template #readonlyCardCell>\n <span>\n <ng-container *ngIf=\"col.formatter; else defaultCardText2\">\n <span [innerHTML]=\"col.formatter(item)\"></span>\n </ng-container>\n <ng-template #defaultCardText2>\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\n </ng-template>\n </span>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n\n <div *ngIf=\"showOperations && actions.length > 0\" class=\"border-l border-gray-200 p-4 flex justify-end items-center\">\n <ng-container *ngIf=\"actionsMode === 'buttons'; else cardMenuTpl\">\n <ng-container *ngFor=\"let act of actions\">\n <button\n pButton\n type=\"button\"\n [icon]=\"act.icon || ''\"\n [title]=\"act.label?? '' | translate\"\n class=\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600 custom-button-medium mr-1\"\n [ngClass]=\"act.styleClass\"\n (click)=\"action.emit({ name: act.name, row: item })\"\n ></button>\n </ng-container>\n </ng-container>\n\n <ng-template #cardMenuTpl>\n <p-menu\n #cardMenu\n [model]=\"getMenuItems(item)\"\n popup=\"true\"\n appendTo=\"body\">\n </p-menu>\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-ellipsis-v\"\n class=\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600\"\n (click)=\"cardMenu.toggle($event)\">\n </button>\n </ng-template>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\n\n@Component({\n selector: 'lib-generic-formly-fields',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyForm,\n // FormlyPrimeNGModule,\n ],\n templateUrl: './generic-formly-fields.html',\n})\nexport class GenericFormlyFields implements OnInit, OnChanges {\n /** الـ FormGroup الذي يُدار خارجيًا */\n @Input() form!: FormGroup;\n\n /** حقول Formly */\n @Input() fields: FormlyFieldConfig[] = [];\n\n /** النموذج (object) الذي سيُربط بالحقول */\n @Input() model: any = {};\n\n /** خيارات Formly (validation, hideExpression, ...) */\n @Input() options: FormlyFormOptions = {};\n\n ngOnInit() {\n // ما من حاجة هنا: يفترض أن form مُهيّأ في الخارج\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // لو احتجت تتعامل مع تغيّر الحقول أو الموديل، هنا المكان\n }\n\n // دالة مساعدة للوصول الآمن لخصائص الحقل\n getFieldIcon(field: FormlyFieldConfig): string | null {\n return field.templateOptions?.['icon'] || null;\n }\n}\n","<!-- يرسم حقول Formly داخل الـ form الموجود -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-generic-errormessage',\n imports: [CommonModule],\n templateUrl: './generic-errormessage.html',\n styleUrl: './generic-errormessage.css'\n})\nexport class GenericErrormessage {\n /** نص رسالة الخطأ */\n @Input() text: string = '';\n}\n"," \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}","import { Component, inject, Inject, OnDestroy } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyPrimeNGModule } from '@ngx-formly/primeng';\nimport { ButtonModule } from 'primeng/button';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { MessageModule } from 'primeng/message';\nimport { CrudService } from '../../services/crud-service.interface';\nimport { GenericButton } from '../generic-button/generic-button';\nimport { GenericFormlyFields } from '../generic-formly-fields/generic-formly-fields';\nimport { TranslateService,TranslateModule } from '@ngx-translate/core';\nimport { GenericErrormessage } from \"../generic-errormessage/generic-errormessage\";\n\n@Component({\n selector: 'app-generic-crud-dialog',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyPrimeNGModule,\n ButtonModule,\n ProgressSpinnerModule,\n MessageModule,\n GenericButton, // إضافة المكون العام للأزرار\n GenericFormlyFields,\n TranslateModule,\n GenericErrormessage\n],\n templateUrl: `./generic-crud-dialog.html`,\n styles: [`\n :host {\n display: block;\n }\n\n button {\n min-width: 120px;\n }\n `]\n})\nexport class GenericCrudDialog<T> implements OnDestroy {\n form = new FormGroup({});\n model: Partial<T> = {};\n fields: FormlyFieldConfig[] = [];\n options: FormlyFormOptions = {};\n loading = false;\n id :any= null;\n errorMessage: string | null = null;\n translate:TranslateService = inject(TranslateService);\n private destroy$ = new Subject<void>();\n private idField: keyof T;\n\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) {\n // استقبال البيانات من المكون الأب\n this.fields = this.config.data.fields;\n this.idField = this.config.data.idField;\n this.model = this.config.data.item ? {...this.config.data.item} : {};\n\n // تحديد وضع العملية (تعديل أو إضافة)\n // this.isEditMode = !!this.config.data.item;\n try {\n const id = (this.model as any)[this.idField];\n this.id = id != undefined;\n\n } catch (error) {\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 as CrudService<T>;\n console.log('service:', service);\n\n try {\n this.id = (this.model as any)[this.idField];\n } catch (error) {\n\n }\n console.log('isEditMode:', this.id);\n debugger\n const isEditMode = !!this.config.data.item;\n\nconst operation$: Observable<any> = isEditMode\n ? service.update(this.id, this.model as T)\n : service.create(this.model as T);\n\n operation$.pipe(takeUntil(this.destroy$)).subscribe({\n next: () => {\n this.ref.close(true); // نجاح العملية\n },\n error: (err) => {\n this.loading = false;\n this.errorMessage = err.error?.message ||\n err.message ||\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n"," <div class=\"p-4\">\n @if (errorMessage) {\n <lib-generic-errormessage [text]=\"errorMessage\"></lib-generic-errormessage>\n }\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <!-- استخدام المكون العام للحقول -->\n <lib-generic-formly-fields\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n </lib-generic-formly-fields>\n\n <div class=\"flex justify-end gap-2 mt-4\">\n\n <!-- استخدام المكون العام للأزرار - زر الحفظ -->\n <lib-generic-button\n variant=\"raised\"\n severity=\"primary\"\n type=\"submit\"\n [loading]=\"loading\"\n [disabled]=\"loading || form.invalid\"\n [label]=\"(id ? 'COMMON.UPDATE' : 'COMMON.SAVE') | translate\">\n </lib-generic-button>\n <!-- استخدام المكون العام للأزرار - زر الإلغاء -->\n <lib-generic-button\n variant=\"text\"\n severity=\"secondary\"\n [disabled]=\"loading\"\n [label]=\"'COMMON.CANCEL' | translate\"\n (clicked)=\"ref.close(false)\">\n </lib-generic-button>\n\n </div>\n </form>\n </div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyForm, FormlyFormOptions } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { ButtonModule } from 'primeng/button';\nimport { GenericButton } from '../../components/generic-button/generic-button';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'lib-generic-search',\n standalone: true,\n imports: [\n CommonModule,\n FormlyForm,\n TranslateModule,\n ToolbarModule,\n ButtonModule,\n GenericButton,\n ReactiveFormsModule,\n PopoverModule,\n FormsModule,\n InputIconModule,\n IconFieldModule,\n InputTextModule,\n ],\n templateUrl: './generic-search.html',\n})\nexport class GenericSearch implements OnInit {\n @ViewChild('overlay') overlay!: Popover;\n translate = inject(TranslateService);\n\n @Input() placeholder = 'بحث...';\n\n /**\n * List of fields to search by\n * Example: [{ label: 'Name', value: 'name' }, { label: 'Email', value: 'email' }]\n */\n\n\n @Output() search = new EventEmitter<any>();\n\n form = new FormGroup({});\n @Input() model: any = {};\n options: FormlyFormOptions = {};\n @Input() fields: FormlyFieldConfig[] = [];\n fields_: FormlyFieldConfig[] = [];\n\n// onTogglePopover(event: any) {\n// debugger\n// this.overlay.toggle(event);\n// }\n ngOnInit() {\n this.fields_ = this.fields;\n }\n\n onSubmit() {\n this.search.emit(this.model);\n }\n\n onReset() {\n this.model = {};\n this.search.emit(this.model);\n }\n}\n","<div class=\"flex items-center gap-3\">\r\n<p-iconfield iconPosition=\"left\">\r\n\r\n <p-inputicon class=\"pi pi-search\"> </p-inputicon>\r\n <input pInputText type=\"text\" (keyup.enter)=\"onSubmit()\" [(ngModel)]=\"model['filter']\" placeholder=\"{{ 'SEARCH' | translate }}\" />\r\n <!-- 2) Search Button that toggles the popover -->\r\n\r\n</p-iconfield>\r\n<p-button icon=\"pi pi-filter\" outlined severity=\"secondary\" (onClick)=\"overlay.toggle($event)\" />\r\n</div>\r\n<!-- 4) Popover for Advanced Multi-field Search -->\r\n<p-popover #overlay [dismissable]=\"true\" styleClass=\"p-4 w-80 max-h-96 flex flex-col\">\r\n\r\n <div class=\"flex-1 overflow-auto\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(); overlay.hide()\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields_\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n </formly-form>\r\n </form>\r\n </div>\r\n\r\n <div class=\"flex justify-end mt-2 space-x-2 flex-none\">\r\n <button type=\"submit\" pButton size=\"small\" label=\"{{ 'SEARCH' | translate }}\"></button>\r\n <button type=\"button\" pButton size=\"small\" class=\"p-button-text\" (click)=\"onReset(); overlay.hide()\">\r\n {{ 'CLEAR' | translate }}\r\n </button>\r\n </div>\r\n\r\n\r\n</p-popover>\r\n","import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { MenuItem, SortEvent } from 'primeng/api';\r\nimport { Table, TableHeaderCheckboxToggleEvent, TableLazyLoadEvent, TableRowSelectEvent } from 'primeng/table';\r\nimport { ColumnDef } from '../../models/Columndef';\r\nimport { ActionDef } from '../../models/Actiondef';\r\nimport { CommonModule, NgForOf, NgIf } from '@angular/common';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ButtonModule, Button } from 'primeng/button';\r\nimport { MenuModule, Menu } from 'primeng/menu';\r\nimport { TranslateModule, TranslateService, TranslatePipe } from '@ngx-translate/core';\r\nimport { FormlyField, FormlyFieldConfig, FormlyForm, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'lib-generic-table',\r\n imports: [CommonModule, TableModule, ButtonModule, MenuModule, NgForOf,TranslateModule,FormlyField,FormlyForm, NgIf, TranslatePipe, Menu, Button],\r\n templateUrl: './generic-table.html',\r\n styleUrl: './generic-table.css'\r\n})\r\nexport class GenericTable<T> {\r\n@ViewChild('dt') dt!: Table;\r\n\r\n @Input() data: T[] = [];\r\n @Input() columns: FormlyFieldConfig[] = [];\r\n columns_: FormlyFieldConfig[] = [];\r\n @Input() loading = false;\r\n @Input() actions: ActionDef<T>[] = [];\r\n @Input() actionsMode: 'buttons' | 'menu' = 'buttons';\r\n @Input() first = 0;\r\n @Input() rows = 10;\r\n @Input() totalRecords = 0;\r\n @Input() sortField?: string;\r\n @Input() sortOrder: 1 | -1 = 1;\r\n @Input() globalFilterFields: string[] = [];\r\n\r\n @Output() action = new EventEmitter<{ name: string; row: T }>();\r\n @Output() pageChange = new EventEmitter<TableLazyLoadEvent>();\r\n\r\n\r\n @Input() scrollHeight: string = '400px';\r\n\r\n // **جديد**: تمكين اختيار الصفوف\r\n /** فعّل اختيار الصفين single/multiple */\r\n @Input() rowSelectable: boolean = true;\r\n /** يحتفظ بالصف المحدد */\r\n //@Input() selection: T | T[] | null = null;\r\n\r\n // هذا سيكون مرتبطًا بـ [(selection)] في p-table\r\n _selection: T | T[] | null = null;\r\n\r\n\r\n @Input()\r\n get selection(): T | T[] | null {\r\n return this._selection;\r\n }\r\n set selection(val: T | T[] | null) {\r\n this._selection = val;\r\n // لا تُصدر الحدث هنا، بل في onInternalSelectionChange فقط\r\n }\r\n\r\n /** يصدر الصف المحدد عند النقر */\r\n @Output() rowSelect = new EventEmitter<T>();\r\n\r\n /** يصدر الصفوف المحددة عند التغيير (للربط الثنائي) */\r\n @Output() selectionChange = new EventEmitter<T | T[] | null>();\r\n\r\n\r\n /** جديد: التحكم بظهور الـ paginator */\r\n @Input() paginator: boolean = true;\r\nform = new FormGroup({});\r\noptions: FormlyFormOptions = {};\r\n\r\n\r\n // **جديد**: يتحكم بإظهار عمود اختيار الصفوف (checkboxes)\r\n /** يتحكم في إظهار عمود اختيار الصفوف المتعددة بواسطة checkboxes */\r\n @Input() showRowSelectionCheckbox: boolean = false;\r\n\r\n\r\n onInternalSelectionChange(event: TableRowSelectEvent<T>\r\n | TableHeaderCheckboxToggleEvent): void {\r\n if ('data' in event) {\r\n // Row select/unselect (single أو multiple)\r\n if (Array.isArray(this._selection)) {\r\n this._selection = [...this._selection]; // تحديث نسخة المصفوفة عند متعدد\r\n } else {\r\n this._selection = event.data as T; // اختيار فردي\r\n }\r\n } else if ('checked' in event) {\r\n // Header checkbox toggle\r\n this._selection = event.checked ? [...this.data] : [];\r\n }\r\n\r\n this.selectionChange.emit(this._selection);\r\n}\r\n\r\n\r\n\r\ncustomSort(event: SortEvent) {\r\n event.data?.sort((data1, data2) => {\r\n const value1 = this.resolveFieldData(data1, event.field ?? '');\r\n const value2 = this.resolveFieldData(data2, event.field ?? '');\r\n\r\n let result = 0;\r\n if (value1 == null && value2 != null) result = -1;\r\n else if (value1 != null && value2 == null) result = 1;\r\n else if (value1 == null && value2 == null) result = 0;\r\n else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n result = value1.localeCompare(value2);\r\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\r\n\r\n return (event.order ?? 1) * result;\r\n });\r\n}\r\nresolveFieldData(data: any, field: string): any {\r\n if (!field) return null;\r\n if (field.indexOf('.') === -1) return data[field];\r\n return field.split('.').reduce((obj, prop) => (obj ? obj[prop] : null), data);\r\n}\r\n\r\n onAction(act: ActionDef<T>, row: T) {\r\n if (act.action) {\r\n act.action(row);\r\n } else {\r\n this.action.emit({ name: act.name, row });\r\n }\r\n }\r\n cloneField(field: any): any {\r\n if (field === null || typeof field !== 'object') {\r\n return field;\r\n }\r\n\r\n if (Array.isArray(field)) {\r\n // preserve `this` context\r\n return field.map((item) => this.cloneField(item));\r\n }\r\n const cloned: any = {};\r\n for (const key of Object.keys(field)) {\r\n cloned[key] = this.cloneField(field[key]);\r\n }\r\n\r\n return cloned;\r\n}\r\n\r\n getForm(rowIndex: number, colIndex: number): FormGroup {\r\n var cellForms: { [key: string]: FormGroup } = {};\r\n const key = `${rowIndex}_${colIndex}`;\r\n if (!cellForms[key]) {\r\n cellForms[key] = new FormGroup({});\r\n }\r\n return cellForms[key];\r\n }\r\n\r\n onLazyLoad(event: TableLazyLoadEvent): void {\r\n this.columns_ = this.columns;\r\n // // debugger\r\n this.pageChange.emit(event);\r\n }\r\n\r\n\r\n applyFilter(filters: any): void {\r\n // if (field) {\r\n // this.dt.filter(global, field, 'contains');\r\n // } else {\r\n // this.dt.filterGlobal(global, 'contains');\r\n // }\r\n\r\n }\r\n\r\n getMenuItems(row: T): MenuItem[] {\r\n return this.actions.map(act => ({\r\n label: act.label,\r\n icon: act.icon,\r\n command: () => this.onAction(act, row ),\r\n styleClass: act.styleClass\r\n }));\r\n }\r\n\r\n // **جديد**: يتم إطلاق هذا عند اختيار صف\r\n onRowSelect(event: TableRowSelectEvent<T>) {\r\n // debugger\r\n console.log('GenericTable.onRowSelect:', event.data);\r\n if (event.data) {\r\n this.rowSelect.emit(event.data as T);\r\n }\r\n }\r\n\r\n}\r\n","\r\n<div class=\"flex-1 last:[&>td]:border-0 rounded-lg border border-surface w-full overflow-auto\">\r\n <p-table #dt\r\n [value]=\"data\"\r\n [columns]=\"columns\"\r\n [lazy]=\"true\"\r\n [paginator]=\"paginator\"\r\n [rows]=\"rows\"\r\n [first]=\"first\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\" (onLazyLoad)=\"onLazyLoad($event)\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [loading]=\"loading\"\r\n [scrollable]=\"true\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [selectionMode]=\"showRowSelectionCheckbox ? 'multiple' : (rowSelectable ? 'single' : undefined)\"\r\n [(selection)]=\"_selection\"\r\n (onRowSelect)=\"onInternalSelectionChange($event)\"\r\n (onRowUnselect)=\"onInternalSelectionChange($event)\"\r\n (onHeaderCheckboxToggle)=\"onInternalSelectionChange($event)\"\r\n tableLayout=\"fixed\"\r\n [customSort]=\"false\"\r\n (sortFunction)=\"customSort($event)\"\r\n >\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngIf=\"showRowSelectionCheckbox\" style=\"width: 2rem\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <!-- <th style=\"width: 1rem\">\r\n <p-tableHeaderCheckbox />\r\n </th> -->\r\n\r\n <ng-container *ngFor=\"let col of columns\" >\r\n <th *ngIf=\"col.props?.table?.props?.width; else templateName\" [pSortableColumn]=\"col.key\"\r\n class=\"px-4 py-2 text-sm font-medium text-white text-center\"\r\n [style.min-width]=\"col.props?.table?.props?.width\">\r\n {{ col.props?.label | translate }}\r\n <p-sortIcon [field]=\"col.key\"></p-sortIcon>\r\n </th>\r\n\r\n <ng-template #templateName>\r\n <th class=\"px-4 py-2 text-sm font-medium text-white text-center\">\r\n {{ col.props?.label | translate }}\r\n <p-sortIcon [field]=\"col.key\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n</ng-container>\r\n\r\n\r\n <th class=\"px-4 py-2 text-sm font-medium text-white text-center\"> {{ 'OPERATIONS' | translate }}</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-i=\"rowIndex\">\r\n <tr class=\"even:bg-gray-50 hover:bg-gray-100\" (click)=\"rowSelect.emit(rowData)\">\r\n <!-- <td style=\"width: 1rem\">\r\n <p-tableCheckbox [value]=\"rowData\" />\r\n </td> -->\r\n <td *ngIf=\"showRowSelectionCheckbox\" style=\"width: 2rem\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td *ngFor=\"let col of columns_ ; let colIndex = index\"\r\n class=\"border-t border-gray-200 px-4 py-2 text-center text-sm text-gray-700\"\r\n [style.width]=\"col.props && col.props['table']\r\n && col.props['table']['props'] && col.props['table']['props']['width'] \"\r\n\r\n >\r\n\r\n\r\n <!-- إذا العمود قابل للنقر -->\r\n\r\n <formly-form\r\n [model]=\"rowData\"\r\n [form]=\"getForm(i, colIndex)\"\r\n [fields]=\"[cloneField(col)]\"\r\n [options]=\"options\">\r\n </formly-form>\r\n\r\n </td>\r\n <td class=\"border-t border-gray-200 px-4 py-2 text-center align-middle\">\r\n <ng-container [ngSwitch]=\"actionsMode\">\r\n <!-- Render buttons -->\r\n <ng-container *ngSwitchCase=\"'buttons'\">\r\n <ng-container *ngFor=\"let act of actions\">\r\n <button\r\n *ngIf=\"act.icon || act.label\"\r\n pButton\r\n [icon]=\"act.icon || ''\"\r\n [label]=\"(act.label || '') | translate\"\r\n [class]=\"act.styleClass || ''\"\r\n class=\"p-button-sm mx-1\"\r\n (click)=\"onAction(act, rowData)\"\r\n ></button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Render menu -->\r\n <ng-container *ngSwitchCase=\"'menu'\">\r\n <p-menu #menu [model]=\"getMenuItems(rowData)\" [popup]=\"true\" appendTo=\"body\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2 px-2 py-1\">\r\n <i [ngClass]=\"item.icon\" class=\"text-primary-600\" *ngIf=\"item.icon\"></i>\r\n <span class=\"font-medium\">{{ (item.label || '') | translate }}</span>\r\n\r\n <span *ngIf=\"item.badge\" class=\"ml-auto text-xs bg-red-500 text-white px-2 py-1 rounded\">\r\n {{ item.badge }}\r\n </span>\r\n\r\n <!-- <p-inputSwitch *ngIf=\"item.toggle\" [(ngModel)]=\"item.toggleValue\" class=\"ml-auto\" /> -->\r\n </div>\r\n </ng-template>\r\n </p-menu>\r\n\r\n <p-button\r\n outlined\r\n icon=\"pi pi-ellipsis-v\"\r\n class=\"p-button-text p-button-sm\"\r\n (onClick)=\"menu.toggle($event)\"\r\n ></p-button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n\r\n</div>\r\n","// app/shared/services/swal.service.ts\nimport { Injectable } from '@angular/core';\nimport Swal, {\n SweetAlertOptions,\n SweetAlertResult,\n SweetAlertIcon\n} from 'sweetalert2';\n\n@Injectable({ providedIn: 'root' })\nexport class SwalService {\n /** رسالة تأكيد قبل تنفيذ إجراء */\n confirm(\n title = 'هل أنت متأكد؟',\n text = 'لن يمكنك التراجع عن هذا الإجراء',\n confirmButtonText = 'نعم',\n cancelButtonText = 'إلغاء'\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'warning',\n title,\n text,\n showCancelButton: true,\n confirmButtonText,\n cancelButtonText,\n // reverseButtons: true,\n customClass: {\n container: 'swal2-container' // ✅ أضف هذه الفئة\n }\n });\n }\n\n /** رسالة نجاح */\n success(\n title: string,\n text?: string,\n timer = 2000\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'success',\n title,\n text,\n timer,\n showConfirmButton: false,\n customClass: {\n container: 'swal2-container' // ✅ أضف هذه الفئة\n }\n });\n }\n\n /** رسالة خطأ */\n error(\n title: string,\n text?: string,\n footer?: string\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'error',\n title,\n text,\n footer,\n customClass: {\n container: 'swal2-container' // ✅ أضف هذه الفئة\n }\n });\n }\n\n /** رسالة معلومات */\n info(\n title: string,\n text?: string\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'info',\n title,\n text,\n });\n }\n\n /** عرض نافذة SweetAlert2 بأي خيارات تريد */\n alert(\n options: SweetAlertOptions\n ): Promise<SweetAlertResult> {\n return Swal.fire(options);\n }\n\n /** Toast بسيط قابل لإعادة الاستخدام */\n toast(\n title: string,\n icon: SweetAlertIcon = 'info',\n position: SweetAlertOptions['position'] = 'top-end',\n timer = 3000\n ): void {\n const Toast = Swal.mixin({\n toast: true,\n position,\n timer,\n showConfirmButton: false,\n });\n Toast.fire({ icon, title });\n }\n\n}\n","import { Breadcrumb } from 'primeng/breadcrumb';\r\nimport { DividerModule } from 'primeng/divider';\r\n// src/app/shared/generic-crud-table/generic-crud-table.component.ts\r\nimport { Component, Input, Output, EventEmitter, ViewChild, inject, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GenericButton } from '../generic-button/generic-button';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { PaginatorState } from 'primeng/paginator';\r\nimport { ActionDef } from '../../models/Actiondef';\r\nimport { GenericSearch } from '../generic-search/generic-search';\r\nimport { TableModule,TableLazyLoadEvent } from 'primeng/table';\r\nimport { GenericTable } from '../generic-table/generic-table';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { FormlyFieldConfig, FormlyForm, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DrawerModule } from 'primeng/drawer';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { BaseService } from '../../services/base.service';\r\nimport { Observable, } from 'rxjs';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { BreadcrumbComponent } from '../breadcrumb/breadcrumb';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ButtonConfig } from '../../models/ButtonConfig';\r\nimport { SwalService } from '../../services/SwalService.service';\r\n\r\nexport interface PageChangePayload extends PaginatorState {\r\nsort?: string;\r\nfilters?: Record<string, any>;\r\n}\r\n\r\nexport type ActionsMode = 'buttons' | 'menu';\r\n\r\n@Component({\r\n selector: 'app-generic-crud-table',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TableModule,\r\n GenericButton,\r\n ButtonModule,\r\n GenericSearch,\r\n GenericTable,\r\n ToolbarModule,\r\n TranslateModule,\r\n DividerModule,\r\n IconFieldModule,\r\n DrawerModule,\r\n FormlyForm,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MessageModule,\r\n BreadcrumbComponent,\r\n DialogModule,\r\n],\r\n templateUrl: './generic-crud-table.html',\r\n host: {\r\n class: 'h-full flex-1 flex flex-col overflow-hidden border border-surface rounded-2xl p-4 bg-white'\r\n },\r\n})\r\n\r\nexport class GenericCrudTableComponent<T> implements OnChanges{\r\n @ViewChild('genericTable') genericTable!: GenericTable<T>;\r\n translate:TranslateService = inject(TranslateService);\r\n private swalService = inject(SwalService);\r\n\r\n home: MenuItem | undefined = { icon: 'pi pi-home', routerLink: '/' };\r\n @Input() data: T[] = [];\r\n formFields_: FormlyFieldConfig[] = []; // <-- هنا\r\n @Input() formFields: FormlyFieldConfig[] = []; // <-- هنا\r\n @Input() columns: FormlyFieldConfig[] = []; // <-- هنا\r\n @Input() isViewMode = false;\r\n @Input() isEditMode = false;\r\n @Input() drawerVisible = false;\r\n @Input() dialogVisible = false;\r\n form = new UntypedFormGroup({});\r\n @Input() model: any;\r\n model_: any = {};\r\n @Input() loading = false;\r\n @Input() errorMsg: string = '';\r\n @Input() errorMessage: string|any = '';\r\n\r\noptions: FormlyFormOptions = {};\r\n\r\n @Input() actions: ActionDef<T>[] = [];\r\n /** تحدد طريقة العرض: 'buttons' أو 'menu' */\r\n @Input() actionsMode: ActionsMode = 'buttons';\r\n @Output() action = new EventEmitter<{ name: string; row: T }>();\r\n @Output() bulkAction = new EventEmitter<{ name: string; items: T[] }>();\r\n @Output() singleAction = new EventEmitter<{ name: string; item: T }>();\r\n\r\n // البحث\r\n// Search\r\n @Input() filters: any;\r\n @Input() filterModel: any = {};\r\n @Output() search = new EventEmitter<{ field: string; global: string }>();\r\n\r\n/** للتحكم بإظهار/إخفاء قسم البحث */\r\n @Input() showSearch: boolean = true;\r\n\r\n /** Pagination Inputs */\r\n @Input() first = 0;\r\n @Input() rows = 10;\r\n @Input() totalRecords = 0;\r\n @Output() pageChange = new EventEmitter<PageChangePayload>();\r\n @Output() onSearch = new EventEmitter<any>();\r\n\r\n@Output() visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();;\r\n// @Output() visibleChange = new EventEmitter<boolean>();\r\nviewHeaderTitle = 'عرض التفاصيل';\r\n /** لجعل الجدول قابل لاختيار الصفوف (افتراضي false) */\r\n @Input() rowSelectable: boolean = false;\r\n /** حدث يخرج الصف المحدّد */\r\n @Output() rowSelect = new EventEmitter<T>();\r\n\r\n selection: T | null = null;\r\n\r\n // الفرز\r\n sortField?: string;\r\n sortOrder: 1 | -1 = 1;\r\n\r\n@Input() scrollHeight: string = '400px';\r\n\r\n @Input() paginator: boolean = true;\r\n\r\n@Input() service: BaseService|any;\r\n@Input() idField: string = 'id';\r\n\r\n @Input() showRowSelectionCheckbox: boolean = false;\r\n\r\n @Input() bulkActionButtons: ButtonConfig[] = [];\r\n @Input() singleActionButtons: ButtonConfig[] = [];\r\n\r\n  _selectedRows: T[] = [];\r\n\r\nget isSingleItemSelected(): boolean {\r\n return this._selectedRows.length === 1;\r\n}\r\n\r\nget isMultipleItemSelected(): boolean {\r\n return this._selectedRows.length > 1;\r\n}\r\n\r\nget selectedItems(): T[] {\r\n return this._selectedRows;\r\n}\r\n\r\n\r\n\r\n/** للتحكم بإظهار زر الإضافة */\r\n@Input() showAddButton: boolean = true;\r\n/** الأيقونة الافتراضية لزر الإضافة */\r\n@Input() addButtonIcon: string = 'pi pi-plus';\r\n/** النص الافتراضي لزر الإضافة */\r\n@Input() addButtonLabel: string = 'ADD';\r\n /** تتحكّم بموقع زر الإضافة: 'top' أو 'bottom' */\r\n@Input() addButtonPosition: 'top' | 'bottom' = 'top';\r\n\r\n @Input() addButtonConfigs: ButtonConfig[] = [];\r\n\r\n@Input() breadcrumb: MenuItem[] | undefined;\r\nngOnChanges(changes: SimpleChanges) {\r\n\r\n}\r\nget breadcrumb_(): MenuItem[] | undefined {\r\n return this.breadcrumb?.map(v => ({\r\n ...v,\r\n label: this.translate.instant(v.label ?? '')\r\n }));\r\n}\r\nget rtl(): boolean {\r\n try {\r\n return document?.documentElement?.dir === 'rtl';\r\n } catch (error) {\r\n return true;\r\n }\r\n}\r\n// private destroy$ = new Subject<void>();\r\n /** الآن يتلقّى pagination + sort في حدث واحد */\r\nonLazyLoad(event: TableLazyLoadEvent) {\r\n // this.model_= this.model ?? {};\r\n this.model= this.model ?? {};\r\n\r\n this.formFields_ = this.formFields;\r\n const first = event.first ?? this.first;\r\n const rows = event.rows ?? this.rows;\r\n const sortField = typeof event.sortField === 'string'\r\n ? event.sortField\r\n : this.sortField;\r\n const sortOrder = event.sortOrder === -1 ? -1 : 1;\r\n\r\n\r\n const filters: Record<string, any> = {};\r\n if (event.filters) {\r\n Object.entries(event.filters).forEach(([field, meta]) => {\r\n const value = (meta as any).value;\r\n if (value != null && value !== '') {\r\n filters[field] = value;\r\n }\r\n });\r\n }\r\n\r\n this.first = first;\r\n this.rows = rows;\r\n this.sortField = sortField;\r\n this.sortOrder = sortOrder as 1| -1;\r\nvar dir = sortOrder === 1 ? 'asc' : 'desc';\r\n var sort = sortField ? `${sortField} ${dir}` : undefined;\r\n\r\n this.pageChange.emit({ first, rows ,sort, filters });\r\n\r\n // يبني النص وإرساله\r\n\r\n}\r\n\r\n\r\n /** تصيير البيانات حسب الصفحة */\r\n get pagedData(): T[] {\r\n // return this.data ? this.data.slice(this.first, this.first + this.rows) : [];\r\n\r\n return this.data;\r\n }\r\n\r\n\r\n\r\nget globalFilterFields(): string[] {\r\n return this.columns.map(c => String(c.key));\r\n}\r\n\r\n\r\n\r\n\r\n\r\n /** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */\r\n// from generic-crud-table.component.ts\r\n\r\n/** بدّل applySearch لتبث pageChange مباشرةً */\r\n applySearch(filters: any) {\r\n // this.genericTable.applyFilter(global);\r\n this.onSearch.emit(filters);\r\n }\r\n\r\n\r\n /** دالة تنفّذ عند النقر على صف */\r\n onRowClick(row: T) {\r\n console.log('GenericCrudTableComponent.rowClick:', row);\r\n if (this.rowSelectable) {\r\n this.rowSelect.emit(row);\r\n }\r\n }\r\n\r\n\r\n @Input() beforeSave: (record: T) => T = (record) => record;\r\n\r\n // onSubmit() {\r\n // if (this.form.invalid) return;\r\n\r\n // this.loading = true;\r\n // this.errorMessage = null;\r\n\r\n // const service = this.service /* as CrudService<T> */;\r\n // const id = this.isEditMode ? (this.model as any)[this.idField] : null;\r\n\r\n // const recordToSave = this.beforeSave({ ...this.model });\r\n\r\n\r\n // const operation$: Observable<any> = this.isEditMode\r\n // ? service.update(id, recordToSave)\r\n // : service.create(recordToSave);\r\n\r\n // // operation$.pipe(takeUntil(this.destroy$)).subscribe({\r\n // operation$.subscribe({\r\n // next: () => {\r\n // // this.ref.close(true); // نجاح العملية\r\n // this.visibleChange.emit(false)\r\n // // this.pageChange.emit({ first, rows ,sort, filters });\r\n // this.applySearch('');\r\n // // this.me\r\n // },\r\n // error: (err:any) => {\r\n // this.loading = false;\r\n\r\n // this.errorMessage = err.error?.title ||\r\n // err.message ||\r\n // 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\r\n // }\r\n // });\r\n // }\r\n\r\n onSubmit() {\r\n if (this.form.invalid) return;\r\n\r\n // ✅ أول شيء نطلب تأكيد من المستخدم\r\n this.swalService.confirm(\r\n this.isEditMode ? 'تأكيد التعديل' : 'تأكيد الحفظ',\r\n this.isEditMode\r\n ? 'هل تريد حفظ التعديلات على هذا السجل؟'\r\n : 'هل تريد حفظ هذا السجل؟',\r\n 'نعم',\r\n 'إلغاء'\r\n ).then((result) => {\r\n if (!result.isConfirmed) return;\r\n\r\n this.loading = true;\r\n this.errorMessage = null;\r\n\r\n const service = this.service;\r\n const id = this.isEditMode ? (this.model as any)[this.idField] : null;\r\n\r\n const recordToSave = this.beforeSave({ ...this.model });\r\n\r\n const operation$: Observable<any> = this.isEditMode\r\n ? service.update(id, recordToSave)\r\n : service.create(recordToSave);\r\n\r\n operation$.subscribe({\r\n next: () => {\r\n this.loading = false;\r\n\r\n // ✅ رسالة نجاح\r\n this.swalService.success(\r\n this.isEditMode ? 'تم التعديل بنجاح' : 'تم الحفظ بنجاح'\r\n );\r\n\r\n this.visibleChange.emit(false);\r\n this.applySearch('');\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n\r\n const msg =\r\n err.error?.title ||\r\n err.message ||\r\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\r\n\r\n this.errorMessage = msg;\r\n\r\n // ❌ رسالة خطأ\r\n this.swalService.error('فشل الحفظ', msg);\r\n }\r\n });\r\n });\r\n}\r\n\r\n\r\n   trackByIdx(index: number, item: any): number {\r\n    return index;\r\n  }\r\n\r\nonSingleItemAction(btn: ButtonConfig): void {\r\n if (!this.isSingleItemSelected) return;\r\n\r\n const selectedItem = this._selectedRows[0];\r\n this.singleAction.emit({\r\n name: btn.actionName ?? 'singleAction',\r\n item: selectedItem\r\n });\r\n}\r\n\r\nonInternalBulkAction(btn: ButtonConfig): void {\r\n if (!this.isMultipleItemSelected) return;\r\n\r\n this.bulkAction.emit({\r\n name: btn.actionName ?? 'bulkAction',\r\n items: [...this._selectedRows] // نرسل نسخة من المصفوفة\r\n });\r\n}\r\n\r\n\r\n}\r\n","\r\n <div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <!-- <div class=\"text-2xl leading-8 font-medium bg-slate-800 p-4 rounded-md\">\r\n <p-breadcrumb\r\n [model]=\"breadcrumb_\"\r\n [home]=\"home\"\r\n styleClass=\"custom-breadcrumb\"\r\n ></p-breadcrumb>\r\n </div> -->\r\n\r\n<app-breadcrumb [breadcrumb]=\"breadcrumb_\"></app-breadcrumb>\r\n\r\n </div>\r\n\r\n<div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n <ng-container *ngIf=\"isSingleItemSelected\">\r\n <ng-container *ngFor=\"let btn of singleActionButtons; trackBy: trackByIdx\">\r\n <lib-generic-button\r\n\r\n [icon]=\"btn.icon\"\r\n[label]=\"btn.label | translate\"\r\n[variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n</ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedItems.length > 0\">\r\n <ng-container *ngFor=\"let btn of bulkActionButtons; trackBy: trackByIdx\">\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let btn of addButtonConfigs; trackBy: trackByIdx\">\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\" this.action.emit({ name: btn.actionName ?? 'add', row: null! });\"\r\n ></lib-generic-button>\r\n </ng-container>\r\n\r\n <p-button\r\n icon=\"pi pi-circle-fill text-green-500\" *ngIf=\"showAddButton && addButtonConfigs.length == 0\"\r\n [label]=\"(addButtonLabel | translate)\r\n \"(onClick)=\"action.emit({ name: 'add', row: null! })\"\r\n outlined severity=\"secondary\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n\r\n <ng-container *ngIf=\"showSearch && filters; else emptySearch\">\r\n <lib-generic-search\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (reset)=\"applySearch('')\"\r\n ></lib-generic-search>\r\n </ng-container>\r\n\r\n <ng-template #emptySearch>\r\n <!-- Render a dummy div to preserve expected DOM shape -->\r\n <!-- <div class=\"min-h-[2.5rem] w-[12rem]\"></div> -->\r\n </ng-template>\r\n\r\n <div class=\"flex items-center gap-3\">\r\n\r\n <p-button icon=\"pi pi-refresh\" outlined severity=\"secondary\" (onClick)=\"applySearch('')\" />\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0\" />\r\n <p-button icon=\"pi pi-sort\" outlined severity=\"secondary\" />\r\n <p-button label=\"1 of 15\" outlined severity=\"secondary\" />\r\n <p-button icon=\"pi pi-chevron-right\" outlined severity=\"secondary\" />\r\n <p-button icon=\"pi pi-chevron-left\" outlined severity=\"secondary\" />\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n<lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n></lib-generic-table>\r\n\r\n\r\n\r\n\r\n<p-drawer\r\n*ngIf=\"drawerVisible\"\r\n[(visible)]=\"drawerVisible\" [closable]=\"true\"\r\n[dismissible]=\"false\" [closeOnEscape]=\"true\"\r\n(visibleChange)=\"visibleChange.emit($event)\"\r\nstyleClass=\"!w-full md:!w-80 lg:!w-[40rem]\">\r\n <!-- Header -->\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex items-center justify-between w-full\">\r\n <div class=\"flex items-center gap-2\">\r\n <i class=\"pi pi-arrow-left cursor-pointer text-xl\" (click)=\"visibleChange.emit(false)\"></i>\r\n <span class=\"font-bold text-lg\">{{ isEditMode ? 'تعديل ' : 'إضافة' }}</span>\r\n </div>\r\n </div>\r\n </ng-template>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" class=\"p-4\">\r\n <formly-form [form]=\"form\" [fields]=\"formFields_\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n\r\n <!-- Footer -->\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n size=\"large\"\r\n type=\"submit\"\r\n (click)=\"onSubmit()\">\r\n </button>\r\n\r\n <button\r\n pButton\r\n label=\"{{ 'CANCEL' | translate }}\"\r\n severity=\"danger\"\r\n size=\"large\"\r\n (click)=\"visibleChange.emit(false)\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n\r\n<p-dialog\r\n *ngIf=\"dialogVisible\"\r\n [(visible)]=\"dialogVisible\"\r\n [modal]=\"true\"\r\n [closable]=\"true\"\r\n [dismissableMask]=\"true\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [style]=\"{ width: '95vw', maxWidth: '40rem' }\"\r\n [header]=\"viewHeaderTitle\"\r\n>\r\n<!-- backdrop-blur-sm -->\r\n <div class=\"relative\">\r\n <!-- Only visible in view mode: disables interaction and adds blur effect -->\r\n <div\r\n *ngIf=\"isViewMode\"\r\n class=\"absolute inset-0 z-10 bg-white/50 pointer-events-auto cursor-not-allowed rounded-md\">\r\n </div>\r\n\r\n <!-- Form -->\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n </formly-form>\r\n </form>\r\n </div>\r\n <!-- Footer -->\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end\">\r\n <button\r\n pButton\r\n label=\"{{ 'CLOSE' | translate }}\"\r\n severity=\"secondary\"\r\n size=\"large\"\r\n (click)=\"visibleChange.emit(false)\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n\r\n\r\n","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","import {\n Component,\n ChangeDetectionStrategy,\n Type,\n OnInit,\n} from '@angular/core';\nimport {\n FieldType,\n FieldTypeConfig,\n FormlyAttributes,\n FormlyFieldConfig,\n} from '@ngx-formly/core';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { TranslateModule } from '@ngx-translate/core';\n\ninterface DatepickerProps extends FormlyFieldProps {\n defaultDate?: Date;\n dataType?: 'string' | 'date'; // default is 'string'\n dateFormat?: string;\n icon?: string;\n hourFormat?: string;\n timeOnly?: boolean;\n showTime?: boolean;\n showIcon?: boolean;\n showButtonBar?: boolean;\n showOtherMonths?: boolean;\n selectOtherMonths?: boolean;\n selectionMode?: 'multiple' | 'single' | 'range';\n numberOfMonths?: number;\n inline?: boolean;\n readonlyInput?: boolean;\n touchUI?: boolean;\n monthNavigator?: boolean;\n yearNavigator?: boolean;\n yearRange?: string;\n}\n\nexport interface FormlyDatepickerFieldConfig\n extends FormlyFieldConfig<DatepickerProps> {\n type: 'datepicker' | Type<FormlyFieldDatepicker>;\n}\n\n@Component({\n selector: 'formly-field-primeng-datepicker',\n template: `\n <p-datepicker\n [dataType]=\"props.dataType ?? 'string'\"\n [dateFormat]=\"props.dateFormat ?? (props.showTime ? 'yy-mm-dd' : 'yy-mm-dd')\"\n [hourFormat]=\"props.hourFormat || '12'\"\n [timeOnly]=\"props.timeOnly || false\"\n [icon]=\"props.icon\"\n [showTime]=\"props.showTime || false\"\n [showIcon]=\"props.showIcon || true\"\n [showButtonBar]=\"props.showButtonBar\"\n [showOtherMonths]=\"props.showOtherMonths\"\n [selectOtherMonths]=\"props.selectOtherMonths\"\n [selectionMode]=\"props.selectionMode || 'single'\"\n [numberOfMonths]=\"props.numberOfMonths || 0\"\n [inline]=\"props.inline\"\n [readonlyInput]=\"props.readonlyInput\"\n [touchUI]=\"props.touchUI\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"(props['placeholder'] ?? '') | translate\"\n [styleClass]=\"'w-full rounded-none block text-base'\"\n appendTo=\"body\"\n (onSelect)=\"onDateSelect($event)\"\n (onBlur)=\"onTouched()\"\n ></p-datepicker>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n TranslateModule,\n ],\n})\nexport class FormlyFieldDatepicker extends FieldType<\n FieldTypeConfig<DatepickerProps>\n> implements OnInit {\n override defaultOptions?: Partial<FieldTypeConfig<DatepickerProps>> = {\n props: {\n numberOfMonths: 1,\n },\n };\n\n ngOnInit(): void {\n const value = this.formControl.value;\n\n // Convert incoming string to Date\n if (typeof value === 'string') {\n const parsed = new Date(value);\n if (!isNaN(parsed.getTime())) {\n this.formControl.setValue(parsed, { emitEvent: false });\n }\n }\n\n // Convert back to string when user selects date (if needed)\n this.formControl.valueChanges.subscribe(val => {\n if (val instanceof Date && this.props?.dataType === 'string') {\n const pad = (n: number) => n.toString().padStart(2, '0');\n\n const year = val.getFullYear();\n const month = pad(val.getMonth() + 1); // months are 0-based\n const day = pad(val.getDate());\n\n let result = `${year}-${month}-${day}`;\n\n if (this.props?.showTime) {\n const hours = pad(val.getHours());\n const minutes = pad(val.getMinutes());\n const seconds = pad(val.getSeconds());\n result += `T${hours}:${minutes}:${seconds}`;\n }\n\n if (this.formControl.value !== result) {\n this.formControl.setValue(result, { emitEvent: false });\n }\n }\n});\n\n }\n\n onDateSelect(date: Date) {\n if (this.props?.dataType === 'string') {\n const formatted =\n this.props.showTime === true\n ? this.toLocalDateTimeString(date)\n : this.toLocalDateOnlyString(date);\n\n this.formControl.setValue(formatted);\n } else {\n this.formControl.setValue(date);\n }\n }\n\n onTouched() {\n this.formControl.markAsTouched();\n }\n\n private toLocalDateOnlyString(date: Date): string {\n const pad = (n: number) => n.toString().padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n return `${year}-${month}-${day}`;\n}\n\n private toLocalDateTimeString(date: Date): string {\n const pad = (n: number) => n.toString().padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;\n}\n}\n","import { FormlyFieldDatepicker } from './datepicker.type';\nimport { ConfigOption } from '@ngx-formly/core';\n\nexport function withFormlyFieldDatepicker(): ConfigOption {\n return {\n types: [\n {\n name: 'datepicker',\n component: FormlyFieldDatepicker,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlyFieldDatepicker } from './datepicker.type';\nimport { withFormlyFieldDatepicker } from './datepicker.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldDatepicker],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldDatepicker()),\n ],\n})\nexport class FormlyDatepickerModule {}\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { FormlyFieldConfig, FieldType, FormlyAttributes, FieldTypeConfig } from '@ngx-formly/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { BaseService } from '../../services/base.service';\r\nimport { forkJoin, Observable, Subscription } from 'rxjs';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AutoCompleteModule, AutoComplete } from 'primeng/autocomplete';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FormlyFieldProps } from '@ngx-formly/primeng/form-field';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\n\r\ninterface GenericSelectorProps extends FormlyFieldProps/* , FormlyFieldSelectProps */ {\r\n // appendTo?: Select['appendTo'];\r\n serviceName: string;\r\n listEndpoint?: string | ((model: any) => string);\r\n labelField?: string;\r\n loadDefaultField?: string;\r\n loadDefaultValue?: string;\r\n\r\n valueField?: string;\r\n multiple?: boolean;\r\n loadDefault?: boolean;\r\n\r\n offline?: boolean;\r\n\r\n /** Static offline items (array of objects) */\r\n offlineItems?: any[];\r\n\r\n /** Async offline items (observable) */\r\n offlineItems$?: Observable<any[]>;\r\n\r\n /** Function-based filter for offline items */\r\n offlineDataFn?: (query?: string) => any[];\r\n fixedFilters?: Record<string, any>;\r\n defaultValue?: any; // id أو array of ids\r\n defaultItem?: any; // الكائن كامل (object) إذا عندك جاهز\r\n}\r\n\r\n@Component({\r\n selector: 'formly-generic-selector',\r\n template: `\r\n <p-autoComplete\r\n #autoComp\r\n(ngModelChange)=\"onSelectionChange($event)\"\r\n[ngModel]=\"selectedItem\"\r\n [formlyAttributes]=\"field\"\r\n [suggestions]=\"options_\"\r\n (completeMethod)=\"search($event)\"\r\n [multiple]=\"to['multiple']\"\r\n [optionLabel]=\"to['labelField'] || 'name'\"\r\n [dropdown]=\"true\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\r\n [disabled]=\"!!props.disabled\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full rounded-none\"\r\n [showEmptyMessage]=\"true\"\r\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\r\n [showTransitionOptions]=\"'0ms'\" >\r\n <!-- <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <p-checkbox\r\n [binary]=\"true\"\r\n [ngModel]=\"isItemSelected(item)\"\r\n (onChange)=\"toggleItemSelection(item)\">\r\n </p-checkbox>\r\n <span>{{ item[to['labelField'] || 'name'] }}</span>\r\n </div>\r\n </ng-template> -->\r\n</p-autoComplete>\r\n `,\r\n providers: [DialogService,BaseService],\r\n imports:[\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AutoCompleteModule,\r\n CommonModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n FormlyAttributes,\r\n TranslateModule,\r\n AutoComplete,\r\n CheckboxModule\r\n]\r\n})\r\nexport class GenericSelectorTypeComponent extends FieldType<FieldTypeConfig<GenericSelectorProps>> implements OnInit,OnDestroy {\r\n @ViewChild('autoComp') autoComp!: AutoComplete;\r\n options_: any[] = [];\r\n selectedItem: any;\r\n\r\n loading = false;\r\n private _offlineList: any[] = [];\r\n\r\n api: BaseService|any;\r\n dialog: DialogService|any;\r\n private valueChangeSubscription!: Subscription; // Add a subscription to manage the observable\r\n constructor(private svc: BaseService,private injector: Injector,private cdr: ChangeDetectorRef) {\r\n super();\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.api = this.svc;\r\n this.dialog = this.injector.get(DialogService);\r\n const to = this.props;\r\n this.api.apiName = to['serviceName'];\r\n\r\n if (to['offline']) {\r\n if (to['offlineDataFn']) {\r\n this._offlineList = to['offlineDataFn']();\r\n this.initOfflineSelection();\r\n } else if (to['offlineItems$']) {\r\n to['offlineItems$'].subscribe((list: any[]) => {\r\n this._offlineList = list;\r\n this.initOfflineSelection();\r\n });\r\n } else {\r\n this._offlineList = to['offlineItems'] || [];\r\n this.initOfflineSelection();\r\n }\r\n } else {\r\n this.initOnlineSelection();\r\n }\r\n\r\n // Subscribe to formControl value changes\r\n this.valueChangeSubscription = this.formControl.valueChanges\r\n .subscribe(() => {\r\n // This tap operator is a good place to run side effects\r\n // like calling your change handler after a value changes.\r\n // this.selectedItem = this.formControl.value;\r\n if (this.props.change) {\r\n if (to['offline']) {\r\n if (to['offlineDataFn']) {\r\n this._offlineList = to['offlineDataFn']();\r\n this.initOfflineSelection(false);\r\n } else if (to['offlineItems$']) {\r\n to['offlineItems$'].subscribe((list: any[]) => {\r\n this._offlineList = list;\r\n this.initOfflineSelection(false);\r\n });\r\n } else {\r\n this._offlineList = to['offlineItems'] || [];\r\n this.initOfflineSelection(false);\r\n }\r\n } else {\r\n this.initOnlineSelection(false);\r\n }\r\n }\r\n })\r\n ;\r\n }\r\n\r\n // Remember to unsubscribe to prevent memory leaks!\r\n ngOnDestroy() {\r\n if (this.valueChangeSubscription) {\r\n this.valueChangeSubscription.unsubscribe();\r\n }\r\n }\r\nprivate loadDefaultValue() {\r\n this.loading = true;\r\n const vf = this.to['valueField'] || 'id';\r\n const fixedFilters = this.getFixedFilters();\r\n const lf = this.to['loadDefaultField'] || 'isDefault';\r\n const lfValue = this.to['loadDefaultValue'] || true;\r\nconst searchParams = {\r\n [lf]: lfValue,\r\n ...fixedFilters,\r\n };\r\n this.api.getList(searchParams)\r\n .subscribe({\r\n next: (res: any) => {\r\n // Assuming the API returns a list and you want to select the first one\r\n if (res && res.items && res.items.length > 0) {\r\n if (this.to['multiple']){\r\n this.formControl.setValue(res.items.map((c: any) => c[vf]));\r\n }\r\n else{\r\n const defaultValue = res.items[0];\r\n this.formControl.setValue(defaultValue?.[vf]);\r\n }\r\n }\r\n this.loading = false;\r\n // this.initOnlineSelection(); // Proceed with online selection after setting the value\r\n },\r\n error: (err: any) => {\r\n console.error(\"Failed to load default value from API:\", err);\r\n this.loading = false;\r\n // this.initOnlineSelection(); // Fallback to local selection if API fails\r\n }\r\n });\r\n}\r\n // New method to handle loading the default value from the API\r\n\r\n onSelectionChange(val: any) {\r\n this.selectedItem = val;\r\n\r\n const vf = this.to['valueField'] || 'id';\r\n\r\n if (this.to['multiple']) {\r\n this.formControl.setValue(\r\n Array.isArray(val) ? val.map((c: any) => c[vf]) : []\r\n );\r\n } else {\r\n this.formControl.setValue(val?.[vf] ?? null);\r\n }\r\n}\r\n private initOfflineSelection(withSetValue:boolean=true) {\r\n const val = this.formControl.value;\r\n const vf = this.to['valueField'] || 'id';\r\n\r\n if (val == null) return;\r\n\r\n if (this.to['multiple'] && Array.isArray(val)) {\r\n this.selectedItem = this._offlineList.filter(item =>\r\n val.includes(item[vf])\r\n );\r\n } else {\r\n this.selectedItem = this._offlineList.find(item => item[vf] === val);\r\n }\r\n\r\n if(withSetValue == true){\r\n\r\n this.formControl.setValue(\r\n this.to['multiple']\r\n ? this.selectedItem.map((c: any) => c[vf])\r\n : this.selectedItem?.[vf]\r\n );\r\n }\r\n else{\r\n if (this.props.change) {\r\n this.props.change(this.field, { item: this.selectedItem });\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n }\r\n\r\n private initOnlineSelection(withSetValue:boolean=true) {\r\n\r\n var d = this.selectedItem;\r\n const fullModel = this.model;\r\n const val = this.formControl.value;\r\n const vf = this.to['valueField'] || 'id';\r\n if (val == null || (Array.isArray(val) && val.length === 0)) {\r\n this.selectedItem = this.to['multiple'] ? [] : null;\r\n\r\n if (this.props['loadDefault'] == true) {\r\n this.loadDefaultValue();\r\n }\r\n else{\r\n\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n if (this.to['multiple'] && Array.isArray(val) && val.length) {\r\n const calls = val.map((id: any) => this.api.get(id));\r\n forkJoin(calls)\r\n .pipe(finalize(() => (this.loading = false)))\r\n .subscribe(items => {\r\n this.selectedItem = items;\r\n if(withSetValue == true){\r\n\r\n this.formControl.setValue(items.map((c: any) => c[vf]));\r\n this.cdr.detectChanges();\r\n }\r\n else{\r\n if (this.props.change) {\r\n this.props.change(this.field, { item: this.selectedItem });\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n });\r\n } else {\r\n this.loading = true;\r\n\r\n this.api.get(val)\r\n .pipe(finalize(() => (this.loading = false)))\r\n .subscribe((item: any) => {\r\n this.selectedItem = item;\r\n // debugger\r\n if(withSetValue == true){\r\n this.formControl.setValue(item?.[vf]);\r\n this.cdr.detectChanges();\r\n }\r\n else{\r\n if (this.props.change) {\r\n this.props.change(this.field, { item: this.selectedItem });\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\ngetFixedFilters(): any {\r\n const fixedFilters = this.to['fixedFilters'];\r\n\r\n if (typeof fixedFilters === 'function') {\r\n // Call with current model (and optionally field)\r\n return fixedFilters(this.model);\r\n }\r\n\r\n return fixedFilters || {};\r\n}\r\n\r\nsearch(event: { query: string }) {\r\n const q = event.query?.toString().toLowerCase() || '';\r\n const lf = this.to['labelField'] || 'name';\r\n const fixedFilters = this.getFixedFilters();\r\n\r\n\r\n if (this.to['offline']) {\r\n this.options_ = this.to['offlineDataFn']\r\n ? this.to['offlineDataFn'](q)\r\n : this._offlineList.filter(item =>\r\n item[lf]?.toString().toLowerCase().includes(q)\r\n );\r\n\r\n setTimeout(() => this.autoComp?.show(), 0);\r\n } else {\r\n this.loading = true;\r\n this.options_ = [];\r\n\r\n const searchParams = {\r\n [lf]: q,\r\n ...fixedFilters,\r\n };\r\n\r\n // ✅ استخدام listEndpoint إذا كان موجودًا، وإلا العودة إلى الافتراضي\r\n let listEndpoint = this.props.listEndpoint;\r\n if (typeof listEndpoint === 'function') {\r\n listEndpoint = listEndpoint(this.model);\r\n }\r\n\r\n this.api.getList(searchParams , listEndpoint)\r\n .pipe(finalize(() => (this.loading = false)))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.options_ = res.items ?? res ?? [];\r\n setTimeout(() => this.autoComp?.show(), 0);\r\n },\r\n error: () => {\r\n this.options_ = [];\r\n\r\n },\r\n });\r\n }\r\n}\r\n\r\n openCrud(mode: 'add' | 'edit' | 'info') {\r\n const payload = mode === 'add' ? null : this.selectedItem;\r\n\r\n // Example integration:\r\n // const ref = this.dialog.open(CrudComponent, {\r\n // data: {\r\n // serviceName: this.to.serviceName,\r\n // mode,\r\n // record: payload\r\n // }\r\n // });\r\n // ref.onClose.subscribe((updated: any) => {\r\n // if (!this.to.multiple && updated?.[this.to.valueField]) {\r\n // this.api.get(updated[this.to.valueField])\r\n // .subscribe(item => {\r\n // this.selectedItem = item;\r\n // this.formControl.setValue(item?.[this.to.valueField]);\r\n // });\r\n // }\r\n // });\r\n\r\n }\r\n\r\n getEmptyMessage(): string {\r\n if (this.loading) {\r\n return 'LOADING_DATA_MESSAGE'; // مفتاح ترجمة لـ \"جاري تحميل البيانات...\"\r\n } else if (this.options_.length === 0) {\r\n return 'NO_RESULTS_FOUND'; // مفتاح ترجمة لـ \"لا توجد نتائج مطابقة.\"\r\n }\r\n return ''; // لا تُعرض رسالة إذا كانت هناك نتائج\r\n }\r\n\r\nisItemSelected(item: any): boolean {\r\n const vf = this.to['valueField'] || 'id';\r\n return Array.isArray(this.selectedItem) &&\r\n this.selectedItem.some((sel: any) => sel[vf] === item[vf]);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\n\n@Component({\n selector: 'formly-field-icon-picker',\n imports:[FormsModule,CommonModule,DialogModule,ReactiveFormsModule,ButtonModule],\n template: `\n <div class=\"relative inline-block\">\n <!-- Toggle Button -->\n <button type=\"button\" class=\"px-2 py-1 border rounded shadow-sm bg-white dark:bg-gray-800 dark:border-gray-600\"\n (click)=\"dropdownOpen = !dropdownOpen\">\n <i [class]=\"formControl.value || 'fa-solid fa-circle-half-stroke'\" class=\"text-lg\"></i>\n <i class=\"fas fa-caret-down ml-1 text-xs\"></i>\n </button>\n\n <!-- Dropdown -->\n <div *ngIf=\"dropdownOpen\"\n class=\"absolute z-50 mt-2 w-72 rounded-md border border-gray-300 shadow-lg bg-white dark:bg-gray-800 dark:border-gray-600\">\n\n <!-- Header -->\n <div class=\"flex items-center justify-between px-2 py-1 border-b dark:border-gray-600\">\n <button (click)=\"prevPage()\" class=\"p-1 hover:text-blue-600\" [disabled]=\"page === 1\">\n <i class=\"fas fa-arrow-left\"></i>\n </button>\n <span class=\"text-xs text-gray-600 dark:text-gray-300\">Page {{ page }} / {{ totalPages }}</span>\n <button (click)=\"nextPage()\" class=\"p-1 hover:text-blue-600\" [disabled]=\"page === totalPages\">\n <i class=\"fas fa-arrow-right\"></i>\n </button>\n </div>\n\n <!-- Search -->\n <div class=\"p-2\">\n <input\n type=\"text\"\n placeholder=\"Search icon\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearch()\"\n class=\"w-full px-2 py-1 text-sm border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white\"\n />\n </div>\n\n <!-- Icon Grid -->\n <div class=\"grid grid-cols-4 gap-2 p-2 max-h-56 overflow-y-auto\">\n <button\n *ngFor=\"let icon of pagedIcons\"\n (click)=\"selectIcon(icon)\"\n class=\"flex items-center justify-center h-10 w-10 border rounded hover:bg-gray-100 dark:hover:bg-gray-700\"\n [ngClass]=\"{ 'ring-2 ring-blue-500': formControl.value === icon }\"\n >\n <i [class]=\"icon\" class=\"text-lg\"></i>\n </button>\n </div>\n\n <!-- Footer -->\n <div class=\"px-2 py-1 text-xs text-gray-500 dark:text-gray-400 border-t dark:border-gray-600\">\n {{ start + 1 }} - {{ end }} of {{ filteredIcons.length }}\n </div>\n </div>\n </div>\n\n `\n})\n\nexport class IconPickerComponent extends FieldType{\n dropdownOpen = false;\n searchQuery = '';\n page = 1;\n pageSize = 16;\n\n icons: string[] = [\n 'fa-solid fa-box',\n 'fa-solid fa-layer-group',\n 'fa-solid fa-table-columns',\n 'fa-solid fa-database',\n 'fa-solid fa-arrow-left',\n 'fa-solid fa-arrow-right',\n 'fa-solid fa-arrow-down',\n 'fa-solid fa-arrow-up',\n 'fa-solid fa-trash',\n 'fa-solid fa-gear',\n 'fa-solid fa-circle-check',\n 'fa-solid fa-circle-xmark',\n 'fa-solid fa-pen',\n 'fa-solid fa-copy',\n 'fa-solid fa-share',\n 'fa-solid fa-upload',\n 'fa-solid fa-download',\n 'fa-solid fa-image',\n 'fa-solid fa-chart-pie',\n // Add more FontAwesome Pro icons\n ];\n\n get filteredIcons() {\n if (!this.searchQuery) return this.icons;\n return this.icons.filter(icon =>\n icon.toLowerCase().includes(this.searchQuery.toLowerCase())\n );\n }\n\n get totalPages() {\n return Math.ceil(this.filteredIcons.length / this.pageSize);\n }\n\n get start() {\n return (this.page - 1) * this.pageSize;\n }\n\n get end() {\n return Math.min(this.start + this.pageSize, this.filteredIcons.length);\n }\n\n get pagedIcons() {\n return this.filteredIcons.slice(this.start, this.end);\n }\n\n onSearch() {\n this.page = 1;\n }\n\n selectIcon(icon: string) {\n this.formControl.setValue(icon);\n this.dropdownOpen = false;\n }\n\n nextPage() {\n if (this.page < this.totalPages) this.page++;\n }\n\n prevPage() {\n if (this.page > 1) this.page--;\n }\n}\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FieldType, FieldTypeConfig, FormlyAttributes } from '@ngx-formly/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToggleSwitch } from 'primeng/toggleswitch';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'formly-field-primeng-input-switch',\r\n standalone: true,\r\n imports: [CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ToggleSwitch,\r\n FormlyAttributes,\r\n TranslateModule,\r\n TooltipModule],\r\n template: `\r\n <!-- border border-gray-300 -->\r\n <div class=\"flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1\"\r\n style=\" border-radius: var(--p-inputtext-border-radius);\">\r\n\r\n <label [for]=\"id\" class=\"font-bold text-lg text-gray-800\">\r\n {{ (to.label ?? '') | translate }}\r\n\r\n <span *ngIf=\"to.required\" class=\"text-red-500\">*</span>\r\n </label>\r\n\r\n <p-toggleSwitch\r\n [formControl]=\"formControl\"\r\n [formlyAttributes]=\"field\"\r\n [pTooltip]=\"field.props['tooltip']\"\r\n [styleClass]=\"''\"\r\n [inputId]=\"id\"\r\n\r\n ></p-toggleSwitch>\r\n\r\n\r\n <!-- <label [for]=\"id\" class=\"font-bold text-lg text-gray-800 mr-2 whitespace-nowrap\">\r\n {{ (to.label ?? '') | translate}}\r\n </label> -->\r\n</div>\r\n <!-- [style]=\"to.['style']\" -->\r\n <!-- [disabled]=\"to.disabled ?? false\" -->\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class InputSwitchTypeComponent extends FieldType<FieldTypeConfig> {}\r\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-field-input-with-icon',\n imports:[FormlyModule,ReactiveFormsModule,CommonModule,FormsModule],\n template: `\n <div class=\"relative\">\n <!-- [formControl]=\"formControl\" -->\n <input\n [type]=\"type\"\n\n [formlyAttributes]=\"field\"\n class=\"w-full rounded-xl border border-gray-200 bg-gray-50 pl-12 pr-4 py-3 text-sm focus:border-primary focus:ring-2 focus:ring-blue-100 transition-all\"\n [placeholder]=\"to.placeholder\"\n [disabled]=\"to.disabled ? true : false\"\n />\n <i class=\"{{ to['icon'] }} absolute left-4 top-1/2 -translate-y-1/2 text-gray-400 text-base\"></i>\n </div>\n `,\n})\nexport class InputWithIconType extends FieldType {\n get type() {\n return this.to.type || 'text';\n }\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-label-type',\n standalone: true,\n template: `\n <div [class]=\"to['className'] || 'text-gray-700 font-bold'\">\n <span [innerHTML]=\"displayValue\" ></span>\n <!-- <span {}></span> -->\n </div>\n `,\n})\nexport class LabelTypeComponent extends FieldType {\nget displayValue(): any {\n const key = this.key as string;\n const val = this.model?.[key] ;\n const row = this.model ?? {};\n\n // تحقق من أن formatter دالة قبل الاستدعاء\n const formatter = this.props['formatter'];\n if (formatter && typeof formatter === 'function') {\n\n try {\n return formatter(row, val);\n } catch (e) {\n console.warn('Formatter error:', e);\n return val ?? '--';\n }\n }\n\n\n\n return val ?? '--';\n}\n\n\n\n}\n","import { TranslateModule } from '@ngx-translate/core';\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FieldArrayType, FormlyField } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { FormArray } from '@angular/forms';\n\n@Component({\n selector: 'formly-repeat-section',\n standalone: true,\n imports: [CommonModule, FormlyField, TranslateModule],\n template: `\n <div class=\"overflow-auto bg-gray-100 border border-gray-300\">\n <table *ngIf=\"(field.fieldGroup ?? []).length > 0\" class=\"table-auto w-full border border-gray-300\">\n <thead>\n <tr class=\"bg-gray-100 text-gray-700 text-sm\">\n <th class=\"w-8\"></th>\n <ng-container *ngFor=\"let col of getFirstRowColumns()\">\n <th class=\"text-center border\">{{ (col.props?.label ?? '') | translate }}</th>\n </ng-container>\n <th class=\"w-10\"></th>\n </tr>\n </thead>\n\n <tbody>\n <tr *ngFor=\"let row of field.fieldGroup; let rowIndex = index\" class=\"border-t\">\n <td class=\"bg-[#fffbea] text-center text-gray-400 px-2\"><i class=\"pi pi-bars\"></i></td>\n\n <ng-container *ngFor=\"let col of row.fieldGroup\">\n <td class=\"bg-[#fffbea]\">\n <formly-field [field]=\"col\"></formly-field>\n </td>\n </ng-container>\n\n <td class=\"text-center px-2 bg-[#fffbea]\">\n <ng-container *ngIf=\"rowIndex !== 0 || field.props?.['canDeleteFirstRow']\">\n <button type=\"button\" (click)=\"remove(rowIndex)\" class=\"text-red-600 hover:text-red-800\">\n <i class=\"pi pi-trash\"></i>\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div class=\"flex justify-end\">\n <button\n type=\"button\"\n class=\"inline-flex items-center gap-1 px-4 py-2 bg-primary-600 text-white text-sm font-medium hover:bg-primary-500 transition-colors duration-200 shadow-sm\"\n (click)=\"add()\"\n >\n <span class=\"text-lg\">+</span>\n </button>\n </div>\n </div>\n `,\n})\nexport class RepeatTypeComponent extends FieldArrayType implements OnInit {\n // Return columns of the first row (for table headers)\n getFirstRowColumns() {\n return this.field.fieldGroup?.[0]?.fieldGroup ?? [];\n }\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n ngOnInit() {\n\n // Subscribe to each FormArray changes\n // if (this.formControl instanceof FormArray) {\n this.formControl.valueChanges.subscribe(() => {\n // Force Angular to detect changes\n\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n });\n // }\n }\n}\n","\nimport { NgFor } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FieldType, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\nimport { TabsModule } from 'primeng/tabs';\n\n@Component({\n selector: 'formly-tabs-type',\n imports: [NgFor, FormlyForm,TabsModule],\n template: `\n <!-- <p-tabView>\n <p-tabPanel *ngFor=\"let tabField of field.fieldGroup; let i = index\" [disabled]=\"i !== 0 &&\n !isValid(field.fieldGroup![i - 1])\" [header]=\"tabField.props?.label || 'Tab '+(i+1)\">\n <formly-form [fields]=\"tabField.fieldGroup!\" [form]=\"form\" [options]=\"options\" [model]=\"model\"></formly-form>\n </p-tabPanel>\n </p-tabView> -->\n `\n})\nexport class TabsTypeComponent extends FieldType {\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field.formControl?.valid ?? true;\n }\n\n return field.fieldGroup ? field.fieldGroup.every((f) => this.isValid(f)) : true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'formly-color-tag-type',\n standalone: true,\n imports: [\n FormlyAttributes,\n TranslateModule,\n TooltipModule,\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n ],\n template: `\n <div\n class=\"inline-block px-3 py-1 rounded-full border text-sm\"\n [ngStyle]=\"{\n direction:'ltr',\n backgroundColor: colorValue,\n color: textColor,\n borderColor: colorValue\n }\"\n [pTooltip]=\"colorValue\"\n >\n {{ colorValue }}\n </div>\n `,\n})\nexport class ColorTagTypeComponent extends FieldType {\n get colorValue(): string {\n const val = this.formControl.value;\n return val && typeof val === 'string' && val.startsWith('#') ? val : '#cccccc';\n }\n\n get textColor(): string {\n // Simple check for light/dark background for contrast\n const hex = this.colorValue.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16) || 0;\n const g = parseInt(hex.substring(2, 4), 16) || 0;\n const b = parseInt(hex.substring(4, 6), 16) || 0;\n const brightness = (r * 299 + g * 587 + b * 114) / 1000;\n return brightness > 150 ? '#000' : '#fff';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'formly-option-tag-type',\n standalone: true,\n imports: [FormlyAttributes, TranslateModule, TooltipModule, CommonModule, ReactiveFormsModule, FormsModule],\n template: `\n <ng-container *ngIf=\"selectedOption\">\n <div\n class=\"inline-block px-3 py-1 rounded-full border text-sm\"\n [ngStyle]=\"{\n backgroundColor: selectedOption.color,\n color: textColor,\n borderColor: selectedOption.color\n }\"\n [pTooltip]=\"selectedOption.label | translate\"\n >\n {{ selectedOption.label | translate}}\n </div>\n </ng-container>\n `,\n})\nexport class OptionTagTypeComponent extends FieldType {\n get selectedOption() {\n return (this.props?.options ?? [] as any)?.find((opt: any) => opt.value === this.formControl.value);\n }\n get textColor(): string {\n // Simple check for light/dark background for contrast\n const hex = this.selectedOption.color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16) || 0;\n const g = parseInt(hex.substring(2, 4), 16) || 0;\n const b = parseInt(hex.substring(4, 6), 16) || 0;\n const brightness = (r * 299 + g * 587 + b * 114) / 1000;\n return brightness > 150 ? '#000' : '#fff';\n }\n}\n\n\n// {\n// key: 'tagColor',\n// type: 'color-tag',\n// templateOptions: {\n// options: [\n// { label: 'Red', value: 'red', color: '#ef4444' },\n// { label: 'Blue', value: 'blue', color: '#3b82f6' },\n// { label: 'Green', value: 'green', color: '#10b981' },\n// ],\n// },\n// hideLabel: true,\n// hooks: {\n// onInit: (field) => {\n// field.templateOptions.readonly = true;\n// }\n// }\n// }\n","import { Tag } from 'primeng/tag';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes } from '@ngx-formly/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'formly-tag-type',\n standalone: true,\n imports: [Tag,FormlyAttributes,TranslateModule,TooltipModule,CommonModule, ReactiveFormsModule],\n template: `\n <!--\n [formControl]=\"formControl\" -->\n <p-tag\n [formlyAttributes]=\"field\"\n [pTooltip]=\"getTooltip()\"\n [severity]=\"to['severity'] || getSeverity()\"\n [value]=\"getDisplayValue()\"\n [class]=\"to['styleClass'] || 'font-medium'\">\n </p-tag>\n `,\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagTypeComponent extends FieldType<FieldTypeConfig> {\n\n getTooltip(): string {\n const tooltipFrom = this.props['table']['props']['tooltipFrom'];\n return this.model?.[tooltipFrom]\n}\n getValue(): any {\n var key = this.key as string;\n const val = this.model?.[key];\n return val;\n }\n\n getSeverity(): string {\n const value = this.getValue();\n\n if (value === true) return 'success';\n if (value === false) return 'danger';\n return 'info';\n }\n\n getDisplayValue(): string {\n const value = this.getValue();\n\n if (value === true) return 'مفعل';\n if (value === false) return 'معطل';\n return String(value ?? '-');\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\n@Directive({\n selector: '[appAutofocus]',\n standalone:true\n})\nexport class AutofocusDirective implements OnChanges {\n @Input('appAutofocus') autoFocus: boolean | string = true;\n\n constructor(private el: ElementRef) {}\n\n ngOnChanges() {\n if (this.autoFocus === '' || this.autoFocus === true) {\n this.el.nativeElement.focus();\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { EditorModule } from 'primeng/editor';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { AutofocusDirective } from '../../directives/appAutofocus';\n\n@Component({\n selector: 'formly-rich-text-editor-type',\n standalone: true,\n imports: [CommonModule, FormsModule, EditorModule,AutofocusDirective],\n template: `\n <p-editor\n [(ngModel)]=\"formControl.value\"\n [appAutofocus]=\"to['autofocus'] || false\"\n [style]=\"{height: to['height'] || '200px'}\"\n [placeholder]=\"to.placeholder\"\n ></p-editor>\n `,\n})\nexport class RichTextEditorTypeComponent extends FieldType {}\n","// label.wrapper.ts – LabelWrapperComponent\nimport { NgIf } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'formly-label-wrapper',\n imports: [NgIf,TranslateModule],\n template: `\n <!-- font-semibold -->\n <label *ngIf=\"to.label\" [for]=\"id\" class=\"block mb-1 font-bold text-lg\">{{ to.label | translate }} <span *ngIf=\"to.required\" class=\"text-red-600\">*</span></label>\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to.description\" class=\"text-gray-500\">{{ to.description | translate}}</small>\n `\n})\nexport class LabelWrapperComponent extends FieldWrapper {}\n","// td-wrapper.component.ts\nimport { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\n\n@Component({\n imports:[],\n selector: 'formly-wrapper-td',\n template: `\n <ng-container #fieldComponent></ng-container>\n `,\n standalone: true,\n})\nexport class TdWrapperComponent extends FieldWrapper {}\n","import { Component, ChangeDetectionStrategy, Type, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlyFieldProps } from '../../form-field';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputNumber } from 'primeng/inputnumber';\n\ninterface InputProps extends FormlyFieldProps {\n showButtons?: boolean;\n autofocus?: boolean;\n useGrouping?: boolean;\n}\n\nexport interface FormlyInputFieldConfig extends FormlyFieldConfig<InputProps> {\n type: 'input' | Type<FormlyFieldInput>;\n}\n\n@Component({\n selector: 'formly-field-primeng-input',\n template: `\n <input\n *ngIf=\"props.type !== 'number'; else numberTmp\"\n pInputText\n [type]=\"props['type'] || 'text'\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n class=\"w-full rounded-none block\"\n #inputElement\n />\n <ng-template #numberTmp>\n <p-inputNumber\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"w-full rounded-none block\"\n [min]=\"props['min'] || 0\"\n [showButtons]=\"props['showButtons'] ?? false\"\n buttonLayout=\"horizontal\"\n spinnerMode=\"horizontal\"\n [useGrouping]=\"props['useGrouping']\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n #inputNumberElement>\n <ng-template #incrementbuttonicon>\n <span class=\"pi pi-plus\"></span>\n </ng-template>\n <ng-template #decrementbuttonicon>\n <span class=\"pi pi-minus\"></span>\n </ng-template>\n </p-inputNumber>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n InputTextModule,\n TranslateModule,\n InputNumber\n ]\n})\nexport class FormlyFieldInput extends FieldType<FieldTypeConfig<InputProps>> implements AfterViewInit {\n @ViewChild('inputElement') inputElement?: ElementRef<HTMLInputElement>;\n @ViewChild('inputNumberElement') inputNumberElement?: any; // p-inputNumber component reference\n\n ngAfterViewInit() {\n if (this.props.autofocus) {\n setTimeout(() => {\n if (this.props.type === 'number' && this.inputNumberElement?.el?.nativeElement) {\n // Focus for p-inputNumber\n this.inputNumberElement.el.nativeElement.querySelector('input')?.focus();\n } else if (this.inputElement?.nativeElement) {\n // Focus for regular input\n this.inputElement.nativeElement.focus();\n }\n });\n }\n }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldInput } from './input.type';\n\nexport function withFormlyFieldInput(): ConfigOption {\n return {\n types: [\n {\n name: 'input',\n component: FormlyFieldInput,\n wrappers: ['form-field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { FormlyFieldInput } from './input.type';\nimport { withFormlyFieldInput } from './input.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n// import { FormlyFormFieldModule } from '../../components/form-field';\n\n@NgModule({\n // declarations: [FormlyFieldInput],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldInput()),\n ],\n})\nexport class FormlyInputModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldSelectProps } from '@ngx-formly/core/select';\nimport { Select, SelectModule } from 'primeng/select';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\ninterface SelectProps extends FormlyFieldProps, FormlyFieldSelectProps {\n appendTo?: Select['appendTo'];\n filter?: boolean;\n filterBy?: string;\n}\n\nexport interface FormlySelectFieldConfig extends FormlyFieldConfig<SelectProps> {\n type: 'select' | Type<FormlyFieldSelect>;\n}\n\n@Component({\n selector: 'formly-field-primeng-select',\n template: `\n <p-select\n [options]=\"(props.options | formlySelectOptions: field | async) ?? []\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [showClear]=\"!props.required\"\n [appendTo]=\"props.appendTo\"\n [filter]=\"props.filter\"\n [filterBy]=\"props.filterBy ?? 'label'\"\n [optionLabel]=\"'label'\"\n [optionValue]=\"'value'\"\n (onChange)=\"props.change && props.change(field, $event)\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n [styleClass]=\"'w-full rounded-none block'\"\n >\n <!-- Template for each option in the dropdown -->\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex items-center gap-2\">\n <!-- Example: add an icon if option has one -->\n @if (option.icon) {\n\n <i [class]=\"option.icon\"></i>\n }\n <span>{{ option.label | translate }}</span>\n <!-- Example: show description -->\n @if (option.description) {\n\n <small class=\"text-gray-500\"> - {{ option.description | translate}}</small>\n }\n </div>\n </ng-template>\n\n <!-- Template for selected value -->\n <ng-template let-selected pTemplate=\"selectedItem\">\n <div class=\"flex items-center gap-2\">\n @if (selected?.icon) {\n <i [class]=\"selected.icon\"></i>\n }\n <span>{{ selected?.label | translate}}</span>\n </div>\n </ng-template>\n </p-select>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,FormlyAttributes,SelectModule,FormlyCoreSelectModule,TranslateModule]\n\n})\nexport class FormlyFieldSelect extends FieldType<FieldTypeConfig<SelectProps>> {}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldSelect } from './select.type';\n\nexport function withFormlyFieldSelect(): ConfigOption {\n return {\n types: [\n {\n name: 'select',\n component: FormlyFieldSelect,\n wrappers: ['form-field'],\n },\n { name: 'enum', extends: 'select' },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { SelectModule } from 'primeng/select';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\n\nimport { FormlyFieldSelect } from './select.type';\nimport { withFormlyFieldSelect } from './select.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldSelect],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SelectModule,\n FormlyFormFieldModule,\n FormlyCoreSelectModule,\n FormlyModule.forChild(withFormlyFieldSelect()),\n ],\n})\nexport class FormlySelectModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { SelectModule } from 'primeng/select';\nimport { TextareaModule } from 'primeng/textarea';\n\ninterface TextAreaProps extends FormlyFieldProps {}\n\nexport interface FormlyTextAreaFieldConfig extends FormlyFieldConfig<TextAreaProps> {\n type: 'textarea' | Type<FormlyFieldTextArea>;\n}\n\n@Component({\n selector: 'formly-field-primeng-textarea',\n template: ` <textarea [formControl]=\"formControl\" [formlyAttributes]=\"field\" class=\"w-full rounded-none block\" [placeholder]=\"(props['placeholder'] ?? '')| translate\" pInputTextarea></textarea> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n SelectModule,\n TextareaModule,\n TranslateModule\n ]\n})\nexport class FormlyFieldTextArea extends FieldType<FieldTypeConfig<TextAreaProps>> {}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldTextArea } from './textarea.type';\n\nexport function withFormlyFieldTextArea(): ConfigOption {\n return {\n types: [\n {\n name: 'textarea',\n component: FormlyFieldTextArea,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TextareaModule } from 'primeng/textarea';\nimport { FormlyFieldTextArea } from './textarea.type';\nimport { withFormlyFieldTextArea } from './textarea.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldTextArea],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TextareaModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldTextArea()),\n ],\n})\nexport class FormlyTextAreaModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldProps as CheckboxProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { CheckboxModule } from 'primeng/checkbox';\n\nexport interface FormlyCheckboxFieldConfig extends FormlyFieldConfig<CheckboxProps> {\n type: 'checkbox' | Type<FormlyFieldCheckbox>;\n}\n\n@Component({\n selector: 'formly-field-primeng-checkbox',\n template: `\n <!-- <div class=\"p-field-checkbox flex items-center gap-1\">\n\n <p-checkbox\n [binary]=\"true\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [inputId]=\"id\"\n\n />\n <label [for]=\"id\" class=\"ml-2\">{{ (props['label'] ?? '') | translate}}</label>\n </div> -->\n\n <div class=\"flex items-center justify-end rtl:flex-row-reverse w-full px-2 py-1\" style=\" border-radius: var(--p-inputtext-border-radius);\">\n<!-- text-lg -->\n <label [for]=\"id\" class=\"font-bold text-gray-800 mr-2 whitespace-nowrap\">\n {{ (to.label ?? '') | translate }}\n </label>\n <p-checkbox\n [binary]=\"true\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [inputId]=\"id\"\n\n />\n</div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[ CommonModule,ReactiveFormsModule,DatePickerModule,FormlyFormFieldModule,FormlyAttributes,TranslateModule,CheckboxModule]\n})\nexport class FormlyFieldCheckbox extends FieldType<FieldTypeConfig<CheckboxProps>> {\n override defaultOptions = { props: { hideLabel: true } };\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldCheckbox } from './checkbox.type';\n\nexport function withFormlyFieldCheckbox(): ConfigOption {\n return {\n types: [\n {\n name: 'checkbox',\n component: FormlyFieldCheckbox,\n wrappers: ['form-field'],\n },\n {\n name: 'boolean',\n extends: 'checkbox',\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxModule } from 'primeng/checkbox';\n\nimport { FormlyFieldCheckbox } from './checkbox.type';\nimport { withFormlyFieldCheckbox } from './checkbox.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldCheckbox],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CheckboxModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldCheckbox()),\n ],\n})\nexport class FormlyCheckboxModule {}\n","import { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'formly-panel-wrapper',\n standalone: true,\n imports: [TranslateModule],\n template: `\n @if (to.hidden == false || !to.hidden) {\n <div style=\"border-radius: var(--content-border-radius);\"\n class=\"border border-surface rounded-2xl bg-white p-3 mb-2\">\n\n @if (to.label) {\n <div class=\"font-bold mb-2 flex items-center gap-2\">\n @if (to['icon']) {\n <i class=\"{{ to['icon'] }}\"></i>\n }\n {{ to.label | translate }}\n </div>\n }\n\n <ng-container #fieldComponent></ng-container>\n </div>\n }\n `,\n})\nexport class PanelWrapperComponent extends FieldWrapper {}\n","\r\nimport { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-clickable-label-type',\r\n standalone: true,\r\n template: `\r\n\r\n<a class=\"cursor-pointer hover:underline hover:text-blue-600 font-bold\"\r\n (click)=\"handleCellClick(props,model, $event)\"\r\n (mouseenter)=\"props['hoverable'] && onCellHover(props, model, $event)\"\r\n (mouseleave)=\"props['hoverable'] && onCellLeave(props, model, $event)\"\r\n >\r\n @if(props['formatter']){\r\n <span [innerHTML]=\"props['formatter'](model)\"></span>\r\n }\r\n @else{\r\n {{ getCellValue(props, model) }}\r\n }\r\n\r\n\r\n </a>\r\n `,\r\n})\r\nexport class ClickableLabelTypeComponent extends FieldType {\r\n onCellLeave(col: any, row: any, event: MouseEvent) { // <--- تعديل هنا\r\n event.stopPropagation(); // يمنع اختيار الصف\r\n col.onCellMouseLeave?.(row, event); // <--- استدعاء الدالة المخصصة للمغادرة\r\n }\r\n onCellHover(col: any, row: any, event: MouseEvent) { // <--- تعديل هنا\r\n event.stopPropagation(); // يمنع اختيار الصف\r\n col.onCellMouseEnter?.(row, event); // <--- استدعاء الدالة المخصصة للتحويم\r\n }\r\n\r\n handleCellClick(col: any, model: any, event: MouseEvent) {\r\n event.stopPropagation();\r\n col?.clickAction?.(model, event);\r\n }\r\n\r\ngetCellValue(col: any, model: any) {\r\n const field = this.key as string;\r\n const pipeFn = this.props['pipe'] as ((v: any) => any) | undefined;\r\n return pipeFn ? pipeFn(model[col.key as string]) : model[field];\r\n}\r\n}\r\n","import { provideFormlyCore } from '@ngx-formly/core';\r\nimport { withFormlyPrimeNG } from '@ngx-formly/primeng';\r\nimport { AttachmentTypeComponent } from '../components/attachments/attachment-type';\r\nimport { ColorPickerComponent } from '../components/color-picker/color-picker.type';\r\nimport { withFormlyFieldDatepicker } from '../components/datepicker';\r\nimport { GenericSelectorTypeComponent } from '../components/generic-selector/generic-selector.component';\r\nimport { IconPickerComponent } from '../components/icon-picker/icon-picker.type';\r\nimport { InputSwitchTypeComponent } from '../components/input-switch/input-switch.type';\r\nimport { InputWithIconType } from '../components/input-with-icon/input-with-icon.type';\r\nimport { LabelTypeComponent } from '../components/label-type/label-type';\r\nimport { RepeatTypeComponent } from '../components/repeat/repeat-section.type';\r\nimport { TabsTypeComponent } from '../components/tabs/tabs.type';\r\nimport { ColorTagTypeComponent } from '../components/tag-type/formly-color-tag-type';\r\nimport { OptionTagTypeComponent } from '../components/tag-type/formly-option-tag-type';\r\nimport { TagTypeComponent } from '../components/tag-type/formly-tag-type';\r\nimport { RichTextEditorTypeComponent } from '../components/text-editor/formly-rich-text-editor-type';\r\nimport { LabelWrapperComponent } from '../components/wrappers/label.wrapper';\r\nimport { TdWrapperComponent } from '../components/wrappers/td-wrapper.type';\r\nimport { withFormlyFormField } from '../components/form-field';\r\nimport { FormlyFieldInput, withFormlyFieldInput } from '../components/input';\r\nimport { withFormlyFieldSelect } from '../components/select';\r\nimport { withFormlyFieldTextArea } from '../components/textarea';\r\nimport { withFormlyFieldCheckbox } from '../components/checkbox';\r\nimport { PanelWrapperComponent } from '../components/wrappers/panel.wrapper';\r\nimport { CustomSwitchFieldComponent } from '../components/custom-switch/custom-switch';\r\nimport { FormlyAvatarLabelComponent } from '../components/formly-avatar-label/formly-avatar-label';\r\nimport { FormlySelectionButtonComponent } from '../components/formly-button-selector/formly-button-selector';\r\nimport { FormlyButtonComponent } from '../components/formly-button/formly-button';\r\nimport { FormlySplitButtonComponent } from '../components/formly-split-button/formly-split-button';\r\nimport { UsernameWithDomainComponent } from '../components/formly-username-with-domain/formly-username-with-domain';\r\nimport { ClickableLabelTypeComponent } from '../components/label-type/clickable-label-type';\r\nimport { FormlyFieldButton } from '../components/form-button/form-button.type';\r\nimport { FormlyTemplateType } from '../components/form-template/template.type';\r\nimport { ConditionExpressionBuilderType } from '../components/condition-editor/condition-editor-type';\r\nimport { FormlyAvatarImageComponent } from '../components/formly-avatar-image/formly-avatar-image';\r\n\r\nexport const provideFormly = provideFormlyCore([\r\n ...withFormlyPrimeNG(),\r\n\r\n withFormlyFormField(),\r\n withFormlyFieldInput(),\r\n withFormlyFieldSelect(),\r\n withFormlyFieldDatepicker(),\r\n withFormlyFieldTextArea(),\r\n\r\n // withFormlyFieldRadio(),\r\n withFormlyFieldCheckbox(),\r\n\r\n {\r\n types: [\r\n { name: 'advanced-input', component: FormlyFieldInput, wrappers: ['form-field'], },\r\n { name: 'string', extends: 'input' },\r\n { name: 'number', extends: 'input', defaultOptions: { props: { type: 'number', }, }, },\r\n { name: 'integer', extends: 'input', defaultOptions: { props: { type: 'number', }, }, },\r\n { name: 'inputWithIcon', component: InputWithIconType, wrappers: ['form-field'] },\r\n { name: 'attachment-type', component: AttachmentTypeComponent, wrappers: ['form-field'] },\r\n { name: 'rich-text-editor', component: RichTextEditorTypeComponent, wrappers: ['form-field'] },\r\n { name: 'generic-selector', component: GenericSelectorTypeComponent, wrappers: ['form-field'] },\r\n { name: 'switch', component: InputSwitchTypeComponent, wrappers: ['form-field-no'] },\r\n { name: 'username-with-domain', component: UsernameWithDomainComponent, wrappers: ['form-field'] },\r\n { name: 'custom-switch', component: CustomSwitchFieldComponent, wrappers: ['form-field-no'] },\r\n { name: 'Formly-Split', component: FormlySplitButtonComponent, wrappers: ['form-field'] },\r\n { name: 'Button-Selection', component: FormlySelectionButtonComponent, wrappers: ['form-field'] },\r\n {name: 'avatar-label-button',component: FormlyAvatarLabelComponent,},\r\n {name: 'formly-button',component: FormlyButtonComponent,},\r\n {name: 'label-type',component: LabelTypeComponent},\r\n {name: 'clickable-label-type',component: ClickableLabelTypeComponent},\r\n {name: 'option-tag',component: OptionTagTypeComponent},\r\n { name: 'repeat', component: RepeatTypeComponent },\r\n { name: 'tabs', component: TabsTypeComponent },\r\n {name: 'tag',component: TagTypeComponent},\r\n {name: 'color-tag',component: ColorTagTypeComponent},\r\n {name: 'condition-builder',component: ConditionExpressionBuilderType ,wrappers: ['form-field'],},\r\n {name: 'icon-picker',component: IconPickerComponent ,wrappers: ['form-field-no'],},\r\n {name: 'color-picker',component: ColorPickerComponent ,wrappers: ['form-field-no'],},\r\n {name: 'template',component: FormlyTemplateType,},\r\n {\r\n name: 'button',\r\n component: FormlyFieldButton,\r\n wrappers: ['form-field'],\r\n defaultOptions: {\r\n props: {\r\n btnType: 'default',\r\n type: 'button',\r\n },\r\n },\r\n },\r\n {name: 'avatar-image',component: FormlyAvatarImageComponent},\r\n ],\r\n wrappers: [\r\n // { name: 'tooltip', component: TooltipWrapperComponent },\r\n { name: 'panel', component: PanelWrapperComponent },\r\n { name: 'label', component: LabelWrapperComponent },\r\n { name: 'td', component: TdWrapperComponent },\r\n ],\r\n validationMessages: [\r\n { name: 'required', message: 'هذا الحقل مطلوب' },\r\n ],\r\n }\r\n]);\r\n","import { Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyForm, FormlyFormOptions, } from '@ngx-formly/core';\nimport { MessageService } from 'primeng/api';\nimport { DrawerModule, Drawer } from 'primeng/drawer';\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\nimport { NgClass } from '@angular/common';\nimport { provideFormly } from '../../providers/formly.config';\n\n\n@Component({\n standalone:true,\n selector: 'app-generic-drawer',\n imports: [\n CommonModule,\n ButtonModule,\n FormlyForm,\n FormsModule,\n ReactiveFormsModule,\n DrawerModule,\n TranslateModule,\n NgClass,\n Drawer\n ],\n providers: [MessageService,provideFormly],\n templateUrl: './generic-drawer.html',\n styleUrls: ['./generic-drawer.css'],\n\n})\n\nexport class GenericDrawerComponent implements OnInit, OnChanges {\n @Input() visible = false; // للتحكم في ظهور الدرج\n @Input() initialModel: any = {}; // النموذج الأولي للبيانات (فارغ للإضافة، أو بيانات الكائن للتعديل)\n @Input() fields: FormlyFieldConfig[] = []; // حقول Formly لتشكيل النموذج\n fields_: FormlyFieldConfig[] = []; // حقول Formly لتشكيل النموذج\n @Input() options: FormlyFormOptions = {}; // خيارات Formly\n @Input() drawerTitle: string = ''; // عنوان الدرج (مثلاً: \"إضافة منتج\", \"تعديل مستخدم\")\n @Input() isSaving = false; // للتحكم في حالة التحميل/الحفظ من المكون الأب\n @Input() drawerWidth: string = '400px'; // عرض الدرج الافتراضي\n @Input() showSaveButton: boolean = true; // لإظهار أو إخفاء زر الحفظ\n @Input() showCancelButton: boolean = true; // لإظهار أو إخفاء زر الإلغاء\n\n\n @Output() visibleChange = new EventEmitter<boolean>(); // لتحديث حالة الظهور في المكون الأب\n @Output() submitted = new EventEmitter<any>(); // ينبعث عند الضغط على حفظ والنموذج سليم\n @Output() canceled = new EventEmitter<void>(); // ينبعث عند إلغاء العملية أو إغلاق الدرج\n\n form = new FormGroup({});\n model: any = {}; // النموذج الذي يتعامل معه Formly داخليًا\n\n translate: TranslateService = inject(TranslateService);\n private messageService = inject(MessageService);\n\n ngOnInit() {\n this.fields_ = this.fields;\n this.resetForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['visible'] && changes['visible'].currentValue) {\n // عند فتح الدرج (visible يصبح true)، نقوم بتهيئة النموذج من initialModel\n this.model = { ...this.initialModel }; // نعمل نسخة لتجنب التغيير المباشر\n this.form.reset(this.model); // إعادة تعيين النموذج بقيمه الجديدة\n } else if (changes['visible'] && !changes['visible'].currentValue) {\n // عند إغلاق الدرج (visible يصبح false)، يمكننا تنظيف النموذج\n this.form.reset();\n this.model = {};\n }\n }\n\n /**\n * تُستدعى عند الضغط على زر \"حفظ\" داخل الدرج.\n * تتحقق من صحة النموذج ثم تُطلق حدث `submitted`.\n */\n onSubmit() {\n console.log('Form is valid:', this.form.valid);\n console.log('Form errors:', this.form.errors);\n console.log('Model:', this.model);\n console.log('Form Controls:', this.form.controls);\n if (this.form.invalid) {\n const controls = this.form.controls as { [key: string]: any }; // ✅ الحل هنا\n\n Object.keys(controls).forEach(key => {\n const controlErrors = controls[key].errors;\n if (controlErrors != null) {\n console.log(`Validation errors for control '${key}':`, controlErrors);\n }\n });\n this.form.markAllAsTouched();\n this.messageService.add({\n severity: 'error',\n detail: this.translate.instant('COMMON.FILL_REQUIRED_FIELDS'),\n });\n return;\n }\n // نطلق حدثًا يحتوي على النموذج الحالي بعد التحقق من صحته\n // المكون الأب سيكون مسؤولاً عن استدعاء خدمة API المناسبة\n this.submitted.emit(this.model);\n }\n\n /**\n * تُستدعى عند الضغط على زر \"إلغاء\" أو زر الإغلاق (X) في الرأس.\n * تُغلق الدرج وتُطلق حدث `canceled`.\n */\n closeDrawer() {\n this.visible = false;\n this.visibleChange.emit(false); // إبلاغ المكون الأب بتغير حالة الظهور\n this.canceled.emit(); // إبلاغ المكون الأب بالإلغاء\n this.resetForm(); // إعادة تعيين النموذج لتنظيفه\n }\n\n /**\n * تُستدعى عندما يقوم `p-drawer` بإغلاق نفسه (مثل النقر خارج الدرج أو الضغط على Esc).\n * هذا يضمن أن يتم تحديث حالة `visible` في المكون الأب.\n */\n onDrawerHide() {\n this.visibleChange.emit(false);\n this.canceled.emit(); // يمكن التعامل مع هذا كحدث إلغاء أيضاً\n this.resetForm(); // إعادة تعيين النموذج\n }\n\n private resetForm() {\n // إعادة تعيين النموذج إلى initialModel عند الفتح، أو تنظيفه عند الإغلاق\n this.model = { ...this.initialModel };\n this.form.reset(this.model);\n }\n\n /**\n * تحدد ما إذا كانت العملية إضافة أم تعديل بناءً على وجود معرف (id) في النموذج.\n * يمكن استخدامها لتغيير الأيقونة أو النص في الرأس.\n */\n isEditMode(): boolean {\n // افتراضياً، نعتبر أن وجود خاصية 'id' (أو `yourIdPropertyName`) يعني وضع التعديل.\n // يمكنك تعديل هذا الشرط ليتناسب مع نموذج البيانات الخاص بك.\n return !!this.initialModel?.id;\n }\n}\n","<p-drawer \n [(visible)]=\"visible\"\n (onHide)=\"onDrawerHide()\"\n position=\"left\"\n [modal]=\"true\"\n [blockScroll]=\"true\"\n [showCloseIcon]=\"true\"\n [style]=\"{ width: drawerWidth }\"\n styleClass=\"h-screen flex flex-col p-0\"\n appendTo=\"body\"\n>\n <ng-template pTemplate=\"header\">\n <div\n class=\"flex items-center justify-between p-4 border-b bg-white\"\n class=\"drawer-header\"\n >\n <span class=\"font-semibold text-lg flex items-center gap-2\">\n <i\n class=\"pi\"\n [ngClass]=\"{ 'pi-plus': !isEditMode(), 'pi-pencil': isEditMode() }\"\n ></i>\n {{ drawerTitle }}\n </span>\n <!-- <button\n pButton\n icon=\"pi pi-times\"\n class=\"p-button-text\"\n (click)=\"closeDrawer()\"\n ></button> -->\n </div>\n </ng-template>\n\n <div class=\"flex-grow p-4 space-y-6\" class=\"drawer-content\">\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields_\"\n [model]=\"model\"\n [options]=\"options\"\n class=\"space-y-6\"\n ></formly-form>\n\n </form>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div\n class=\"flex justify-end gap-2 p-4 border-t bg-white\"\n class=\"drawer-footer\"\n >\n <button\n *ngIf=\"showCancelButton\"\n pButton\n label=\"{{ 'COMMON.CANCEL' | translate }}\"\n class=\"p-button-secondary\"\n (click)=\"closeDrawer()\"\n [disabled]=\"isSaving\"\n ></button>\n <button\n *ngIf=\"showSaveButton\"\n pButton\n label=\"{{ 'COMMON.SAVE' | translate }}\"\n icon=\"pi pi-save\"\n [loading]=\"isSaving\"\n [disabled]=\"form.invalid || isSaving\"\n (click)=\"onSubmit()\"\n ></button>\n </div>\n </ng-template>\n</p-drawer>\n\n\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-generic-loadingspinner',\n imports: [CommonModule],\n templateUrl: './generic-loadingspinner.html',\n styleUrl: './generic-loadingspinner.css'\n})\nexport class GenericLoadingspinner {\n@Input() loading: boolean = false;\n}\n\n\n\n\n"," <ng-container *ngIf=\"loading\"> \n <div class=\"flex justify-center items-center my-6\"> \n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\"> \n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle> \n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path> \n </svg> \n <span class=\"ml-2 text-gray-700\">جاري التحميل...</span> \n </div> \n </ng-container>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-header-wrapper',\n imports: [],\n templateUrl: './header-wrapper.html',\n styleUrl: './header-wrapper.css'\n})\nexport class HeaderWrapper {\n\n}\n","<p>header-wrapper works!</p>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\n\n@Component({\n selector: 'lib-sidebar-card',\n standalone: true,\n imports: [CommonModule, NgClass],\n templateUrl: './sidebar-cards.html',\n})\nexport class SidebarCards {\n /** عنوان الهيدر **/\n @Input() header = '';\n /** فئة أيقونة Font-Awesome **/\n @Input() icon = '';\n /** هل المحتوى مفتوح **/\n @Input() open = false;\n /** يرسل تغيير الحالة للأبّ **/\n @Output() openChange = new EventEmitter<boolean>();\n\n toggle() {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n}\n","<!-- sidebar-card.component.html -->\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\n <!-- رأس الكرت -->\n <div\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\n (click)=\"toggle()\"\n >\n <div class=\"flex items-center space-x-2\">\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\n </div>\n <i\n class=\"fas text-gray-400 transition-transform duration-200\"\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\n ></i>\n </div>\n\n <!-- محتوى الكرت -->\n <div\n *ngIf=\"open\"\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\n\n@Component({\n selector: 'lib-sidebar-toggles',\n standalone: true,\n imports: [CommonModule, NgClass],\n templateUrl: './sidebar-toggles.html',\n styleUrls: ['./sidebar-toggles.css'],\n})\nexport class SidebarToggles {\n /** هل كلها مفتوحة الآن؟ */\n @Input() allOpen = false;\n /** حالة بطاقة تفاصيل العميل */\n @Input() contactOpen = false;\n /** حالة بطاقة الـ Timeline */\n @Input() timelineOpen = false;\n\n @Output() toggleAll = new EventEmitter<void>();\n @Output() toggleContact = new EventEmitter<void>();\n @Output() toggleTimeline = new EventEmitter<void>();\n}\n","<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\n flex flex-col items-center py-4 space-y-4 z-50\">\n <!-- collapse/expand all -->\n <button\n (click)=\"toggleAll.emit()\"\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\n >\n <i\n class=\"fas fa-arrow-right text-xl transition-transform\"\n [ngClass]=\"{ 'rotate-180': allOpen }\"\n ></i>\n </button>\n\n <!-- contact -->\n <button\n (click)=\"toggleContact.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': contactOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\n }\"\n >\n <i class=\"fas fa-info-circle text-xl\"></i>\n </button>\n\n <!-- timeline -->\n <button\n (click)=\"toggleTimeline.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': timelineOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\n }\"\n >\n <i class=\"fas fa-paperclip text-xl\"></i>\n </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n imports:[CommonModule,TooltipModule],\n selector: 'app-tooltip-wrapper',\n template: `\n <div class=\"flex flex-col\">\n <label *ngIf=\"field.props?.label\" class=\"flex items-center mb-1 text-sm font-medium text-gray-700\">\n {{ field.props?.label }}\n\n <!-- PrimeNG Tooltip Icon -->\n <span\n *ngIf=\"field && field.props && field.props['tooltip']\"\n [pTooltip]=\"field.props['tooltip']\"\n [tooltipPosition]=\"field.props['tooltipPosition'] || 'right'\"\n [tooltipStyleClass]=\"field.props['tooltipClass']\"\n class=\"ml-2 cursor-help inline-flex items-center\"\n >\n <i class=\"pi pi-info-circle text-gray-500 text-sm\"></i>\n </span>\n\n <!-- Required Asterisk -->\n <span *ngIf=\"field.props?.required\" class=\"text-red-500 ml-1\">*</span>\n </label>\n\n <ng-template #fieldComponent></ng-template>\n\n <!-- <div *ngIf=\"showError && field.formControl?.errors\" class=\"text-red-500 text-xs mt-1\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div> -->\n </div>\n `\n})\nexport class TooltipWrapperComponent extends FieldWrapper {\n // @ViewChild('fieldComponent', { read: ViewContainerRef, static: true }) fieldComponent!: ViewContainerRef;\n\n // get showError(): boolean {\n // return this.field.formControl?.invalid && (\n // this.field.formControl?.dirty ||\n // this.field.formControl?.touched ||\n // this.options.parentForm?.submitted\n // );\n // }\n}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { FieldType, FieldTypeConfig, FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\n\ntype RadioProps = FormlyFieldProps;\n\nexport interface FormlyRadioFieldConfig extends FormlyFieldConfig<RadioProps> {\n type: 'radio' | Type<FormlyFieldRadio>;\n}\n\n@Component({\n selector: 'formly-field-primeng-radio',\n template: `\n <div\n class=\"p-field-radiobutton\"\n *ngFor=\"let option of props.options | formlySelectOptions: field | async; let index = index\"\n >\n <p-radioButton\n [name]=\"field.name || id\"\n [formControl]=\"option.disabled ? disabledControl : formControl\"\n [value]=\"option.value\"\n [inputId]=\"id + index\"\n >\n </p-radioButton>\n <label [for]=\"id + index\" class=\"ml-2\">{{ option.label }}</label>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:false\n})\nexport class FormlyFieldRadio extends FieldType<FieldTypeConfig<RadioProps>> {\n get disabledControl() {\n return new UntypedFormControl({ value: this.formControl.value, disabled: true });\n }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldRadio } from './radio.type';\n\nexport function withFormlyFieldRadio(): ConfigOption {\n return {\n types: [\n {\n name: 'radio',\n component: FormlyFieldRadio,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlySelectModule } from '@ngx-formly/core/select';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { FormlyFieldRadio } from './radio.type';\nimport { withFormlyFieldRadio } from './radio.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n declarations: [FormlyFieldRadio],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n RadioButtonModule,\n\n FormlyFormFieldModule,\n FormlySelectModule,\n FormlyModule.forChild(withFormlyFieldRadio()),\n ],\n})\nexport class FormlyRadioModule {}\n","// src/app/shared/components/base-crud.component.ts\r\nimport { Directive, inject } from '@angular/core';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ActionDef } from '../models/Actiondef';\r\nimport { PaginatedResult } from '../models/Paginated';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { GenericCrudDialog } from './generic-crud-dialog/generic-crud-dialog';\r\nimport { BaseService } from '../services/base.service';\r\nimport { DeactivationReasonFormComponent } from './deactivation-reason/deactivation-reason';\r\nimport { SwalService } from '../services/SwalService.service';\r\n\r\n@Directive()\r\nexport abstract class BaseCrud<T, F = any> {\r\n list: T[] = [];\r\n paginator: boolean = true;\r\n canLoad: boolean = true;\r\n loading: boolean = false;\r\n errorMsg: string = '';\r\n first: number = 0;\r\n rows: number = 10;\r\n totalRecords: number = 0;\r\n searchGlobal: string = '';\r\n sort?: string;\r\n pageFilters: Partial<F> = {};\r\n currentFilters: Partial<F> = {};\r\n mode: string ='';\r\n scrollHeight: string ='400px';\r\n private swalService = inject(SwalService);\r\n\r\n protected dialogRef!: DynamicDialogRef;\r\n\r\n\r\n // abstract service: CrudService<T, F>;\r\n abstract service: BaseService;\r\n abstract dialogService: DialogService;\r\n // abstract dialogComponent: any;\r\n // abstract columns: ColumnDef<T>[];\r\n abstract actions: ActionDef<T>[];\r\n\r\n // for generic dialog:\r\n abstract formFields: FormlyFieldConfig[];\r\n abstract idField: keyof T;\r\n dialogVisible: boolean = false;\r\n drawerVisible: boolean = false;\r\n selectedItem: T | any = null;\r\n defaultModel: T | any = null;\r\n // selectedItem: T | any = {};\r\n isViewMode = false;\r\n isEditMode = false;\r\n\r\n\r\n\r\nloadPage(pageIndex: number, pageSize: number): void {\r\n if(this.canLoad){\r\n\r\n\r\n this.loading = true;\r\n var filters: Partial<F> = {\r\n maxResultCount:pageSize,\r\n skipCount:pageIndex,\r\n sorting:this.sort,\r\n ...this.currentFilters,\r\n ...this.pageFilters,\r\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\r\n };\r\n //\r\n this.service.getList(filters)\r\n .subscribe({\r\n next: (res: PaginatedResult<T>) => {\r\n //\r\n this.list = res.items;\r\n this.totalRecords = res.totalCount;\r\n this.loading = false;\r\n },\r\n error: err => {\r\n this.errorMsg = err.error?.message || err.message || 'خطأ في التحميل';\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n}\r\n\r\nonSearch(filters?: any): void {\r\n //\r\n if (filters && typeof filters === 'object' && !Array.isArray(filters)) {\r\n this.pageFilters = filters;\r\n } else {\r\n this.searchGlobal = filters;\r\n }\r\n\r\n this.loadPage(0, 10);\r\n}\r\n\r\n\r\n\r\nvisibleChange(value:boolean){\r\n if(this.mode == 'view'){\r\n this.dialogVisible = value;\r\n }\r\n else{\r\n\r\n this.drawerVisible = value;\r\n }\r\n}\r\n\r\n\r\nonPageChange(event: { first?: number; rows?: number; sort?: string; filters?: Record<string, any> }): void {\r\n // فك المتغيّرات مع قيمة افتراضية لفلاتر\r\n const {\r\n first = this.first,\r\n rows = this.rows,\r\n sort = this.sort,\r\n filters = {}\r\n } = event;\r\n\r\n this.first = first;\r\n this.rows = rows;\r\n this.sort = sort;\r\n\r\n // const pageIndex = Math.floor(first / rows);\r\n const skipCount = first;\r\n const pageIndex = skipCount;\r\n\r\n // الوصول للفلتر العام عبر الصيغة المربعة\r\n const globalValue = filters['global'];\r\n this.searchGlobal = typeof globalValue === 'string' ? globalValue : '';\r\n\r\n // فلترة خاصة بحقل واحد\r\n // const fieldFilters = { ...filters };\r\n // delete fieldFilters['global'];\r\n // this.currentFilters = fieldFilters as Partial<F>;\r\n\r\n\r\n\r\n this.loadPage(pageIndex, rows);\r\n}\r\n\r\n\r\n\r\nonTableAction(event: { name: string; row: T | null }): void {\r\n switch (event.name) {\r\n case 'add': this.openDrawer(null,event.name); break;\r\n case 'view': this.openDrawer(event.row!,event.name); break;\r\n case 'edit': this.openDrawer(event.row!,event.name); break;\r\n case 'delete': this.onDelete(event.row!);break;\r\n case 'state': this.openDeactivationReason(event.row!);break;\r\n }\r\n}\r\n\r\n\r\nprotected openDrawer(item: T | null,mode:string): void {\r\n\r\n this.mode = mode;\r\n\r\n // this.drawerVisible = !this.drawerVisible;\r\n\r\n\r\n if (item == null) {\r\n\r\n this.selectedItem = this.defaultModel || {};\r\n }\r\n else{\r\n this.selectedItem = item;\r\n }\r\n\r\n if(mode == 'edit'){\r\n this.drawerVisible = true;\r\n this.isEditMode = true ;\r\n this.isViewMode = false ;\r\n // this.isEditMode = item !=null ;\r\n }\r\n if(mode == 'add'){\r\n this.drawerVisible = true;\r\n this.isViewMode = false ;\r\n this.isEditMode = false ;\r\n }\r\n if(mode == 'view'){\r\n // this.drawerVisible = true;\r\n this.dialogVisible = true;\r\n\r\n this.isViewMode = true ;\r\n this.isEditMode = false ;\r\n }\r\n}\r\n\r\n\r\nopenDeactivationReason(model: any) {\r\n\r\n this.selectedItem = model;\r\n if(this.selectedItem.isActive == true){\r\n\r\n\r\n const ref = this.dialogService.open(DeactivationReasonFormComponent, {\r\n header: 'السبب (في حال تم إيقافه)',\r\n width: '30vw',\r\n data: { model: { ...model },\r\n fields: this.formFields,\r\n service: this.service,\r\n idField: this.idField },\r\n });\r\n\r\n ref.onClose.subscribe((result) => {\r\n if (result) {\r\n this.selectedItem.isActive = false;\r\n this.selectedItem.deactivationReason = result.deactivationReason;\r\n // Optionally: save model via API\r\n }\r\n });\r\n}\r\nelse{\r\n this.selectedItem.isActive = true;\r\n this.selectedItem.deactivationReason = \"\";\r\n const id = (this.selectedItem as any)[this.idField] ;\r\n this.service.update(id, this.selectedItem).subscribe({\r\n next: () => {\r\n\r\n },\r\n error: (err) => {\r\n this.loading = false;\r\n\r\n }\r\n });\r\n}\r\n}\r\n\r\n\r\nprotected openDialog(item: T | null): void {\r\n this.dialogRef = this.dialogService.open(GenericCrudDialog<T>, {\r\n header: item ? 'تعديل' : 'اضافه',\r\n styleClass: 'w-1/2',\r\n modal: true,\r\n data: {\r\n item,\r\n fields: this.formFields,\r\n service: this.service,\r\n idField: this.idField\r\n }\r\n });\r\n //\r\n this.dialogRef.onClose.subscribe((reload: boolean) => {\r\n if (reload) this.loadPage(0, this.rows);\r\n });\r\n}\r\n\r\n\r\n\r\n // onDelete(item: any): void {\r\n // if (!confirm('هل تريد الحذف فعلاً؟')) return;\r\n // const id = (item as any)[this.idField];\r\n // this.service.delete(id).subscribe(() => {\r\n // this.loadPage(0, this.rows);\r\n // });\r\n // }\r\n\r\n\r\nonDelete(item: any): void {\r\n const id = (item as any)[this.idField];\r\n\r\n this.swalService.confirm(\r\n 'تأكيد الحذف',\r\n 'هل تريد حذف هذا السجل فعلاً؟',\r\n 'نعم، احذف',\r\n 'إلغاء'\r\n ).then((result) => {\r\n if (result.isConfirmed) {\r\n this.service.delete(id).subscribe(() => {\r\n this.loadPage(0, this.rows);\r\n this.swalService.success('تم الحذف بنجاح');\r\n }, () => {\r\n this.swalService.error('فشل الحذف', 'حدث خطأ أثناء الحذف');\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nget columns(): FormlyFieldConfig[] {\r\n const flattenFields = (fields: FormlyFieldConfig[]): FormlyFieldConfig[] => {\r\n return fields.flatMap(field => {\r\n // Check for nested group/panel\r\n if (field.fieldGroup?.length) {\r\n return flattenFields(field.fieldGroup);\r\n }\r\n\r\n // Skip fields with no props or table.hidden === true\r\n if (!field.props || field.props['table']?.hidden === true) {\r\n return [];\r\n }\r\n\r\n // Determine the column type: table.type > field.type > 'label-type'\r\n // const tableType = field.props['table']?.type || field.type || 'label-type';\r\n const tableType = field.props['table']?.type || 'label-type';\r\n\r\n //\r\n\r\n return [{\r\n type: tableType,\r\n key: field['key'], // always set key for table rendering\r\n props: {\r\n ...field.props, // base props\r\n ...field.props['table']?.props // table-specific overrides\r\n },\r\n expressions: field.props['table']?.expressions\r\n }];\r\n });\r\n };\r\n\r\n return flattenFields(this.formFields);\r\n}\r\n\r\n\r\nget filters(): FormlyFieldConfig[] {\r\n const flattenForFilter = (fields: FormlyFieldConfig[]): FormlyFieldConfig[] => {\r\n return fields.flatMap(field => {\r\n if (field.fieldGroup?.length) {\r\n // Recursively handle nested panels/groups\r\n return flattenForFilter(field.fieldGroup);\r\n }\r\n\r\n // Skip fields with no props or filter.hidden === true\r\n if (!field.props || field.props['filter']?.hidden === true) {\r\n return [];\r\n }\r\n\r\n return [field];\r\n });\r\n };\r\n\r\n return flattenForFilter(this.formFields);\r\n}\r\n\r\n}\r\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","import { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[appRtlLang]'\n})\nexport class RtlLang implements OnChanges{\n\n@Input('appRtlLang') lang: string = 'ar';\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n const direction = this.lang === 'ar' ? 'rtl' : 'ltr';\n this.renderer.setStyle(this.el.nativeElement, 'direction', direction);\n }\n\n}\n","export interface Root {\n // environment: Partial<Environment>;\n registerLocaleFn: (locale: string) => Promise<any>;\n skipGetAppConfiguration?: boolean;\n skipInitAuthService?: boolean;\n sendNullsAsQueryParam?: boolean;\n tenantKey?: string;\n // localizations?: Localization[];\n othersGroup?: string;\n dynamicLayouts?: Map<string, string>;\n disableProjectNameInTitle?: boolean;\n }\n\nexport class ListResultDto<T> {\n items?: T[];\n\n constructor(initialValues: Partial<ListResultDto<T>> = {}) {\n for (const key in initialValues) {\n if (checkHasProp(initialValues, key)) {\n this[key] = initialValues[key];\n }\n }\n }\n}\n\nexport class PagedResultDto<T> extends ListResultDto<T> {\n totalCount?: number;\n\n constructor(initialValues: Partial<PagedResultDto<T>> = {}) {\n super(initialValues);\n }\n}\n\nexport class GeneralResponse <T> {\n\n success?: boolean;\n\n result?: T;\n\n targetUrl?: string;\n\n // error?: IGeneralErrorInfo;\n error?: any;\n\n unAuthorizedRequest?: boolean;\n\n constructor() {\n }\n\n}\nexport function checkHasProp<T>(object: T, key: string | keyof T): key is keyof T {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'statustext',\n standalone: true\n})\nexport class StatustextPipe implements PipeTransform {\n\n transform(value: number | null | undefined): string {\n switch (value) {\n case 1: return 'فعال';\n case 2: return 'موقوف';\n default: return 'غير معلوم';\n }\n }\n}\n","// tafqeet.pipe.ts\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'tafqeet'\n})\nexport class TafqeetPipe implements PipeTransform {\n transform(value: number, currencyName: string = 'ريال سعودي'): string {\n if (value == null || isNaN(value)) return '';\n\n const [intPart, fracPart] = value.toFixed(2).split('.').map(Number);\n const intText = this.toArabicWords(intPart);\n const fracText = this.toArabicWords(fracPart);\n\n let result = `${intText} ${currencyName}`;\n if (fracPart > 0) {\n result += ` و${fracText} هللة`;\n }\n\n return result;\n }\n\n private toArabicWords(n: number): string {\n const units = [\n '', 'واحد', 'اثنان', 'ثلاثة', 'أربعة', 'خمسة', 'ستة', 'سبعة', 'ثمانية', 'تسعة'\n ];\n const teens = [\n 'عشرة', 'أحد عشر', 'اثنا عشر', 'ثلاثة عشر', 'أربعة عشر', 'خمسة عشر',\n 'ستة عشر', 'سبعة عشر', 'ثمانية عشر', 'تسعة عشر'\n ];\n const tens = [\n '', '', 'عشرون', 'ثلاثون', 'أربعون', 'خمسون', 'ستون', 'سبعون', 'ثمانون', 'تسعون'\n ];\n const hundreds = [\n '', 'مائة', 'مائتان', 'ثلاثمائة', 'أربعمائة', 'خمسمائة', 'ستمائة', 'سبعمائة', 'ثمانمائة', 'تسعمائة'\n ];\n\n if (n === 0) return 'صفر';\n\n let words: string[] = [];\n\n if (n >= 100) {\n const h = Math.floor(n / 100);\n words.push(hundreds[h]);\n n %= 100;\n }\n\n if (n >= 10 && n < 20) {\n words.push(teens[n - 10]);\n } else {\n const t = Math.floor(n / 10);\n const u = n % 10;\n\n if (u > 0) {\n words.push(units[u]);\n }\n if (t > 0) {\n words.push(tens[t]);\n }\n }\n\n return words.reverse().filter(w => !!w).join(' و ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe } from '@angular/common'; // لاستخدام DatePipe لتنسيق التاريخ الكامل\n\n@Pipe({\n name: 'timeAgoWithFullDate', // تغيير الاسم ليعكس وظيفته الشاملة\n pure: false // مهم لتحديث الـ Pipe بشكل متكرر\n})\nexport class TimeAgoWithFullDatePipe implements PipeTransform {\n\n constructor(private datePipe: DatePipe) {} // حقن DatePipe\n\n transform(value: Date | string | null): string {\n if (!value) return '';\n\n const date = typeof value === 'string' ? new Date(value) : value;\n const now = new Date();\n const seconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n let relativeTime: string;\n\n if (seconds < 10) { // في بضع ثوانٍ (لأن \"few seconds\" في Freshdesk تكون قصيرة جداً)\n relativeTime = 'منذ بضع ثوانٍ';\n } else if (seconds < 60) {\n relativeTime = `منذ ${seconds} ثانية`;\n } else if (seconds < 120) { // 1 to 2 minutes\n relativeTime = 'منذ دقيقة واحدة';\n } else if (seconds < 3600) { // less than 1 hour\n relativeTime = `منذ ${Math.floor(seconds / 60)} دقيقة`;\n } else if (seconds < 7200) { // 1 to 2 hours\n relativeTime = 'منذ ساعة واحدة';\n } else if (seconds < 86400) { // less than 24 hours\n relativeTime = `منذ ${Math.floor(seconds / 3600)} ساعة`;\n } else if (seconds < 172800) { // 1 to 2 days\n relativeTime = 'منذ يوم واحد';\n } else if (seconds < 2592000) { // less than 30 days (approx. 1 month)\n relativeTime = `منذ ${Math.floor(seconds / 86400)} يومًا`;\n } else {\n // For longer periods, Freshdesk typically just shows the full date\n // We'll still keep the 'منذ X' for now based on previous request,\n // but you might consider just returning the full date for older items.\n const months = Math.floor(seconds / 2592000); // 30 days * 24 hours * 60 minutes * 60 seconds\n if (months < 12) {\n relativeTime = `منذ ${months} شهرًا`;\n } else {\n relativeTime = `منذ ${Math.floor(months / 12)} سنة`;\n }\n }\n\n // تنسيق التاريخ الكامل بالضبط كما في Freshdesk: \"Sat, 26 Jul 2025 at 9:41 PM\"\n const fullDateFormatted = this.datePipe.transform(date, 'E, d MMM yyyy at h:mm a', 'en-US');\n\n // دمج الوقت النسبي مع التاريخ الكامل\n return `${relativeTime} (${fullDateFormatted})`;\n }\n}\n","// core/providers/environment.provider.ts\nimport { ENVIRONMENT, EnvironmentConfig } from '../tokens/environment.token';\nimport { Provider } from '@angular/core';\n\nexport function provideEnvironmentConfig(config: EnvironmentConfig): Provider {\n return {\n provide: ENVIRONMENT,\n useValue: config\n };\n}\n","// src/app/services/generic.service.ts\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport { PaginatedResult } from '../models/Paginated';\nimport { CrudService } from './crud-service.interface';\n\n/**\n * GenericService<T, K>:\n * - T = نوع الكائن (Model)\n * - K = نوع المفتاح الأساسي (ID)، افتراضي number\n *\n * يحتوي على جميع دوال الـ CRUD القياسية للتوريث في الخدمات المتخصصة.\n */\nexport abstract class GenericService<T, K = number> implements CrudService<T, Record<string, any>> {\n /**\n * ✏️ على كل خدمة فرعية أن تعرّف هذا:\n * مثال: protected baseUrl = 'https://api.example.com/api/jobtyps';\n */\n protected abstract baseUrl: string;\n\n constructor(protected http: HttpClient) {}\n\n /**\n * جلب كل السجلات\n */\n getAll(): Observable<T[]> {\n // ملاحظة: يمكن إضافة معالج أخطاء مركزي هنا أو عبر Interceptor\n return this.http.get<T[]>(this.baseUrl);\n }\n\n /**\n * جلب سجل واحد بناءً على المعرف\n */\n\n getById(id: K): Observable<T> {\n // ملاحظة: تأكد أن الـ endpoint يدعم GET برقم المعرف\n return this.http.get<T>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * إنشاء سجل جديد\n */\n create(item: Partial<T>): Observable<T> {\n\n // ملاحظة: استخدم Partial<T> للسماح ببعض الحقول الاختيارية\n return this.http.post<T>(this.baseUrl, item);\n }\n\n /**\n * تحديث سجل موجود\n */\n\n update(id: K, item: Partial<T>): Observable<T> {\n // ملاحظة: هنا نُعيد Observable<void> لأن API قد لا تُرجع الجسم نفسه\n return this.http.put<T>(`${this.baseUrl}`, item);\n }\n /**\n * حذف سجل\n */\n delete(id: K): Observable<void> {\n // ملاحظة: يُفضّل استخدام Confirm قبل الحذف في الواجهة\n return this.http.delete<void>(`${this.baseUrl}/${id}`);\n }\n\n\n\n /** endpoint قابل للتخصيص — يمكن للفرع override–ها */\n protected getPageUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * جلب صفحة من البيانات مع دعم الفلاتر والفرز\n * @param pageIndex صفر-based\n * @param pageSize عدد السجلات\n * @param filters كائن Partial<T> أو Record<string,any>\n * @param sort نص الفرز، مثلاً \"eiNa:desc\"\n */\n getPage(\n pageIndex: number,\n pageSize: number,\n filters?: Record<string, any>,\n sort?: string\n ): Observable<PaginatedResult<T>> {\n // debugger\n let params = new HttpParams()\n .set('pageIndex', pageIndex.toString())\n .set('pageSize', pageSize.toString());\n\n if (filters) {\n Object.entries(filters).forEach(([key, val]) => {\n if (val != null && val !== '') {\n params = params.set(key, val.toString());\n }\n });\n }\n\n if (sort) {\n params = params.set('sort', sort);\n }\n\n // return this.http\n // .get<T[]>(this.getPageUrl(), { params, observe: 'response' })\n // .pipe(\n // map((resp: HttpResponse<T[]>) => ({\n // items: resp.body || [],\n // totalCount: Number(resp.headers.get('X-Total-Count')) || resp.body?.length || 0\n // }))\n // );\n return this.http.get<PaginatedResult<T>>(\n this.getPageUrl(),\n { params }\n );\n }\n\n\n}\n","import { Request } from 'express';\nimport { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\n// Define the `Request` token\nexport const REQUEST = new InjectionToken<Request>('REQUEST');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SsrCookieService {\n private readonly documentIsAccessible: boolean;\n static initialUrl = '';\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() @Inject(REQUEST) private request: Request\n ) {\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n SsrCookieService.initialUrl = this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static getCookieRegExp(name: string): RegExp {\n const escapedName: string = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, '\\\\$1');\n\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static safeDecodeURIComponent(encodedURIComponent: string): string {\n try {\n return decodeURIComponent(encodedURIComponent);\n } catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n check(name: string): boolean {\n name = encodeURIComponent(name);\n const regExp: RegExp = SsrCookieService.getCookieRegExp(name);\n return regExp.test((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n }\n isDocumentIsAccessible(): boolean {\n return this.documentIsAccessible ;\n }\n get url(): string {\n return this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n get(name: string): string {\n if (this.check(name)) {\n name = encodeURIComponent(name);\n\n const regExp: RegExp = SsrCookieService.getCookieRegExp(name);\n const result: RegExpExecArray |any= regExp.exec((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n\n return result[1] ? SsrCookieService.safeDecodeURIComponent(result[1]) : '';\n } else {\n return '';\n }\n }\n\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n getAll(): { [key: string]: string } {\n const cookies: { [key: string]: string } = {};\n const cookieString: any = this.documentIsAccessible ? this.document?.cookie : this.request?.headers.cookie;\n\n if (cookieString && cookieString !== '') {\n cookieString.split(';').forEach((currentCookie:any) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[SsrCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = SsrCookieService.safeDecodeURIComponent(cookieValue);\n });\n }\n\n return cookies;\n }\n\n /**\n * Set cookie based on provided information\n *\n * @param name Cookie name\n * @param value Cookie value\n * @param expires Number of days until the cookies expires or an actual `Date`\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Secure flag\n * @param sameSite OWASP same site token `Lax`, `None`, or `Strict`. Defaults to `Lax`\n * @param partitioned Partitioned flag\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n set(\n name: string,\n value: string,\n expires?: number | Date,\n path?: string,\n domain?: string,\n secure?: boolean,\n sameSite?: 'Lax' | 'None' | 'Strict',\n partitioned?: boolean\n ): void;\n\n /**\n * Set cookie based on provided information\n *\n * Cookie's parameters:\n * <pre>\n * expires Number of days until the cookies expires or an actual `Date`\n * path Cookie path\n * domain Cookie domain\n * secure Cookie secure flag\n * sameSite OWASP same site token `Lax`, `None`, or `Strict`. Defaults to `Lax`\n * </pre>\n *\n * @param name Cookie name\n * @param value Cookie value\n * @param options Body with cookie's params\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n set(\n name: string,\n value: string,\n options?: {\n expires?: number | Date;\n path?: string;\n domain?: string;\n secure?: boolean;\n sameSite?: 'Lax' | 'None' | 'Strict';\n partitioned?: boolean;\n }\n ): void;\n\n set(\n name: string,\n value: string,\n expiresOrOptions?: number | Date | any,\n path?: string,\n domain?: string,\n secure?: boolean,\n sameSite?: 'Lax' | 'None' | 'Strict',\n partitioned?: boolean\n ): void {\n if (!this.documentIsAccessible) {\n return;\n }\n\n if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n partitioned,\n };\n\n this.set(name, value, optionsBody);\n return;\n }\n\n let cookieString: string = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n\n const options = expiresOrOptions ? expiresOrOptions : {};\n\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires: Date = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n } else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(\n `[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`\n );\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n\n cookieString += 'sameSite=' + options.sameSite + ';';\n\n if (options.partitioned) {\n cookieString += 'Partitioned;';\n }\n\n this.document.cookie = cookieString;\n }\n\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n delete(name: string, path?: string, domain?: string, secure?: boolean, sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'): void {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', { expires: expiresDate, path, domain, secure, sameSite });\n }\n\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n deleteAll(path?: string, domain?: string, secure?: boolean, sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'): void {\n if (!this.documentIsAccessible) {\n return;\n }\n\n const cookies: any = this.getAll();\n\n for (const cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n}\n","\n/*\n * Public API Surface of @framework/ng.core\n */\n\n/* ----------------- Components ----------------- */\n// export * from './lib/components/editorjs-demo/editorjs-demo';\nexport * from './lib/components/odata-query-builder/odata-query-builder.component';\nexport * from './lib/components/condition-editor/condition-editor-type';\nexport * from './lib/components/form-template/template.type';\nexport * from './lib/components/form-button/form-button.type';\nexport * from './lib/components/attachments/attachment-type';\nexport * from './lib/components/breadcrumb/breadcrumb';\nexport * from './lib/components/color-picker/color-picker.type';\nexport * from './lib/components/column-settings-popover/column-settings-popover';\nexport * from './lib/components/custom-switch/custom-switch';\nexport * from './lib/components/deactivation-reason/deactivation-reason';\nexport * from './lib/components/formly-avatar-label/formly-avatar-label';\nexport * from './lib/components/formly-button/formly-button';\nexport * from './lib/components/formly-button-selector/formly-button-selector';\nexport * from './lib/components/formly-split-button/formly-split-button';\nexport * from './lib/components/formly-username-with-domain/formly-username-with-domain';\nexport * from './lib/components/generic-autocomplete/generic-autocomplete-component';\nexport * from './lib/components/formly-avatar-image/formly-avatar-image';\nexport * from './lib/components/generic-button/generic-button';\nexport * from './lib/components/generic-card/generic-card';\nexport * from './lib/components/generic-crud-dialog/generic-crud-dialog';\nexport * from './lib/components/generic-crud-table/generic-crud-table';\nexport * from './lib/components/generic-drawer/generic-drawer';\nexport * from './lib/components/generic-errormessage/generic-errormessage';\nexport * from './lib/components/generic-formly-fields/generic-formly-fields';\nexport * from './lib/components/generic-loadingspinner/generic-loadingspinner';\nexport * from './lib/components/generic-search/generic-search';\nexport * from './lib/components/generic-selector/generic-selector.component';\nexport * from './lib/components/generic-table/generic-table';\nexport * from './lib/components/header-wrapper/header-wrapper';\nexport * from './lib/components/icon-picker/icon-picker.type';\nexport * from './lib/components/input-switch/input-switch.type';\nexport * from './lib/components/input-with-icon/input-with-icon.type';\nexport * from './lib/components/label-type/clickable-label-type';\nexport * from './lib/components/label-type/label-type';\nexport * from './lib/components/repeat/repeat-section.type';\nexport * from './lib/components/sidebar-cards/sidebar-cards';\nexport * from './lib/components/sidebar-toggles/sidebar-toggles';\nexport * from './lib/components/tabs/tabs.type';\nexport * from './lib/components/tag-type/formly-tag-type';\nexport * from './lib/components/tag-type/formly-option-tag-type';\nexport * from './lib/components/tag-type/formly-color-tag-type';\nexport * from './lib/components/text-editor/formly-rich-text-editor-type';\nexport * from './lib/components/wrappers/label.wrapper';\nexport * from './lib/components/wrappers/panel.wrapper';\nexport * from './lib/components/wrappers/td-wrapper.type';\nexport * from './lib/components/wrappers/tooltip-wrapper';\n\nexport * from './lib/components/input';\nexport * from './lib/components/radio';\nexport * from './lib/components/select';\nexport * from './lib/components/checkbox';\nexport * from './lib/components/textarea';\nexport * from './lib/components/form-field';\nexport * from './lib/components/datepicker';\n\nexport * from './lib/components/base-crud';\nexport * from './lib/components/formly-presets';\n// export * from './lib/components/InputWithIconType';\n\n\n\n\n/* ----------------- Directives ----------------- */\nexport * from './lib/directives/appAutofocus';\nexport * from './lib/directives/rtl-lang';\n\n/* ----------------- Models ----------------- */\nexport * from './lib/models/Actiondef';\nexport * from './lib/models/AttachmentDto';\nexport * from './lib/models/ButtonConfig';\nexport * from './lib/models/Columndef';\nexport * from './lib/models/Common';\nexport * from './lib/models/Filterdef';\nexport * from './lib/models/Paginated';\nexport * from './lib/models/rest';\nexport * from './lib/models/StatusOption';\n\n/* ----------------- Pipes ----------------- */\nexport * from './lib/pipes/statustext-pipe';\nexport * from './lib/pipes/tafkeet-pipe';\nexport * from './lib/pipes/time-ago.pipe';\n\n/* ----------------- Providers ----------------- */\nexport * from './lib/providers/environment.provider';\nexport * from './lib/providers/formly.config';\n\n/* ----------------- Services ----------------- */\nexport * from './lib/services/base.service';\nexport * from './lib/services/crud-service.interface';\nexport * from './lib/services/generic.service';\nexport * from './lib/services/rest.service';\nexport * from './lib/services/ssr-cookie.service';\nexport * from './lib/services/SwalService.service';\n\n/* ----------------- Tokens ----------------- */\nexport * from './lib/tokens/environment.token';\nexport * from './lib/tokens/options.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.RestService","i1.BaseService","i2","i3","i4","i5","i6","i7","i9","finalize","i8","FormlyFormFieldModule","FormlyCoreSelectModule","FormlySelectModule"],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.core.mjs","sources":["../../../projects/core/src/lib/components/odata-query-builder/odata-query-builder.component.ts","../../../projects/core/src/lib/components/odata-query-builder/odata-query-builder.component.html","../../../projects/core/src/lib/components/condition-editor/suggestions.ts","../../../projects/core/src/lib/tokens/environment.token.ts","../../../projects/core/src/lib/tokens/options.token.ts","../../../projects/core/src/lib/models/rest.ts","../../../projects/core/src/lib/services/rest.service.ts","../../../projects/core/src/lib/services/base.service.ts","../../../projects/core/src/lib/components/condition-editor/condition-editor-type.ts","../../../projects/core/src/lib/components/form-template/template.type.ts","../../../projects/core/src/lib/components/form-button/form-button.type.ts","../../../projects/core/src/lib/models/AttachmentDto.ts","../../../projects/core/src/lib/components/attachments/attachment-type.ts","../../../projects/core/src/lib/components/attachments/attachment-type.html","../../../projects/core/src/lib/components/breadcrumb/breadcrumb.ts","../../../projects/core/src/lib/components/color-picker/color-picker.type.ts","../../../projects/core/src/lib/components/column-settings-popover/column-settings-popover.ts","../../../projects/core/src/lib/components/column-settings-popover/column-settings-popover.html","../../../projects/core/src/lib/components/custom-switch/custom-switch.ts","../../../projects/core/src/lib/components/deactivation-reason/deactivation-reason.ts","../../../projects/core/src/lib/components/formly-avatar-label/formly-avatar-label.ts","../../../projects/core/src/lib/components/formly-button/formly-button.ts","../../../projects/core/src/lib/components/formly-button-selector/formly-button-selector.ts","../../../projects/core/src/lib/components/formly-split-button/formly-split-button.ts","../../../projects/core/src/lib/components/formly-username-with-domain/formly-username-with-domain.ts","../../../projects/core/src/lib/components/generic-autocomplete/generic-autocomplete-component.ts","../../../projects/core/src/lib/components/formly-avatar-image/formly-avatar-image.ts","../../../projects/core/src/lib/components/generic-button/generic-button.ts","../../../projects/core/src/lib/components/generic-button/generic-button.html","../../../projects/core/src/lib/components/generic-card/generic-card.ts","../../../projects/core/src/lib/components/generic-card/generic-card.html","../../../projects/core/src/lib/components/generic-formly-fields/generic-formly-fields.ts","../../../projects/core/src/lib/components/generic-formly-fields/generic-formly-fields.html","../../../projects/core/src/lib/components/generic-errormessage/generic-errormessage.ts","../../../projects/core/src/lib/components/generic-errormessage/generic-errormessage.html","../../../projects/core/src/lib/components/generic-crud-dialog/generic-crud-dialog.ts","../../../projects/core/src/lib/components/generic-crud-dialog/generic-crud-dialog.html","../../../projects/core/src/lib/components/generic-search/generic-search.ts","../../../projects/core/src/lib/components/generic-search/generic-search.html","../../../projects/core/src/lib/components/generic-table/generic-table.ts","../../../projects/core/src/lib/components/generic-table/generic-table.html","../../../projects/core/src/lib/services/SwalService.service.ts","../../../projects/core/src/lib/components/generic-crud-table/generic-crud-table.ts","../../../projects/core/src/lib/components/generic-crud-table/generic-crud-table.html","../../../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/datepicker/src/datepicker.type.ts","../../../projects/core/src/lib/components/datepicker/src/datepicker.config.ts","../../../projects/core/src/lib/components/datepicker/src/datepicker.module.ts","../../../projects/core/src/lib/components/generic-selector/generic-selector.component.ts","../../../projects/core/src/lib/components/icon-picker/icon-picker.type.ts","../../../projects/core/src/lib/components/input-switch/input-switch.type.ts","../../../projects/core/src/lib/components/input-with-icon/input-with-icon.type.ts","../../../projects/core/src/lib/components/label-type/label-type.ts","../../../projects/core/src/lib/components/repeat/repeat-section.type.ts","../../../projects/core/src/lib/components/tabs/tabs.type.ts","../../../projects/core/src/lib/components/tag-type/formly-color-tag-type.ts","../../../projects/core/src/lib/components/tag-type/formly-option-tag-type.ts","../../../projects/core/src/lib/components/tag-type/formly-tag-type.ts","../../../projects/core/src/lib/directives/appAutofocus.ts","../../../projects/core/src/lib/components/text-editor/formly-rich-text-editor-type.ts","../../../projects/core/src/lib/components/wrappers/label.wrapper.ts","../../../projects/core/src/lib/components/wrappers/td-wrapper.type.ts","../../../projects/core/src/lib/components/input/src/input.type.ts","../../../projects/core/src/lib/components/input/src/input.config.ts","../../../projects/core/src/lib/components/input/src/input.module.ts","../../../projects/core/src/lib/components/select/src/select.type.ts","../../../projects/core/src/lib/components/select/src/select.config.ts","../../../projects/core/src/lib/components/select/src/select.module.ts","../../../projects/core/src/lib/components/textarea/src/textarea.type.ts","../../../projects/core/src/lib/components/textarea/src/textarea.config.ts","../../../projects/core/src/lib/components/textarea/src/textarea.module.ts","../../../projects/core/src/lib/components/checkbox/src/checkbox.type.ts","../../../projects/core/src/lib/components/checkbox/src/checkbox.config.ts","../../../projects/core/src/lib/components/checkbox/src/checkbox.module.ts","../../../projects/core/src/lib/components/wrappers/panel.wrapper.ts","../../../projects/core/src/lib/components/label-type/clickable-label-type.ts","../../../projects/core/src/lib/providers/formly.config.ts","../../../projects/core/src/lib/components/generic-drawer/generic-drawer.ts","../../../projects/core/src/lib/components/generic-drawer/generic-drawer.html","../../../projects/core/src/lib/components/generic-loadingspinner/generic-loadingspinner.ts","../../../projects/core/src/lib/components/generic-loadingspinner/generic-loadingspinner.html","../../../projects/core/src/lib/components/header-wrapper/header-wrapper.ts","../../../projects/core/src/lib/components/header-wrapper/header-wrapper.html","../../../projects/core/src/lib/components/sidebar-cards/sidebar-cards.ts","../../../projects/core/src/lib/components/sidebar-cards/sidebar-cards.html","../../../projects/core/src/lib/components/sidebar-toggles/sidebar-toggles.ts","../../../projects/core/src/lib/components/sidebar-toggles/sidebar-toggles.html","../../../projects/core/src/lib/components/wrappers/tooltip-wrapper.ts","../../../projects/core/src/lib/components/radio/src/radio.type.ts","../../../projects/core/src/lib/components/radio/src/radio.config.ts","../../../projects/core/src/lib/components/radio/src/radio.module.ts","../../../projects/core/src/lib/components/base-crud.ts","../../../projects/core/src/lib/components/formly-presets.ts","../../../projects/core/src/lib/directives/rtl-lang.ts","../../../projects/core/src/lib/models/Common.ts","../../../projects/core/src/lib/pipes/statustext-pipe.ts","../../../projects/core/src/lib/pipes/tafkeet-pipe.ts","../../../projects/core/src/lib/pipes/time-ago.pipe.ts","../../../projects/core/src/lib/providers/environment.provider.ts","../../../projects/core/src/lib/services/generic.service.ts","../../../projects/core/src/lib/services/ssr-cookie.service.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/elite.framework-ng.core.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FormlyFieldConfig, FormlyFieldProps, FormlyForm } from '@ngx-formly/core';\r\nimport { EntityField } from './odata-types';\r\nimport { CommonModule } from '@angular/common';\r\n\r\ninterface ConditionGroup {\r\n operator: 'and' | 'or';\r\n conditions: Condition[];\r\n}\r\n\r\ninterface Condition {\r\n field: string;\r\n operator: string;\r\n value: any;\r\n}\r\n\r\ninterface OrderBy {\r\n field: string;\r\n direction: 'asc' | 'desc';\r\n}\r\n\r\ninterface GroupBy {\r\n field: string;\r\n}\r\n\r\ninterface QueryModel {\r\n conditionGroups: ConditionGroup[];\r\n orderBy: OrderBy[];\r\n groupBy: GroupBy[];\r\n top: number | null;\r\n skip: number | null;\r\n}\r\n\r\ninterface FieldSelectProps extends FormlyFieldProps {\r\n options: { value: string; label: string }[];\r\n}\r\n\r\ninterface RepeatFieldProps extends FormlyFieldProps {\r\n addText: string;\r\n}\r\n\r\ninterface FieldArrayConfig extends FormlyFieldConfig {\r\n fieldGroup: FormlyFieldConfig[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-odata-query-builder',\r\n templateUrl: './odata-query-builder.component.html',\r\n styleUrls: ['./odata-query-builder.component.css'],\r\n imports: [CommonModule,FormlyForm]\r\n})\r\nexport class ODataQueryBuilderComponent {\r\n @Input() set entityFields(fields: EntityField[]) {\r\n this._entityFields = fields || [];\r\n this.updateFieldOptions();\r\n }\r\n get entityFields(): EntityField[] {\r\n return this._entityFields;\r\n }\r\n private _entityFields: EntityField[] = [];\r\n\r\n @Output() queryChange = new EventEmitter<string>();\r\n\r\n form = new FormGroup({});\r\n model: QueryModel = {\r\n conditionGroups: [\r\n {\r\n operator: 'and',\r\n conditions: []\r\n }\r\n ],\r\n orderBy: [],\r\n groupBy: [],\r\n top: null,\r\n skip: null\r\n };\r\n\r\n fields: FormlyFieldConfig[] = [\r\n {\r\n key: 'conditionGroups',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Condition Group',\r\n required: true\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'operator',\r\n type: 'select',\r\n props: {\r\n label: 'Group Operator',\r\n required: true,\r\n options: [\r\n { value: 'and', label: 'AND' },\r\n { value: 'or', label: 'OR' }\r\n ]\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'conditions',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Condition',\r\n required: true\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'field',\r\n type: 'select',\r\n props: {\r\n label: 'Field',\r\n required: true,\r\n options: []\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'operator',\r\n type: 'select',\r\n props: {\r\n label: 'Operator',\r\n required: true,\r\n options: [\r\n { value: 'eq', label: 'Equals' },\r\n { value: 'ne', label: 'Not Equals' },\r\n { value: 'gt', label: 'Greater Than' },\r\n { value: 'ge', label: 'Greater or Equal' },\r\n { value: 'lt', label: 'Less Than' },\r\n { value: 'le', label: 'Less or Equal' },\r\n { value: 'contains', label: 'Contains' },\r\n { value: 'startswith', label: 'Starts With' },\r\n { value: 'endswith', label: 'Ends With' }\r\n ]\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'value',\r\n type: 'input',\r\n props: {\r\n label: 'Value',\r\n required: true\r\n },\r\n expressions: {\r\n 'props.type': (field: FormlyFieldConfig) => {\r\n const model = field.model as Condition;\r\n if (!model?.field) return 'string';\r\n const selectedField = this.entityFields.find(f => f.value === model.field);\r\n return selectedField?.type || 'string';\r\n }\r\n }\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n },\r\n {\r\n key: 'orderBy',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Order By'\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'field',\r\n type: 'select',\r\n props: {\r\n label: 'Field',\r\n required: true,\r\n options: []\r\n } as FieldSelectProps\r\n },\r\n {\r\n key: 'direction',\r\n type: 'select',\r\n props: {\r\n label: 'Direction',\r\n required: true,\r\n options: [\r\n { value: 'asc', label: 'Ascending' },\r\n { value: 'desc', label: 'Descending' }\r\n ]\r\n } as FieldSelectProps\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n },\r\n {\r\n key: 'groupBy',\r\n type: 'repeat',\r\n props: {\r\n addText: 'Add Group By'\r\n } as RepeatFieldProps,\r\n fieldArray: {\r\n fieldGroup: [\r\n {\r\n key: 'field',\r\n type: 'select',\r\n props: {\r\n label: 'Field',\r\n required: true,\r\n options: []\r\n } as FieldSelectProps\r\n }\r\n ]\r\n } as FieldArrayConfig\r\n },\r\n {\r\n key: 'top',\r\n type: 'input',\r\n props: {\r\n label: 'Top',\r\n type: 'number',\r\n min: 1\r\n }\r\n },\r\n {\r\n key: 'skip',\r\n type: 'input',\r\n props: {\r\n label: 'Skip',\r\n type: 'number',\r\n min: 0\r\n }\r\n }\r\n ];\r\n\r\n constructor() {}\r\n\r\n private updateFieldOptions(): void {\r\n const fieldOptions = this.entityFields.map(f => ({ value: f.value, label: f.label }));\r\n\r\n // Update conditions field options in all groups\r\n const conditionGroupsField = this.fields.find(f => f.key === 'conditionGroups');\r\n if (conditionGroupsField && (conditionGroupsField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const conditionsField = (conditionGroupsField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'conditions');\r\n if (conditionsField && (conditionsField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const fieldSelect = (conditionsField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'field');\r\n if (fieldSelect) {\r\n (fieldSelect.props as FieldSelectProps).options = fieldOptions;\r\n }\r\n }\r\n }\r\n\r\n // Update orderBy field options\r\n const orderByField = this.fields.find(f => f.key === 'orderBy');\r\n if (orderByField && (orderByField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const fieldSelect = (orderByField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'field');\r\n if (fieldSelect) {\r\n (fieldSelect.props as FieldSelectProps).options = fieldOptions;\r\n }\r\n }\r\n\r\n // Update groupBy field options\r\n const groupByField = this.fields.find(f => f.key === 'groupBy');\r\n if (groupByField && (groupByField.fieldArray as FieldArrayConfig)?.fieldGroup) {\r\n const fieldSelect = (groupByField.fieldArray as FieldArrayConfig).fieldGroup.find(f => f.key === 'field');\r\n if (fieldSelect) {\r\n (fieldSelect.props as FieldSelectProps).options = fieldOptions;\r\n }\r\n }\r\n }\r\n\r\n buildQuery(): string {\r\n let queryParts: string[] = [];\r\n\r\n // Handle condition groups\r\n if (this.model.conditionGroups?.length > 0) {\r\n const groupFilters = this.model.conditionGroups\r\n .filter((group: ConditionGroup) => group.conditions?.length > 0)\r\n .map((group: ConditionGroup) => {\r\n const conditionParts = group.conditions\r\n .filter((cond: Condition) => cond.field && cond.operator && cond.value !== undefined && cond.value !== null)\r\n .map((cond: Condition) => {\r\n const field = this.entityFields.find(f => f.value === cond.field);\r\n let value = cond.value;\r\n\r\n if (field?.type === 'string') {\r\n value = `'${String(value).replace(/'/g, \"''\")}'`; // Escape single quotes\r\n } else if (field?.type === 'date' && value) {\r\n value = new Date(value).toISOString();\r\n } else if (field?.type === 'boolean') {\r\n value = value ? 'true' : 'false';\r\n }\r\n\r\n return `${cond.field} ${cond.operator} ${value}`;\r\n });\r\n\r\n if (conditionParts.length > 0) {\r\n return conditionParts.length > 1\r\n ? `(${conditionParts.join(` ${group.operator} `)})`\r\n : conditionParts[0];\r\n }\r\n return null;\r\n })\r\n .filter(Boolean);\r\n\r\n if (groupFilters.length > 0) {\r\n queryParts.push(`$filter=${groupFilters.join(' and ')}`);\r\n }\r\n }\r\n\r\n // Handle order by\r\n if (this.model.orderBy?.length > 0) {\r\n const orderParts = this.model.orderBy\r\n .filter((order: OrderBy) => order.field && order.direction)\r\n .map((order: OrderBy) => `${order.field} ${order.direction}`);\r\n\r\n if (orderParts.length > 0) {\r\n queryParts.push(`$orderby=${orderParts.join(', ')}`);\r\n }\r\n }\r\n\r\n // Handle group by\r\n if (this.model.groupBy?.length > 0) {\r\n const groupParts = this.model.groupBy\r\n .filter((group: GroupBy) => group.field)\r\n .map((group: GroupBy) => group.field);\r\n\r\n if (groupParts.length > 0) {\r\n queryParts.push(`$groupby=${groupParts.join(',')}`);\r\n }\r\n }\r\n\r\n // Handle top\r\n if (this.model.top) {\r\n queryParts.push(`$top=${this.model.top}`);\r\n }\r\n\r\n // Handle skip\r\n if (this.model.skip) {\r\n queryParts.push(`$skip=${this.model.skip}`);\r\n }\r\n\r\n const query = queryParts.join('&');\r\n this.queryChange.emit(query);\r\n return query;\r\n }\r\n}\r\n","<div class=\"p-4 bg-white rounded-lg shadow-md\">\r\n <h2 class=\"text-xl font-semibold mb-4 text-gray-800\">OData Query Builder</h2>\r\n\r\n <formly-form\r\n [form]=\"form\"\r\n [model]=\"model\"\r\n [fields]=\"fields\"\r\n class=\"space-y-4\"\r\n ></formly-form>\r\n\r\n <div class=\"mt-6 flex justify-end space-x-3\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Reset\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-outlined\"\r\n (click)=\"form.reset()\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n label=\"Build Query\"\r\n icon=\"pi pi-cog\"\r\n (click)=\"buildQuery()\"\r\n ></button>\r\n </div>\r\n\r\n <div *ngIf=\"form.valid && form.dirty\" class=\"mt-6 p-4 bg-gray-50 rounded\">\r\n <h3 class=\"font-medium text-gray-700 mb-2\">Generated OData Query:</h3>\r\n <pre class=\"p-3 bg-gray-100 rounded text-sm overflow-x-auto\">{{ buildQuery() }}</pre>\r\n </div>\r\n</div>\r\n","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","// core/tokens/environment.token.ts\nimport { InjectionToken } from '@angular/core';\n\nexport const ENVIRONMENT = new InjectionToken<EnvironmentConfig>('ENVIRONMENT');\n\nexport interface EnvironmentConfig {\n production: boolean;\n apiUrl: string;\n [key: string]: any; // Optional extensibility\n}\n","import { InjectionToken } from '@angular/core';\nimport { Root } from '../models/Common';\n\nexport const CORE_OPTIONS = new InjectionToken<Root>('CORE_OPTIONS');\n\nexport function coreOptionsFactory({ ...options }: Root) {\n return {\n ...options,\n } as Root;\n}\n\n\n\n","import { HttpHeaders, HttpParameterCodec, HttpParams } from '@angular/common/http';\n\nexport namespace Rest {\n export type Config = Partial<{\n apiName: string;\n skipHandleError: boolean;\n skipAddingHeader: boolean;\n observe: Observe;\n httpParamEncoder?: HttpParameterCodec;\n }>;\n\n export const enum Observe {\n Body = 'body',\n Events = 'events',\n Response = 'response',\n }\n\n export const enum ResponseType {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n JSON = 'json',\n Text = 'text',\n }\n\n export type Params = HttpParams | { [param: string]: any };\n\n export interface Request<T> {\n body?: T;\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n method: string;\n params?: Params;\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n url: string;\n withCredentials?: boolean;\n }\n}\n","import { HttpClient, HttpRequest, HttpParameterCodec, HttpParams } from \"@angular/common/http\";\nimport { Injectable, Inject, inject } from \"@angular/core\";\nimport { Observable, throwError, catchError } from \"rxjs\";\nimport { Root } from \"../models/Common\";\nimport { ENVIRONMENT } from \"../tokens/environment.token\";\nimport { CORE_OPTIONS } from \"../tokens/options.token\";\nimport { Rest } from \"../models/rest\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RestService {\n private environment = inject(ENVIRONMENT);\n constructor(\n @Inject(CORE_OPTIONS) protected options: Root,\n protected http: HttpClient,\n // protected environment: EnvironmentService,\n // protected httpErrorReporter: HttpErrorReporterService,\n ) { }\n\n protected getApiFromStore(apiName: string | undefined): string {\n return this.environment.apiUrl;\n }\n\n handleError(err: any): Observable<any> {\n // this.httpErrorReporter.reportError(err);\n return throwError(() => err);\n }\n\n request<T, R>(\n request: HttpRequest<T> | Rest.Request<T>,\n config?: Rest.Config,\n api?: string,\n ): Observable<R> {\n // debugger\n config = config || ({} as Rest.Config);\n api = api || this.getApiFromStore(config.apiName);\n const { method, params, ...options } = request;\n const { observe = Rest.Observe.Body, skipHandleError } = config;\n const url = this.removeDuplicateSlashes( api + request.url);\n\n const httpClient: HttpClient = this.getHttpClient(config.skipAddingHeader ?? false);\n return httpClient\n .request<R>(method, url, {\n observe,\n ...(params && {\n params: this.getParams(params, config.httpParamEncoder),\n }),\n ...options,\n } as any)\n .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));\n }\n private getHttpClient(isExternal: boolean) {\n return /* isExternal ? this.externalHttp : */ this.http;\n }\n\n private getParams(params: Rest.Params, encoder?: HttpParameterCodec): HttpParams {\n const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {\n if (isUndefinedOrEmptyString(value)) return acc;\n if (value === null && !this.options.sendNullsAsQueryParam) return acc;\n acc[key] = value;\n return acc;\n }, {} as any);\n return encoder\n ? new HttpParams({ encoder, fromObject: filteredParams })\n : new HttpParams({ fromObject: filteredParams });\n }\n\n private removeDuplicateSlashes(url: string): string {\n return url.replace(/([^:]\\/)\\/+/g, '$1');\n }\n\n}\n\nexport function isUndefinedOrEmptyString(value: unknown): boolean {\n return value === undefined || value === '';\n}\n","\n\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { PaginatedResult } from '../models/Paginated';\nimport { RestService } from './rest.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseService {\n apiName = '';\n moduleName = '';\n constructor(public restService: RestService) {}\n get = (id: string) =>\n this.restService.request<any, any>({\n method: 'GET',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n },\n { apiName: this.apiName });\n\n getList = (input:any, endpoint?: string ) => {\n\n const params = Object.keys(input).reduce((acc:any, key) => {\n acc[key] = input[key];\n return acc;\n }, {});\n\n const url = endpoint ? endpoint : `/${this.moduleName}/${this.apiName}`;\n\n return this.restService.request<any, PaginatedResult<any>>({\n method: 'GET',\n url: url,\n params: params,\n }, { apiName: this.apiName })\n .pipe(\n map(response => response)\n );\n };\n create = (input: any) =>\n this.restService.request<any, any>({\n method: 'POST',\n url: `/${this.moduleName}/${this.apiName}`,\n body: input,\n },\n { apiName: this.apiName });\n update = (id: string, input: any) =>\n this.restService.request<any, any>({\n method: 'PUT',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n body: input,\n },\n { apiName: this.apiName });\n\n delete = (id: string) =>\n this.restService.request<any, void>({\n method: 'DELETE',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n },\n { apiName: this.apiName });\n\n\n}\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 '../../services/base.service';\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","import { FieldType, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { Component } from '@angular/core';\r\nimport { SafeHtmlPipe } from 'primeng/menu';\r\n\r\n@Component({\r\n imports:[SafeHtmlPipe],\r\n selector: 'formly-template',\r\n template: `<div [innerHTML]=\"to['innerHTML'] | safeHtml\"></div>`,\r\n})\r\nexport class FormlyTemplateType extends FieldType {}\r\n","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","\nexport class AttachmentDto {\n id?: number;\n binaryObjectId?: string;\n description?: string;\n mimeType?: string |any;\n fileName?: string;\n base64?: string;\n caption?: string;\n link?: string;\n}\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\n\nimport { FieldType } from '@ngx-formly/core';\n\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageService } from 'primeng/api';\n\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ENVIRONMENT } from '../../tokens/environment.token';\nimport { AttachmentDto } from '../../models/AttachmentDto';\n\n\n@Component({\n selector: 'attachment-type',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n FileUploadModule,\n ButtonModule,\n InputTextModule\n ],\n providers: [MessageService],\n templateUrl: './attachment-type.html',\n})\nexport class AttachmentTypeComponent extends FieldType {\n defaultAcceptTypes = '.pdf,application/pdf,image/*,.txt,text/plain,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel';\n\n maxFileSize = 1 * 1024 * 1024; // 1 MB\n tenantId = 0;\n private env = inject(ENVIRONMENT);\n\n constructor(private messageService: MessageService) {\n super();\n\n }\n get url():string{\n return this.env.apiUrl + (this.props['apiUrl'] ?? '/api/files');\n }\n get attachments(): AttachmentDto[] {\n return Array.isArray(this.formControl.value)\n ? this.formControl.value\n : (this.formControl.value ? [this.formControl.value] : []);\n }\n\n set attachments(value: AttachmentDto[]) {\n if (this.props['multiple']) {\n this.formControl.setValue(value);\n } else {\n this.formControl.setValue(value?.[0] || null);\n }\n }\n\n get attachment(): AttachmentDto | null {\n return Array.isArray(this.formControl.value)\n ? (this.formControl.value[0] || null)\n : this.formControl.value || null;\n }\n\n\n set attachment(value: AttachmentDto | null) {\n if (this.props['multiple']) {\n const arr = Array.isArray(this.formControl.value)\n ? [...this.formControl.value]\n : (this.formControl.value ? [this.formControl.value] : []);\n if (value) arr.push(value);\n this.formControl.setValue(arr);\n } else {\n this.formControl.setValue(value);\n }\n }\n\n async onUpload(event: any) {\n const files: File[] = event.files;\n const isMultiple = this.props['multiple'] ?? true;\n const allowedTypes = (this.props['accept'] as string) || '';\n\n for (const file of files) {\n if (file.size > this.maxFileSize) {\n this.messageService.add({\n severity: 'error',\n summary: 'خطأ',\n detail: `الملف \"${file.name}\" يتجاوز الحد الأقصى (1MB)`,\n });\n continue;\n }\n\n if (allowedTypes && !this.isFileTypeAllowed(file, allowedTypes)) {\n this.messageService.add({\n severity: 'error',\n summary: 'نوع الملف غير مسموح',\n detail: `الملف \"${file.name}\" ليس من الأنواع المسموحة`,\n });\n continue;\n }\n\n if (isMultiple && this.attachments.some(a => a.fileName === file.name)) {\n continue;\n }\n\n const base64 = await this.fileToBase64(file);\n const attachment = new AttachmentDto();\n attachment.fileName = file.name;\n attachment.mimeType = file.type;\n attachment.base64 = base64;\n\n if (isMultiple) {\n this.attachments = [...this.attachments, attachment];\n } else {\n this.attachment = attachment;\n }\n }\n }\n\n remove(index: number) {\n const copy = [...this.attachments];\n copy.splice(index, 1);\n this.attachments = copy;\n }\n\n choose(event: any, callback: any) {\n callback();\n }\n\n private fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve((reader.result as string).split(',')[1]);\n reader.onerror = err => reject(err);\n });\n }\n\n private isFileTypeAllowed(file: File, allowedTypes: string): boolean {\n const accepted = allowedTypes.split(',').map(t => t.trim());\n return accepted.some(type => {\n if (type === '*/*') return true;\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.split('/')[0] + '/');\n }\n return file.type === type;\n });\n }\n\n getFileLabel(mime: string): string {\n if (!mime) return 'FILE';\n if (mime.includes('pdf')) return 'PDF';\n if (mime.includes('excel') || mime.includes('spreadsheet')) return 'XLS';\n if (mime.includes('word')) return 'DOC';\n if (mime.includes('image')) return 'IMG';\n if (mime.includes('zip')) return 'ZIP';\n if (mime.includes('csv')) return 'CSV';\n if (mime.includes('text')) return 'TXT';\n return 'FILE';\n }\n\n getLabelClass(mime: string): string {\n if (mime.includes('pdf')) return 'bg-red-600 text-white';\n if (mime.includes('excel')) return 'bg-green-600 text-white';\n if (mime.includes('word')) return 'bg-blue-600 text-white';\n if (mime.includes('image')) return 'bg-yellow-500 text-white';\n if (mime.includes('zip')) return 'bg-pink-600 text-white';\n return 'bg-gray-400 text-white';\n }\n\n getIconColor(mime: string): string {\n if (mime.includes('pdf')) return 'text-red-400';\n if (mime.includes('excel')) return 'text-green-500';\n if (mime.includes('word')) return 'text-blue-500';\n if (mime.includes('image')) return 'text-yellow-500';\n if (mime.includes('zip')) return 'text-pink-500';\n return 'text-gray-400';\n }\n\n getFileIcon(mime: string): string {\n if (mime.includes('pdf')) return 'pi pi-file-pdf';\n if (mime.includes('excel') || mime.includes('spreadsheet')) return 'pi pi-file-excel';\n if (mime.includes('word')) return 'pi pi-file-word';\n if (mime.includes('image')) return 'pi pi-image';\n if (mime.includes('zip')) return 'pi pi-file-zip';\n return 'pi pi-file';\n }\n}\n","<p-fileUpload\n name=\"file\"\n [customUpload]=\"true\"\n [auto]=\"true\"\n [multiple]=\"props['multiple'] !== false\"\n [maxFileSize]=\"maxFileSize\"\n [accept]=\"props['accept'] || defaultAcceptTypes\"\n (uploadHandler)=\"onUpload($event)\"\n chooseLabel=\"اسحب الملفات أو انقر للإرفاق\"\n class=\"w-full\"\n>\n <!-- Header Template -->\n <ng-template pTemplate=\"header\" let-chooseCallback=\"chooseCallback\">\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\n <div class=\"flex gap-2\">\n <p-button\n (click)=\"choose($event, chooseCallback)\"\n icon=\"pi pi-plus\"\n [rounded]=\"true\"\n [outlined]=\"true\"\n styleClass=\"border border-green-600 text-green-600 hover:bg-green-100 bg-white shadow-sm !rounded-full\"\n ></p-button>\n </div>\n </div>\n </ng-template>\n\n <!-- Content Template -->\n <ng-template pTemplate=\"content\">\n <!-- Multi mode -->\n <div class=\"p-2 flex flex-wrap gap-4\">\n <div\n *ngFor=\"let file of attachments; let i = index\"\n style=\"height: 7rem;\"\n class=\"relative w-24 h-28 bg-white border rounded-lg shadow-sm flex flex-col items-center justify-center\"\n >\n <!-- File type label -->\n <div\n class=\"absolute top-0 left-0 px-2 py-0.5 text-[10px] font-bold uppercase rounded-br-md shadow-sm text-white\"\n [ngClass]=\"getLabelClass(file.mimeType)\"\n >\n {{ getFileLabel(file.mimeType) }}\n </div>\n\n <!-- Remove button -->\n <button\n style=\"top: 3px;right: 3px;\"\n class=\"absolute top-1 right-1 text-red-500 hover:text-red-700\"\n (click)=\"remove(i)\"\n title=\"حذف\"\n >\n <i class=\"pi pi-times text-xs\"></i>\n </button>\n\n <!-- Center icon -->\n <i\n [class]=\"getFileIcon(file.mimeType)\"\n [ngClass]=\"getIconColor(file.mimeType)\"\n class=\"!text-4xl text-center mt-5\"\n ></i>\n\n <!-- File name -->\n <div style=\"max-width: 85%;\" class=\"mt-1 text-[11px] text-gray-600 truncate max-w-[85%] text-center\">\n\n <div class=\"truncate\">{{ file.fileName }}</div>\n </div>\n\n <!-- Download icon -->\n <a\n *ngIf=\"file.binaryObjectId\"\n style=\"bottom: 3px;right: 3px;\"\n class=\"absolute bottom-1 right-1 text-gray-400 hover:text-blue-500\"\n [href]=\"url+'/' + file.binaryObjectId\"\n target=\"_blank\"\n download\n title=\"تحميل\"\n >\n <i class=\"pi pi-download text-xs\"></i>\n </a>\n </div>\n</div>\n\n <!-- Single mode -->\n <div *ngIf=\"props['multiple'] === false && attachment\">\n <div class=\"flex items-center justify-between p-2 border-b\">\n <span>{{ attachment.fileName }}</span>\n <p-button\n icon=\"pi pi-times\"\n class=\"p-button-rounded p-button-text text-red-600\"\n (click)=\"remove(0)\"\n ></p-button>\n </div>\n <!-- Caption input if allowed -->\n <div *ngIf=\"props['allowCaption']\" class=\"mt-1\">\n <input\n pInputText\n type=\"text\"\n class=\"w-full border rounded px-2 py-1 text-sm\"\n placeholder=\"أضف وصفاً\"\n (change)=\"attachment = attachment\"\n [(ngModel)]=\"attachment.caption\"\n />\n </div>\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template pTemplate=\"empty\">\n <div\n *ngIf=\"(props['multiple'] !== false && (!attachments || attachments.length === 0)) ||\n (props['multiple'] === false && !attachment)\"\n class=\"border-2 border-dashed rounded-md p-4 bg-gray-50 hover:bg-gray-100 transition flex align-items-center justify-content-center flex-column\"\n >\n <i class=\"pi pi-cloud-upload border-2 rounded p-5 text-8xl text-400 border-400\"></i>\n <p class=\"mt-4 mb-0\">اسحب وأفلِت الملفات هنا للتحميل.</p>\n </div>\n </ng-template>\n</p-fileUpload>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MenuItem } from 'primeng/api';\nimport { RouterModule } from '@angular/router'; // <--- أضف هذا الاستيراد\n\n@Component({\n selector: 'app-breadcrumb',\n standalone: true,\n imports: [CommonModule, RouterModule], // <--- أضف RouterModule هنا\n template: `\n <nav class=\"overflow-x-auto\">\n <ul class=\"flex items-center text-white text-sm font-medium\" role=\"list\">\n <li class=\"relative z-10\">\n <a\n [routerLink]=\"['/']\"\n class=\"flex items-center h-10 px-4 pr-6 text-white bg-primary-500 hover:bg-teal-500 active:bg-teal-600 transition-all duration-150 rounded-r-md\"\n style=\"clip-path: polygon(12px 0, 100% 0, 100% 100%, 12px 100%, 0% 50%)\"\n >\n <i class=\"pi pi-home mr-2 rtl:ml-2 rtl:mr-0 text-base\"></i>\n </a>\n </li>\n <li\n *ngFor=\"let item of breadcrumb; let i = index; let first = first; let last = last\"\n class=\"relative z-10\"\n >\n\n <ng-container *ngIf=\"item.routerLink && !last; else textOnly\">\n <a\n [routerLink]=\"item.routerLink\"\n class=\"flex items-center h-10 px-4 pr-6 text-white bg-primary-500 hover:bg-teal-500 active:bg-teal-600 transition-all duration-150\"\n [ngClass]=\"{\n 'bg-primary-500': i % 2 === 0,\n 'bg-primary-600': i % 2 === 1,\n 'rounded-l-md pl-5': first,\n 'rounded-r-md pr-5': last\n }\"\n style=\"clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)\"\n >\n <i *ngIf=\"item.icon\" [class]=\"item.icon + ' mr-2 text-base'\"></i>\n {{ item.label }}\n </a>\n </ng-container>\n <ng-template #textOnly>\n <span\n class=\"flex items-center h-10 px-4 pr-6 text-white\"\n [ngClass]=\"{\n 'bg-primary-500': i % 2 === 0,\n 'bg-primary-600': i % 2 === 1,\n 'rounded-l-md pl-5': first,\n 'rounded-r-md pr-5': last\n }\"\n style=\"clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)\"\n >\n <i *ngIf=\"item.icon\" [class]=\"item.icon + ' mr-2 text-base'\"></i>\n {{ item.label }}\n </span>\n </ng-template>\n </li>\n </ul>\n </nav>\n `,\n})\nexport class BreadcrumbComponent {\n @Input() breadcrumb: MenuItem[] | any = [];\n}\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { FormsModule, NgModel } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ColorPickerModule } from 'primeng/colorpicker';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'formly-field-color-picker',\n imports: [CommonModule, ColorPickerModule,FormsModule,TranslateModule],\n template: `\n\n\n <div class=\"flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1\" style=\" border-radius: var(--p-inputtext-border-radius);\">\n <p-colorPicker\n [style.direction]=\"'ltr'\"\n [(ngModel)]=\"formControl.value\"\n (ngModelChange)=\"formControl.setValue($event)\"\n [style]=\"to['style']\"\n [disabled]=\"to.disabled ?? false\"\n [inline]=\"to['inline'] ?? false\"\n [format]=\"to['format'] ?? 'hex'\"\n [tabindex]=\"'' + (to.tabindex ?? 0)\"\n [id]=\"id\"\n [name]=\"to['name'] || key\"\n\n\n ></p-colorPicker>\n <!-- appendTo=\"body\" -->\n <label [for]=\"id\" class=\"text-sm text-gray-800 mr-2 whitespace-nowrap\">\n {{ (to.label ?? '') | translate}}\n </label>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorPickerComponent extends FieldType<FieldTypeConfig> {}\n","// src/app/shared/column-settings-popover/column-settings-popover.component.ts\nimport { Component, Input, Output, EventEmitter, ViewChild, OnInit, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PopoverModule } from 'primeng/popover';\nimport { DividerModule } from 'primeng/divider';\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ColumnDef } from '../../models/Columndef';\nimport { OrderListModule } from 'primeng/orderlist';\nimport { CheckboxModule, Checkbox } from 'primeng/checkbox';\n\ntype PopoverColumnDef<T> = ColumnDef<T> & { isSelected?: boolean };\n\n@Component({\n  selector: 'lib-column-settings-popover',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    PopoverModule,\n    DividerModule,\n    ButtonModule,\n    TooltipModule,\n    TranslateModule,\n    OrderListModule,\n    CheckboxModule,\n    Checkbox\n  ],\n  templateUrl: './column-settings-popover.html',\n  styleUrls: ['./column-settings-popover.css']\n})\nexport class ColumnSettingsPopoverComponent<T extends { [key: string]: any }> implements OnInit, OnChanges {\n  @ViewChild('op') op: any;\n\n  @Input() fixedColumns: ColumnDef<T>[] = [];\n  @Input() toggleableColumns: ColumnDef<T>[] = [];\n\n  // تم إزالة @Input() tableId لأنه لن يستخدم هنا للحفظ\n  @Input() tableId: string = 'defaultTable';\n\n\n  _displayOrderListColumns: PopoverColumnDef<T>[] = [];\n  private _selectedToggleableColumns: ColumnDef<T>[] = [];\n\n  @Input()\n  get selectedToggleableColumns(): ColumnDef<T>[] {\n    return this._selectedToggleableColumns;\n  }\n  set selectedToggleableColumns(val: ColumnDef<T>[]) {\n    if (!this.areColumnsEqual(this._selectedToggleableColumns, val)) {\n      this._selectedToggleableColumns = val;\n      this.syncDisplayColumnsWithSelectedInput();\n    }\n  }\n\n  @Output() selectedToggleableColumnsChange = new EventEmitter<ColumnDef<T>[]>();\n\n  // تم إزالة @Output() columnRemoved و @Output() popoverHidden لأن selectedToggleableColumnsChange يغني عنهما\n\n  constructor(private translate: TranslateService) {}\n\n  ngOnInit(): void {\n    console.log('ColumnSettingsPopoverComponent: ngOnInit called.');\n    // في ngOnInit، نقوم فقط بتهيئة الأعمدة للعرض بناءً على المدخلات\n    this.initializeDisplayColumns();\n    this.syncDisplayColumnsWithSelectedInput();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // عند تغير toggleableColumns، نعيد تهيئة القائمة للعرض\n    if (changes['toggleableColumns']) {\n      console.log('ColumnSettingsPopoverComponent: toggleableColumns input changed.');\n      this.initializeDisplayColumns();\n    }\n    // عند تغير selectedToggleableColumns من المكون الأب، نقوم بمزامنة حالتها\n    if (changes['selectedToggleableColumns']) {\n      console.log('ColumnSettingsPopoverComponent: selectedToggleableColumns input changed (from parent).');\n      this.syncDisplayColumnsWithSelectedInput();\n    }\n  }\n // ⭐ Getter/Setter لمربع الاختيار \"تحديد الكل\" ⭐\n  get allColumnsSelected(): boolean {\n    if (!this._displayOrderListColumns || this._displayOrderListColumns.length === 0) {\n      return false;\n    }\n    return this._displayOrderListColumns.every(col => col.isSelected);\n  }\n\n  set allColumnsSelected(value: boolean) {\n    this._displayOrderListColumns.forEach(col => col.isSelected = value);\n    this.emitCurrentSelection();\n  }\n\n  // ⭐ دالة لتهيئة _displayOrderListColumns من toggleableColumns ⭐\n  private initializeDisplayColumns(): void {\n    this._displayOrderListColumns = this.toggleableColumns.map(col => ({\n      ...col,\n      isSelected: false // نترك isSelected كـ false مؤقتاً\n    }));\n  }\n\n  // دالة لمزامنة حالة العرض مع الأعمدة المحددة من المكون الأب\n  private syncDisplayColumnsWithSelectedInput(): void {\n    if (!this._displayOrderListColumns || this._displayOrderListColumns.length === 0) {\n      return;\n    }\n\n    const selectedFieldsSet = new Set(this._selectedToggleableColumns.map(col => col.field));\n\n    // تحديث خاصية isSelected بناءً على selectedFieldsSet\n    this._displayOrderListColumns.forEach(col => {\n      col.isSelected = selectedFieldsSet.has(col.field);\n    });\n\n    // إعادة ترتيب القائمة لتكون الأعمدة المحددة في الأعلى\n    const orderedSelected = this._displayOrderListColumns\n      .filter(col => selectedFieldsSet.has(col.field))\n      .sort((a, b) => {\n        return Array.from(selectedFieldsSet).indexOf(a.field) - Array.from(selectedFieldsSet).indexOf(b.field);\n      });\n\n    const orderedUnselected = this._displayOrderListColumns.filter(col => !selectedFieldsSet.has(col.field));\n\n    this._displayOrderListColumns = [...orderedSelected, ...orderedUnselected];\n    console.log('ColumnSettingsPopoverComponent: _displayOrderListColumns synced with selectedToggleableColumns input:', this._displayOrderListColumns);\n  }\n\n  toggle(event: Event): void {\n    this.op.toggle(event);\n  }\n\n  hide(): void {\n    this.op.hide();\n  }\n\n  // عند تغيير حالة أي مربع اختيار\n  onColumnVisibilityChange(column: PopoverColumnDef<T>): void {\n    this.emitCurrentSelection();\n  }\n\n  // عند إعادة ترتيب القائمة\n  onOrderListReorder(event: any): void {\n    this.emitCurrentSelection();\n  }\n\n  // دالة لإرسال التغييرات إلى المكون الأب\n  private emitCurrentSelection(): void {\n    const currentSelected = this._displayOrderListColumns\n      .filter(col => col.isSelected)\n      .map(col => {\n        const { isSelected, ...rest } = col;\n        return rest as ColumnDef<T>;\n      });\n\n    this.selectedToggleableColumnsChange.emit(currentSelected);\n  }\n\n  private areColumnsEqual(cols1: ColumnDef<T>[], cols2: ColumnDef<T>[]): boolean {\n    if (cols1.length !== cols2.length) {\n      return false;\n    }\n    // التحقق من أن العناصر هي نفسها وبنفس الترتيب\n    for (let i = 0; i < cols1.length; i++) {\n      if (cols1[i].field !== cols2[i].field) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n","<p-popover #op appendTo=\"body\" styleClass=\"w-80\">\n\n\n\n\n <!-- ⭐ مربع اختيار \"تحديد الكل\" ⭐ -->\n <div class=\"flex items-center mb-3\">\n <p-checkbox\n [(ngModel)]=\"allColumnsSelected\"\n [binary]=\"true\"\n inputId=\"selectAllColumns\"\n ></p-checkbox>\n <label for=\"selectAllColumns\" class=\"ml-2 cursor-pointer font-medium text-color-secondary\">\n {{ 'COMMON.SELECT_ALL' | translate }}\n </label>\n </div>\n\n <p-orderList\n [value]=\"_displayOrderListColumns\"\n header=\"{{ 'COMMON.REORDER_AND_SELECT_COLUMNS' | translate }}\"\n [listStyle]=\"{'height':'250px'}\"\n [responsive]=\"true\"\n [dragdrop]=\"true\"\n (onReorder)=\"onOrderListReorder($event)\"\n styleClass=\"w-full\"\n >\n <ng-template let-col pTemplate=\"item\">\n <div class=\"p-2 border rounded-md flex items-center justify-between w-full\">\n <!-- مربع اختيار للتحكم في الرؤية -->\n <p-checkbox\n [(ngModel)]=\"col.isSelected\"\n (ngModelChange)=\"onColumnVisibilityChange(col)\"\n [binary]=\"true\"\n class=\"mr-4\"\n ></p-checkbox>\n <span class=\"flex-grow\">{{ col.header | translate }}</span>\n <i class=\"pi pi-bars text-surface-400 cursor-grab\"></i> <!-- أيقونة السحب -->\n </div>\n </ng-template>\n </p-orderList>\n\n\n</p-popover>\n","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","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","import { CommonModule } from '@angular/common';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\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 TranslateModule\n ],\n})\nexport class FormlyAvatarLabelComponent extends FieldType {\n\n override get to(): AvatarLabelProps {\n return this.field.props as AvatarLabelProps;\n }\n}\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 { TranslateModule } from '@ngx-translate/core';\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 CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule\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","// formly-selection-button.component.ts\n\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { PopoverModule } from 'primeng/popover';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Popover } from 'primeng/popover';\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 CommonModule,\n ButtonModule,\n PopoverModule,\n TranslateModule\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 <div *ngIf=\"props.popoverHeader\" class=\"text-xs text-gray-500 mb-2\">\n {{ props.popoverHeader | translate }}\n </div>\n\n <div\n *ngFor=\"let option of props.options || []\"\n class=\"flex items-center p-2 hover:bg-gray-100 cursor-pointer rounded\"\n (click)=\"onSelect(option[props.optionValue])\"\n >\n <i *ngIf=\"option.icon\" [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 <span class=\"text-xs text-gray-500\" *ngIf=\"option.description\">{{ option.description | translate }}</span>\n </div>\n\n <i *ngIf=\"formControl.value === option[props.optionValue]\" class=\"pi pi-check ml-auto text-blue-500 text-lg\"></i>\n </div>\n\n <div *ngIf=\"!(props.options?.length)\" class=\"p-3 text-gray-500\">\n {{ 'COMMON.NO_DATA' | translate }}\n </div>\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: TranslateService) {\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","// formly-split-button.component.ts\n\nimport { Component } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { MenuItem } from 'primeng/api';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\n\ninterface SplitButtonProps {\n label: string;\n icon?: string;\n items: MenuItem[];\n onClick?: () => void;\n // إضافة أي خصائص أخرى تحتاجها من p-splitButton\n}\n\n@Component({ selector: 'formly-split-button-type',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule, SplitButtonModule,\n FormsModule,\n ReactiveFormsModule\n ],\n template: `\n <p-splitButton\n [label]=\"props.label\"\n [icon]=\"props.icon\"\n [model]=\"props.items\"\n (onClick)=\"props.onClick?.()\"\n class=\"p-button-sm p-button-text p-button-plain\"\n ></p-splitButton>\n `,\n})\nexport class FormlySplitButtonComponent extends FieldType<FieldTypeConfig<SplitButtonProps>> {\n\n}\n","import { Component } from '@angular/core';\nimport { FieldType, FieldTypeConfig,FormlyAttributes } from '@ngx-formly/core'; // ✅ استيراد FormlyModule\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon'; // ✅ استيراد وحدة p-inputgroup-addon\nimport { InputGroupModule } from 'primeng/inputgroup'; // ✅ استيراد وحدة p-inputgroup\n\n@Component({\n standalone: true, // ✅ يجب إضافة هذه الخاصية\n selector: 'lib-formly-username-with-domain',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n InputTextModule,\n InputGroupModule, // ✅ إضافة InputGroupModule\n InputGroupAddonModule, // ✅ إضافة InputGroupAddonModule\n FormlyAttributes\n ],\n template: `\n <input\n type=\"text\"\n pInputText\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n (blur)=\"onBlur()\"\n />\n `,\n})\nexport class UsernameWithDomainComponent extends FieldType<FieldTypeConfig> {\n // ✅ إضافة ثابت لاسم النطاق لتسهيل التغيير\n readonly domain = '@ELITESOFTSYS.COM';\n\n // ✅ دالة يتم استدعاؤها عند تهيئة الحقل\n ngOnInit() {\n const currentValue = this.formControl.value;\n\n // إذا كانت القيمة تحتوي على النطاق، قم بإزالته\n if (currentValue && typeof currentValue === 'string' && currentValue.endsWith(this.domain)) {\n const username = currentValue.replace(this.domain, '');\n this.formControl.setValue(username);\n }\n }\n\n // ✅ هذه الدالة يتم استدعاؤها عند خروج المستخدم من الحقل\n\n onBlur() {\n const currentValue = this.formControl.value;\n\n // إذا كانت القيمة لا تحتوي على النطاق، قم بإضافته\n if (currentValue && typeof currentValue === 'string' && !currentValue.endsWith(this.domain)) {\n this.formControl.setValue(currentValue + this.domain);\n }\n }\n}\n\n","import { Component, EventEmitter, Injector, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AutoCompleteModule, AutoComplete } from 'primeng/autocomplete';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { finalize } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { BaseService } from '../../services/base.service';\n\n@Component({\n selector: 'app-generic-autocomplete',\n template: `\n <p-autoComplete\n #autoComp\n [ngModel]=\"selectedItem\"\n (ngModelChange)=\"onSelectionChange($event)\"\n [suggestions]=\"options_\"\n (completeMethod)=\"search($event)\"\n [multiple]=\"multiple\"\n [optionLabel]=\"labelField || 'name'\"\n [dropdown]=\"true\"\n [forceSelection]=\"true\"\n [placeholder]=\"(placeholder || '') | translate\"\n dropdownMode=\"current\"\n appendTo=\"self\"\n class=\"w-full\"\n [showEmptyMessage]=\"true\"\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\n [showTransitionOptions]=\"'0ms'\"\n ></p-autoComplete>\n `,\n providers: [BaseService],\n standalone: true, // تأكد أن المكون مستقل\n imports: [\n FormsModule,\n AutoCompleteModule,\n CommonModule,\n TranslateModule,\n ]\n})\nexport class GenericAutocompleteComponent implements OnInit {\n @ViewChild('autoComp') autoComp!: AutoComplete;\n\n // الخصائص المدخلة (Inputs)\n @Input() serviceName!: string;\n @Input() listEndpoint?: string;\n @Input() labelField?: string = 'name';\n @Input() valueField?: string = 'id';\n @Input() multiple: boolean = false;\n @Input() placeholder?: string;\n @Input() fixedFilters?: Record<string, any>;\n @Input() value: any;\n @Input() loadOnInit: boolean = false;\n\n // الأحداث المخرجة (Outputs)\n @Output() selectionChange = new EventEmitter<any>();\n\n options_: any[] = [];\n selectedItem: any;\n loading = false;\n\n api!: BaseService;\n\n constructor(private svc: BaseService) {}\n\n ngOnInit() {\n\n this.api = this.svc;\n this.api.apiName = this.serviceName;\n\n // ✅ إضافة الشرط الجديد للتحميل التلقائي عند تهيئة المكون\n if (this.loadOnInit) {\n this.search({ query: '' });\n }\n }\n\n onSelectionChange(val: any) {\n this.selectedItem = val;\n this.selectionChange.emit(val);\n }\n\n search(event: { query: string }) {\n const q = event.query?.toString().toLowerCase() || '';\n this.loading = true;\n this.options_ = [];\n\n const searchParams = {\n [this.labelField!]: q,\n ...this.fixedFilters,\n };\n\n const listEndpoint = this.listEndpoint;\n this.api.getList(searchParams, listEndpoint)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (res: any) => {\n this.options_ = res.items ?? res ?? [];\n setTimeout(() => this.autoComp?.show(), 0);\n },\n error: () => {\n this.options_ = [];\n },\n });\n }\n\n getEmptyMessage(): string {\n if (this.loading) {\n return 'LOADING_DATA_MESSAGE';\n } else if (this.options_.length === 0) {\n return 'NO_RESULTS_FOUND';\n }\n return '';\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\r\nimport { AvatarModule } from 'primeng/avatar';\r\n\r\n@Component({\r\n selector: 'formly-field-avatar-image',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n AvatarModule\r\n ],\r\n template: `\r\n <div [ngClass]=\"field.props['containerClass'] || ''\">\r\n <label *ngIf=\"field.props.label && field.props['hideLabel'] !== true\" [for]=\"id\" class=\"p-formgroup-inline block text-sm font-medium text-gray-700\">\r\n {{ field.props.label }}\r\n <span *ngIf=\"field.props.required\" class=\"text-red-500\">*</span>\r\n </label>\r\n <div class=\"mt-1 flex items-center\">\r\n <p-avatar\r\n [image]=\"displayValue\"\r\n [size]=\"field.props['size'] || 'large'\"\r\n [shape]=\"field.props['shape'] || 'circle'\"\r\n [style]=\"field.props['avatarStyle'] || ''\"\r\n [styleClass]=\"field.props['avatarClass'] || ''\"\r\n (onClick)=\"field.props['onClick'] && field.props['onClick']($event)\"\r\n\r\n ></p-avatar>\r\n <!-- (onImageError)=\"field.props['onImageError'] && field.props['onImageError']($event)\" -->\r\n <div *ngIf=\"field.props['showPlaceholder']\" class=\"ml-4\">\r\n <span class=\"text-gray-500\">{{ field.props['placeholderText'] || 'No image selected' }}</span>\r\n </div>\r\n </div>\r\n <small *ngIf=\"showError\" class=\"mt-1 text-sm text-red-600\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </small>\r\n <small *ngIf=\"field.props.description\" class=\"mt-1 text-sm text-gray-500\">{{ field.props.description }}</small>\r\n </div>\r\n `,\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FormlyAvatarImageComponent extends FieldType<FieldTypeConfig> {\r\n get type() {\r\n return this.field.type as string;\r\n }\r\n get displayValue(): any {\r\n const value = this.formControl?.value;\r\n const baseUrl = this.field.props['baseUrl'] || '';\r\n const defaultImage = this.field.props['defaultImage'] || '';\r\n\r\n if (value) {\r\n return baseUrl ? `${baseUrl}${value}` : value;\r\n }\r\n\r\n return defaultImage;\r\n}\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { MenuItem } from 'primeng/api';\n\ntype ButtonVariant = 'text' | 'outlined' | 'raised' | 'rounded';\ntype ButtonSeverity = 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' ;\ntype ButtonSize = 'small' | 'normal' | 'large';\ntype IconPosition = 'left' | 'right';\n\n@Component({\n selector: 'lib-generic-button',\n standalone: true,\n imports: [ CommonModule , ButtonModule, SplitButtonModule,/* HasPermissionDirective */],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './generic-button.html',\n})\nexport class GenericButton {\n\n // permissionChecker = inject(PermissionCheckerService);\n\n // لو وُجدت هذه المصفوفة، نُستخدم splitButton\n @Input() model?: MenuItem[];\n\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() icon: string = '';\n @Input() label: string = '';\n @Input() variant: ButtonVariant = 'raised';\n @Input() severity: ButtonSeverity = 'primary';\n @Input() size: ButtonSize = 'normal';\n @Input() iconPosition: IconPosition = 'left';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() ariaLabel?: string;\n @Input() extraClasses = ''; // لأي Tailwind إضافي\n @Input() permission?: string;\n @Output() clicked = new EventEmitter<void>();\n @Output() itemClick = new EventEmitter<any>();\n\n\n // خريطة أحجام\n private sizeMap: Record<ButtonSize,string> = {\n small: 'px-2 py-1 text-sm',\n normal: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n };\n\n // خريطة ألوان للـ raised و rounded\n private colorMap: Record<ButtonSeverity,string> = {\n primary: 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 text-white',\n secondary: 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500 text-white',\n success: 'bg-green-600 hover:bg-green-700 focus:ring-green-500 text-white',\n info: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n warning: 'bg-yellow-500 hover:bg-yellow-600 focus:ring-yellow-400 text-white',\n danger: 'bg-red-600 hover:bg-red-700 focus:ring-red-500 text-white',\n };\n\n // خريطة حدوده للـ outlined\n private outlinedMap: Record<ButtonSeverity,string> = {\n primary: 'border border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n secondary: 'border border-gray-600 text-gray-600 hover:bg-gray-50 focus:ring-gray-500',\n success: 'border border-green-600 text-green-600 hover:bg-green-50 focus:ring-green-500',\n info: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n warning: 'border border-yellow-500 text-yellow-500 hover:bg-yellow-50 focus:ring-yellow-400',\n danger: 'border border-red-600 text-red-600 hover:bg-red-50 focus:ring-red-500',\n };\n\n get twClasses(): string {\n const base = [\n 'inline-flex items-center justify-center font-medium',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 transition',\n this.sizeMap[this.size]\n ];\n // variant-specific\n if (this.variant === 'outlined') {\n base.push(this.outlinedMap[this.severity]);\n } else {\n base.push(this.colorMap[this.severity]);\n }\n if (this.variant === 'text') {\n base.push('bg-transparent hover:bg-gray-100 focus:ring-gray-200 text-gray-700');\n }\n if (this.variant === 'rounded') {\n base.push('rounded-full');\n } else {\n base.push('rounded-md');\n }\n if (this.disabled || this.loading) {\n base.push('opacity-50 cursor-not-allowed');\n }\n if (this.extraClasses) {\n base.push(this.extraClasses);\n }\n return base.join(' ');\n }\n\n onClick() {\n if (!this.disabled && !this.loading) {\n this.clicked.emit();\n }\n }\n\n onItemClick(evt: any) {\n this.itemClick.emit(evt);\n }\n\n // دالة مساعدة لدمج حالة التعطيل مع حالة الصلاحية\n // get isDisabledOrLoadingOrNoPermission(): boolean {\n // // إذا كان الزر معطلاً بشكل صريح أو في حالة تحميل، فهو معطل\n // if (this.disabled || this.loading) {\n // return true;\n // }\n // // إذا تم تحديد صلاحية للزر، تحقق منها\n // if (this.permission) {\n // return !this.permissionChecker.isGranted(this.permission);\n // }\n // // إذا لم يتم تحديد صلاحية، فالزر ليس معطلاً بسبب الصلاحيات\n // return false;\n // }\n\n}\n","\n<!-- generic-button.component.html -->\n <!-- *hasPermission=\"permission\" -->\n<ng-container >\n <ng-container *ngIf=\"model?.length; else simpleBtn\">\n <!-- حالة الـ splitButton -->\n <p-splitButton\n [model]=\"model\"\n [icon]=\"icon\"\n [label]=\"label\"\n [styleClass]=\"twClasses\"\n [disabled]=\"disabled || loading\" (onClick)=\"onClick()\"\n (onClick)=\"onClick()\"\n (onItemClick)=\"onItemClick($event)\"\n ></p-splitButton>\n </ng-container>\n\n <ng-template #simpleBtn>\n <!-- حالة الزرّ العادي -->\n <button\n [attr.type]=\"type\"\n pButton\n [icon]=\"loading ? 'pi pi-spin pi-spinner' : icon\"\n [label]=\"label\"\n [ngClass]=\"twClasses\"\n [attr.aria-label]=\"ariaLabel || label\"\n [disabled]=\"disabled || loading\" (onClick)=\"onClick()\"\n (click)=\"onClick()\"\n >\n\n <!-- محتوى مخصّص -->\n <ng-content *ngIf=\"!label && !icon && !loading\"></ng-content>\n </button>\n </ng-template>\n </ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActionDef } from '../../models/Actiondef';\nimport { ColumnDef } from '../../models/Columndef';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { MenuModule } from 'primeng/menu';\n\n@Component({\n selector: 'lib-generic-card',\n imports: [\n CommonModule,\n ButtonModule,\n MenuModule,\n TranslateModule,\n FormsModule,\n ],\n templateUrl: './generic-card.html',\n styleUrl: './generic-card.css'\n})\nexport class GenericCard <T extends { [key: string]: any }> implements OnInit{\n\n @Input() data: T[] = [];\n @Input() columns: ColumnDef<T>[] = [];\n @Input() loading = false;\n @Input() actions: ActionDef<T>[] = [];\n @Input() actionsMode: 'buttons' | 'menu' = 'buttons';\n @Input() showOperations: boolean = true;\n\n // Added inputs for selection mirroring the table component\n @Input() rowSelectable: boolean = false;\n @Input() showRowSelectionCheckbox: boolean = false;\n @Input() paginator: boolean = false; // Indicates if pagination is externally managed\n\n // Row class function, mirroring the table component\n @Input() rowClassFn: (rowData: any) => string = () => '';\n\n @Output() action = new EventEmitter<{ name: string; row: T }>();\n\n\n _selection: T | T[] | null = null;\n @Input()\n get selection(): T | T[] | null {\n return this._selection;\n }\n set selection(val: T | T[] | null) {\n this._selection = val;\n // No emit here, emit only from actual user interaction methods\n }\n\n @Output() selectionChange = new EventEmitter<T | T[] | null>();\n @Output() rowSelect = new EventEmitter<T>();\n // Note: onLazyLoad is not directly applicable as the card component doesn't have internal pagination UI.\n // The parent component should manage data slicing and pass the correct 'data' array.\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n // Initialize selection if needed, e.g., if a default selection should be present\n }\n\n /**\n * Generates menu items for the action menu.\n * @param row The data row for which to generate actions.\n * @returns An array of PrimeNG MenuItem objects.\n */\n getMenuItems(row: T): MenuItem[] {\n return this.actions.map(act => ({\n label: act.label,\n icon: act.icon,\n command: () => this.action.emit({ name: act.name, row }),\n styleClass: act.styleClass\n }));\n }\n\n /**\n * Handles click events on a clickable cell.\n * @param col The ColumnDef of the clicked column.\n * @param rowData The data row of the clicked cell.\n * @param event The mouse event.\n */\n handleCellClick(col: ColumnDef<any>, rowData: any, event: MouseEvent): void {\n event.stopPropagation(); // Prevent card selection if applicable\n if (col.clickAction) {\n col.clickAction(rowData, event);\n }\n }\n\n /**\n * Handles mouse enter events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellHover(col: ColumnDef<T>, row: T, event: MouseEvent): void {\n event.stopPropagation();\n col.onCellMouseEnter?.(row, event);\n }\n\n /**\n * Handles mouse leave events on a hoverable cell.\n * @param col The ColumnDef of the hovered column.\n * @param rowData The data row of the hovered cell.\n * @param event The mouse event.\n */\n onCellLeave(col: ColumnDef<T>, row: T, event: MouseEvent): void {\n event.stopPropagation();\n col.onCellMouseLeave?.(row, event);\n }\n\n /**\n * Handles click on the entire card for row selection (if not using checkboxes).\n * @param item The data item associated with the clicked card.\n */\n handleCardClick(item: T): void {\n if (this.rowSelectable && !this.showRowSelectionCheckbox) {\n // Single selection mode logic\n if (this._selection === item) {\n this._selection = null; // Deselect if already selected\n } else {\n this._selection = item; // Select the current item\n }\n this.selectionChange.emit(this._selection);\n this.rowSelect.emit(item); // Emit the selected item\n }\n }\n\n /**\n * Checks if an item is currently selected.\n * Used for checkbox binding.\n * @param item The item to check.\n * @returns True if the item is selected, false otherwise.\n */\n isItemSelected(item: T): boolean {\n if (!this._selection) {\n return false;\n }\n if (Array.isArray(this._selection)) {\n // Check if item exists in the array (for multi-select)\n return (this._selection as T[]).includes(item);\n }\n // Single selection mode\n return this._selection === item;\n }\n\n /**\n * Toggles the selection state of an item.\n * Used when a checkbox is clicked.\n * @param item The item to toggle.\n * @param event The change event from the checkbox.\n */\n toggleItemSelection(item: T, event: Event): void {\n event.stopPropagation(); // Prevent card click event from firing\n const isChecked = (event.target as HTMLInputElement).checked;\n\n if (this.showRowSelectionCheckbox) {\n // Multi-selection logic\n let currentSelectionArray = Array.isArray(this._selection) ? [...this._selection] : [];\n\n if (isChecked) {\n if (!currentSelectionArray.includes(item)) {\n currentSelectionArray.push(item);\n }\n } else {\n currentSelectionArray = currentSelectionArray.filter(selectedItem => selectedItem !== item);\n }\n this._selection = currentSelectionArray;\n } else if (this.rowSelectable) {\n // Single selection logic (if no checkboxes, this block would be redundant with handleCardClick, but kept for clarity)\n this._selection = isChecked ? item : null;\n }\n this.selectionChange.emit(this._selection);\n if (isChecked) {\n this.rowSelect.emit(item);\n }\n }\n\n /**\n * Used by *ngFor to optimize rendering.\n * Assumes each item has a unique 'id' property.\n * @param index The index of the item.\n * @param item The data item.\n * @returns The unique identifier of the item.\n */\n trackById(index: number, item: T): any {\n // You might need to adjust 'id' if your data uses a different unique identifier\n return (item as any).id || index;\n }\n\n}\n","\n<div class=\"p-4 p-4 flex flex-col gap-6 font-inter\">\n <div *ngIf=\"loading\" class=\"col-span-full text-center py-8\">\n <div class=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-500 inline-block\"></div>\n <p class=\"mt-4 text-gray-600\">Loading data...</p>\n </div>\n\n <div *ngIf=\"!loading && data.length === 0\" class=\"col-span-full text-center py-8 text-gray-500\">\n No records found.\n </div>\n\n <div *ngFor=\"let item of data; trackBy: trackById\"\n [ngClass]=\"rowClassFn(item)\"\n class=\"bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-300 overflow-hidden flex flex-row items-center\"\n (click)=\"handleCardClick(item)\"\n [class.cursor-pointer]=\"rowSelectable && !showRowSelectionCheckbox\">\n\n <div *ngIf=\"showRowSelectionCheckbox\" class=\"p-4\">\n <input type=\"checkbox\"\n [checked]=\"isItemSelected(item)\"\n (change)=\"toggleItemSelection(item, $event)\"\n class=\"form-checkbox h-5 w-5 text-blue-600 rounded focus:ring-blue-500\">\n </div>\n\n <div class=\"p-6 flex-grow\">\n <div class=\"flex flex-wrap -mx-2\">\n <ng-container *ngFor=\"let col of columns\">\n <div *ngIf=\"col.isCardVisible\" class=\"px-2 mb-2 w-full sm:w-1/5\">\n <div class=\"flex flex-col sm:flex-row sm:items-center text-sm\">\n <span class=\"font-semibold text-gray-700 sm:w-1/3 sm:min-w-[80px] sm:pr-2\">{{ col.header | translate }}:</span>\n <div class=\"flex-grow text-gray-800 text-left mt-1 sm:mt-0\">\n <ng-container *ngIf=\"col.clickable; else readonlyCardCell\">\n <span class=\"cursor-pointer hover:underline text-blue-600\"\n (click)=\"handleCellClick(col, item, $event)\"\n (mouseenter)=\"col.hoverable && onCellHover(col, item, $event)\"\n (mouseleave)=\"col.hoverable && onCellLeave(col, item, $event)\">\n <ng-container *ngIf=\"col.formatter; else defaultCardText\">\n <span [innerHTML]=\"col.formatter(item)\"></span>\n </ng-container>\n <ng-template #defaultCardText>\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\n </ng-template>\n </span>\n </ng-container>\n\n <ng-template #readonlyCardCell>\n <span>\n <ng-container *ngIf=\"col.formatter; else defaultCardText2\">\n <span [innerHTML]=\"col.formatter(item)\"></span>\n </ng-container>\n <ng-template #defaultCardText2>\n {{ col.pipe ? col.pipe(item[col.field]) : item[col.field] }}\n </ng-template>\n </span>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n\n <div *ngIf=\"showOperations && actions.length > 0\" class=\"border-l border-gray-200 p-4 flex justify-end items-center\">\n <ng-container *ngIf=\"actionsMode === 'buttons'; else cardMenuTpl\">\n <ng-container *ngFor=\"let act of actions\">\n <button\n pButton\n type=\"button\"\n [icon]=\"act.icon || ''\"\n [title]=\"act.label?? '' | translate\"\n class=\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600 custom-button-medium mr-1\"\n [ngClass]=\"act.styleClass\"\n (click)=\"action.emit({ name: act.name, row: item })\"\n ></button>\n </ng-container>\n </ng-container>\n\n <ng-template #cardMenuTpl>\n <p-menu\n #cardMenu\n [model]=\"getMenuItems(item)\"\n popup=\"true\"\n appendTo=\"body\">\n </p-menu>\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-ellipsis-v\"\n class=\"p-button-rounded p-button-text text-gray-600 hover:text-blue-600\"\n (click)=\"cardMenu.toggle($event)\">\n </button>\n </ng-template>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\n\n@Component({\n selector: 'lib-generic-formly-fields',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyForm,\n // FormlyPrimeNGModule,\n ],\n templateUrl: './generic-formly-fields.html',\n})\nexport class GenericFormlyFields implements OnInit, OnChanges {\n /** الـ FormGroup الذي يُدار خارجيًا */\n @Input() form!: FormGroup;\n\n /** حقول Formly */\n @Input() fields: FormlyFieldConfig[] = [];\n\n /** النموذج (object) الذي سيُربط بالحقول */\n @Input() model: any = {};\n\n /** خيارات Formly (validation, hideExpression, ...) */\n @Input() options: FormlyFormOptions = {};\n\n ngOnInit() {\n // ما من حاجة هنا: يفترض أن form مُهيّأ في الخارج\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // لو احتجت تتعامل مع تغيّر الحقول أو الموديل، هنا المكان\n }\n\n // دالة مساعدة للوصول الآمن لخصائص الحقل\n getFieldIcon(field: FormlyFieldConfig): string | null {\n return field.templateOptions?.['icon'] || null;\n }\n}\n","<!-- يرسم حقول Formly داخل الـ form الموجود -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-generic-errormessage',\n imports: [CommonModule],\n templateUrl: './generic-errormessage.html',\n styleUrl: './generic-errormessage.css'\n})\nexport class GenericErrormessage {\n /** نص رسالة الخطأ */\n @Input() text: string = '';\n}\n"," \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}","import { Component, inject, Inject, OnDestroy } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyPrimeNGModule } from '@ngx-formly/primeng';\nimport { ButtonModule } from 'primeng/button';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { MessageModule } from 'primeng/message';\nimport { CrudService } from '../../services/crud-service.interface';\nimport { GenericButton } from '../generic-button/generic-button';\nimport { GenericFormlyFields } from '../generic-formly-fields/generic-formly-fields';\nimport { TranslateService,TranslateModule } from '@ngx-translate/core';\nimport { GenericErrormessage } from \"../generic-errormessage/generic-errormessage\";\n\n@Component({\n selector: 'app-generic-crud-dialog',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyPrimeNGModule,\n ButtonModule,\n ProgressSpinnerModule,\n MessageModule,\n GenericButton, // إضافة المكون العام للأزرار\n GenericFormlyFields,\n TranslateModule,\n GenericErrormessage\n],\n templateUrl: `./generic-crud-dialog.html`,\n styles: [`\n :host {\n display: block;\n }\n\n button {\n min-width: 120px;\n }\n `]\n})\nexport class GenericCrudDialog<T> implements OnDestroy {\n form = new FormGroup({});\n model: Partial<T> = {};\n fields: FormlyFieldConfig[] = [];\n options: FormlyFormOptions = {};\n loading = false;\n id :any= null;\n errorMessage: string | null = null;\n translate:TranslateService = inject(TranslateService);\n private destroy$ = new Subject<void>();\n private idField: keyof T;\n\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) {\n // استقبال البيانات من المكون الأب\n this.fields = this.config.data.fields;\n this.idField = this.config.data.idField;\n this.model = this.config.data.item ? {...this.config.data.item} : {};\n\n // تحديد وضع العملية (تعديل أو إضافة)\n // this.isEditMode = !!this.config.data.item;\n try {\n const id = (this.model as any)[this.idField];\n this.id = id != undefined;\n\n } catch (error) {\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 as CrudService<T>;\n console.log('service:', service);\n\n try {\n this.id = (this.model as any)[this.idField];\n } catch (error) {\n\n }\n console.log('isEditMode:', this.id);\n debugger\n const isEditMode = !!this.config.data.item;\n\nconst operation$: Observable<any> = isEditMode\n ? service.update(this.id, this.model as T)\n : service.create(this.model as T);\n\n operation$.pipe(takeUntil(this.destroy$)).subscribe({\n next: () => {\n this.ref.close(true); // نجاح العملية\n },\n error: (err) => {\n this.loading = false;\n this.errorMessage = err.error?.message ||\n err.message ||\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n"," <div class=\"p-4\">\n @if (errorMessage) {\n <lib-generic-errormessage [text]=\"errorMessage\"></lib-generic-errormessage>\n }\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <!-- استخدام المكون العام للحقول -->\n <lib-generic-formly-fields\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n </lib-generic-formly-fields>\n\n <div class=\"flex justify-end gap-2 mt-4\">\n\n <!-- استخدام المكون العام للأزرار - زر الحفظ -->\n <lib-generic-button\n variant=\"raised\"\n severity=\"primary\"\n type=\"submit\"\n [loading]=\"loading\"\n [disabled]=\"loading || form.invalid\"\n [label]=\"(id ? 'COMMON.UPDATE' : 'COMMON.SAVE') | translate\">\n </lib-generic-button>\n <!-- استخدام المكون العام للأزرار - زر الإلغاء -->\n <lib-generic-button\n variant=\"text\"\n severity=\"secondary\"\n [disabled]=\"loading\"\n [label]=\"'COMMON.CANCEL' | translate\"\n (clicked)=\"ref.close(false)\">\n </lib-generic-button>\n\n </div>\n </form>\n </div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyForm, FormlyFormOptions } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { ButtonModule } from 'primeng/button';\nimport { GenericButton } from '../../components/generic-button/generic-button';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'lib-generic-search',\n standalone: true,\n imports: [\n CommonModule,\n FormlyForm,\n TranslateModule,\n ToolbarModule,\n ButtonModule,\n GenericButton,\n ReactiveFormsModule,\n PopoverModule,\n FormsModule,\n InputIconModule,\n IconFieldModule,\n InputTextModule,\n ],\n templateUrl: './generic-search.html',\n})\nexport class GenericSearch implements OnInit {\n @ViewChild('overlay') overlay!: Popover;\n translate = inject(TranslateService);\n\n @Input() placeholder = 'بحث...';\n\n /**\n * List of fields to search by\n * Example: [{ label: 'Name', value: 'name' }, { label: 'Email', value: 'email' }]\n */\n\n\n @Output() search = new EventEmitter<any>();\n\n form = new FormGroup({});\n @Input() model: any = {};\n options: FormlyFormOptions = {};\n @Input() fields: FormlyFieldConfig[] = [];\n fields_: FormlyFieldConfig[] = [];\n\n// onTogglePopover(event: any) {\n// debugger\n// this.overlay.toggle(event);\n// }\n ngOnInit() {\n this.fields_ = this.fields;\n }\n\n onSubmit() {\n this.search.emit(this.model);\n }\n\n onReset() {\n this.model = {};\n this.search.emit(this.model);\n }\n}\n","<div class=\"flex items-center gap-3\">\r\n<p-iconfield iconPosition=\"left\">\r\n\r\n <p-inputicon class=\"pi pi-search\"> </p-inputicon>\r\n <input pInputText type=\"text\" (keyup.enter)=\"onSubmit()\" [(ngModel)]=\"model['filter']\" placeholder=\"{{ 'SEARCH' | translate }}\" />\r\n <!-- 2) Search Button that toggles the popover -->\r\n\r\n</p-iconfield>\r\n<p-button icon=\"pi pi-filter\" outlined severity=\"secondary\" (onClick)=\"overlay.toggle($event)\" />\r\n</div>\r\n<!-- 4) Popover for Advanced Multi-field Search -->\r\n<p-popover #overlay [dismissable]=\"true\" styleClass=\"p-4 w-80 max-h-96 flex flex-col\">\r\n\r\n <div class=\"flex-1 overflow-auto\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(); overlay.hide()\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields_\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n </formly-form>\r\n </form>\r\n </div>\r\n\r\n <div class=\"flex justify-end mt-2 space-x-2 flex-none\">\r\n <button type=\"submit\" pButton size=\"small\" label=\"{{ 'SEARCH' | translate }}\"></button>\r\n <button type=\"button\" pButton size=\"small\" class=\"p-button-text\" (click)=\"onReset(); overlay.hide()\">\r\n {{ 'CLEAR' | translate }}\r\n </button>\r\n </div>\r\n\r\n\r\n</p-popover>\r\n","import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { MenuItem, SortEvent } from 'primeng/api';\r\nimport { Table, TableHeaderCheckboxToggleEvent, TableLazyLoadEvent, TableRowSelectEvent } from 'primeng/table';\r\nimport { ColumnDef } from '../../models/Columndef';\r\nimport { ActionDef } from '../../models/Actiondef';\r\nimport { CommonModule, NgForOf, NgIf } from '@angular/common';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ButtonModule, Button } from 'primeng/button';\r\nimport { MenuModule, Menu } from 'primeng/menu';\r\nimport { TranslateModule, TranslateService, TranslatePipe } from '@ngx-translate/core';\r\nimport { FormlyField, FormlyFieldConfig, FormlyForm, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'lib-generic-table',\r\n imports: [CommonModule, TableModule, ButtonModule, MenuModule, NgForOf,TranslateModule,FormlyField,FormlyForm, NgIf, TranslatePipe, Menu, Button],\r\n templateUrl: './generic-table.html',\r\n styleUrl: './generic-table.css'\r\n})\r\nexport class GenericTable<T> {\r\n@ViewChild('dt') dt!: Table;\r\n\r\n @Input() data: T[] = [];\r\n @Input() columns: FormlyFieldConfig[] = [];\r\n columns_: FormlyFieldConfig[] = [];\r\n @Input() loading = false;\r\n @Input() actions: ActionDef<T>[] = [];\r\n @Input() actionsMode: 'buttons' | 'menu' = 'buttons';\r\n @Input() first = 0;\r\n @Input() rows = 10;\r\n @Input() totalRecords = 0;\r\n @Input() sortField?: string;\r\n @Input() sortOrder: 1 | -1 = 1;\r\n @Input() globalFilterFields: string[] = [];\r\n\r\n @Output() action = new EventEmitter<{ name: string; row: T }>();\r\n @Output() pageChange = new EventEmitter<TableLazyLoadEvent>();\r\n\r\n\r\n @Input() scrollHeight: string = '400px';\r\n\r\n // **جديد**: تمكين اختيار الصفوف\r\n /** فعّل اختيار الصفين single/multiple */\r\n @Input() rowSelectable: boolean = true;\r\n /** يحتفظ بالصف المحدد */\r\n //@Input() selection: T | T[] | null = null;\r\n\r\n // هذا سيكون مرتبطًا بـ [(selection)] في p-table\r\n _selection: T | T[] | null = null;\r\n\r\n\r\n @Input()\r\n get selection(): T | T[] | null {\r\n return this._selection;\r\n }\r\n set selection(val: T | T[] | null) {\r\n this._selection = val;\r\n // لا تُصدر الحدث هنا، بل في onInternalSelectionChange فقط\r\n }\r\n\r\n /** يصدر الصف المحدد عند النقر */\r\n @Output() rowSelect = new EventEmitter<T>();\r\n\r\n /** يصدر الصفوف المحددة عند التغيير (للربط الثنائي) */\r\n @Output() selectionChange = new EventEmitter<T | T[] | null>();\r\n\r\n\r\n /** جديد: التحكم بظهور الـ paginator */\r\n @Input() paginator: boolean = true;\r\nform = new FormGroup({});\r\noptions: FormlyFormOptions = {};\r\n\r\n\r\n // **جديد**: يتحكم بإظهار عمود اختيار الصفوف (checkboxes)\r\n /** يتحكم في إظهار عمود اختيار الصفوف المتعددة بواسطة checkboxes */\r\n @Input() showRowSelectionCheckbox: boolean = false;\r\n\r\n\r\n onInternalSelectionChange(event: TableRowSelectEvent<T>\r\n | TableHeaderCheckboxToggleEvent): void {\r\n if ('data' in event) {\r\n // Row select/unselect (single أو multiple)\r\n if (Array.isArray(this._selection)) {\r\n this._selection = [...this._selection]; // تحديث نسخة المصفوفة عند متعدد\r\n } else {\r\n this._selection = event.data as T; // اختيار فردي\r\n }\r\n } else if ('checked' in event) {\r\n // Header checkbox toggle\r\n this._selection = event.checked ? [...this.data] : [];\r\n }\r\n\r\n this.selectionChange.emit(this._selection);\r\n}\r\n\r\n\r\n\r\ncustomSort(event: SortEvent) {\r\n event.data?.sort((data1, data2) => {\r\n const value1 = this.resolveFieldData(data1, event.field ?? '');\r\n const value2 = this.resolveFieldData(data2, event.field ?? '');\r\n\r\n let result = 0;\r\n if (value1 == null && value2 != null) result = -1;\r\n else if (value1 != null && value2 == null) result = 1;\r\n else if (value1 == null && value2 == null) result = 0;\r\n else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n result = value1.localeCompare(value2);\r\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\r\n\r\n return (event.order ?? 1) * result;\r\n });\r\n}\r\nresolveFieldData(data: any, field: string): any {\r\n if (!field) return null;\r\n if (field.indexOf('.') === -1) return data[field];\r\n return field.split('.').reduce((obj, prop) => (obj ? obj[prop] : null), data);\r\n}\r\n\r\n onAction(act: ActionDef<T>, row: T) {\r\n if (act.action) {\r\n act.action(row);\r\n } else {\r\n this.action.emit({ name: act.name, row });\r\n }\r\n }\r\n cloneField(field: any): any {\r\n if (field === null || typeof field !== 'object') {\r\n return field;\r\n }\r\n\r\n if (Array.isArray(field)) {\r\n // preserve `this` context\r\n return field.map((item) => this.cloneField(item));\r\n }\r\n const cloned: any = {};\r\n for (const key of Object.keys(field)) {\r\n cloned[key] = this.cloneField(field[key]);\r\n }\r\n\r\n return cloned;\r\n}\r\n\r\n getForm(rowIndex: number, colIndex: number): FormGroup {\r\n var cellForms: { [key: string]: FormGroup } = {};\r\n const key = `${rowIndex}_${colIndex}`;\r\n if (!cellForms[key]) {\r\n cellForms[key] = new FormGroup({});\r\n }\r\n return cellForms[key];\r\n }\r\n\r\n onLazyLoad(event: TableLazyLoadEvent): void {\r\n this.columns_ = this.columns;\r\n // // debugger\r\n this.pageChange.emit(event);\r\n }\r\n\r\n\r\n applyFilter(filters: any): void {\r\n // if (field) {\r\n // this.dt.filter(global, field, 'contains');\r\n // } else {\r\n // this.dt.filterGlobal(global, 'contains');\r\n // }\r\n\r\n }\r\n\r\n getMenuItems(row: T): MenuItem[] {\r\n return this.actions.map(act => ({\r\n label: act.label,\r\n icon: act.icon,\r\n command: () => this.onAction(act, row ),\r\n styleClass: act.styleClass\r\n }));\r\n }\r\n\r\n // **جديد**: يتم إطلاق هذا عند اختيار صف\r\n onRowSelect(event: TableRowSelectEvent<T>) {\r\n // debugger\r\n console.log('GenericTable.onRowSelect:', event.data);\r\n if (event.data) {\r\n this.rowSelect.emit(event.data as T);\r\n }\r\n }\r\n\r\n}\r\n","\r\n<div class=\"flex-1 last:[&>td]:border-0 rounded-lg border border-surface w-full overflow-auto\">\r\n <p-table #dt\r\n [value]=\"data\"\r\n [columns]=\"columns\"\r\n [lazy]=\"true\"\r\n [paginator]=\"paginator\"\r\n [rows]=\"rows\"\r\n [first]=\"first\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\" (onLazyLoad)=\"onLazyLoad($event)\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [loading]=\"loading\"\r\n [scrollable]=\"true\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [selectionMode]=\"showRowSelectionCheckbox ? 'multiple' : (rowSelectable ? 'single' : undefined)\"\r\n [(selection)]=\"_selection\"\r\n (onRowSelect)=\"onInternalSelectionChange($event)\"\r\n (onRowUnselect)=\"onInternalSelectionChange($event)\"\r\n (onHeaderCheckboxToggle)=\"onInternalSelectionChange($event)\"\r\n tableLayout=\"fixed\"\r\n [customSort]=\"false\"\r\n (sortFunction)=\"customSort($event)\"\r\n >\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngIf=\"showRowSelectionCheckbox\" style=\"width: 2rem\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <!-- <th style=\"width: 1rem\">\r\n <p-tableHeaderCheckbox />\r\n </th> -->\r\n\r\n <ng-container *ngFor=\"let col of columns\" >\r\n <th *ngIf=\"col.props?.table?.props?.width; else templateName\" [pSortableColumn]=\"col.key\"\r\n class=\"px-4 py-2 text-sm font-medium text-white text-center\"\r\n [style.min-width]=\"col.props?.table?.props?.width\">\r\n {{ col.props?.label | translate }}\r\n <p-sortIcon [field]=\"col.key\"></p-sortIcon>\r\n </th>\r\n\r\n <ng-template #templateName>\r\n <th class=\"px-4 py-2 text-sm font-medium text-white text-center\">\r\n {{ col.props?.label | translate }}\r\n <p-sortIcon [field]=\"col.key\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n</ng-container>\r\n\r\n\r\n <th class=\"px-4 py-2 text-sm font-medium text-white text-center\"> {{ 'OPERATIONS' | translate }}</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-i=\"rowIndex\">\r\n <tr class=\"even:bg-gray-50 hover:bg-gray-100\" (click)=\"rowSelect.emit(rowData)\">\r\n <!-- <td style=\"width: 1rem\">\r\n <p-tableCheckbox [value]=\"rowData\" />\r\n </td> -->\r\n <td *ngIf=\"showRowSelectionCheckbox\" style=\"width: 2rem\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td *ngFor=\"let col of columns_ ; let colIndex = index\"\r\n class=\"border-t border-gray-200 px-4 py-2 text-center text-sm text-gray-700\"\r\n [style.width]=\"col.props && col.props['table']\r\n && col.props['table']['props'] && col.props['table']['props']['width'] \"\r\n\r\n >\r\n\r\n\r\n <!-- إذا العمود قابل للنقر -->\r\n\r\n <formly-form\r\n [model]=\"rowData\"\r\n [form]=\"getForm(i, colIndex)\"\r\n [fields]=\"[cloneField(col)]\"\r\n [options]=\"options\">\r\n </formly-form>\r\n\r\n </td>\r\n <td class=\"border-t border-gray-200 px-4 py-2 text-center align-middle\">\r\n <ng-container [ngSwitch]=\"actionsMode\">\r\n <!-- Render buttons -->\r\n <ng-container *ngSwitchCase=\"'buttons'\">\r\n <ng-container *ngFor=\"let act of actions\">\r\n <button\r\n *ngIf=\"act.icon || act.label\"\r\n pButton\r\n [icon]=\"act.icon || ''\"\r\n [label]=\"(act.label || '') | translate\"\r\n [class]=\"act.styleClass || ''\"\r\n class=\"p-button-sm mx-1\"\r\n (click)=\"onAction(act, rowData)\"\r\n ></button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Render menu -->\r\n <ng-container *ngSwitchCase=\"'menu'\">\r\n <p-menu #menu [model]=\"getMenuItems(rowData)\" [popup]=\"true\" appendTo=\"body\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2 px-2 py-1\">\r\n <i [ngClass]=\"item.icon\" class=\"text-primary-600\" *ngIf=\"item.icon\"></i>\r\n <span class=\"font-medium\">{{ (item.label || '') | translate }}</span>\r\n\r\n <span *ngIf=\"item.badge\" class=\"ml-auto text-xs bg-red-500 text-white px-2 py-1 rounded\">\r\n {{ item.badge }}\r\n </span>\r\n\r\n <!-- <p-inputSwitch *ngIf=\"item.toggle\" [(ngModel)]=\"item.toggleValue\" class=\"ml-auto\" /> -->\r\n </div>\r\n </ng-template>\r\n </p-menu>\r\n\r\n <p-button\r\n outlined\r\n icon=\"pi pi-ellipsis-v\"\r\n class=\"p-button-text p-button-sm\"\r\n (onClick)=\"menu.toggle($event)\"\r\n ></p-button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n\r\n</div>\r\n","// app/shared/services/swal.service.ts\nimport { Injectable } from '@angular/core';\nimport Swal, {\n SweetAlertOptions,\n SweetAlertResult,\n SweetAlertIcon\n} from 'sweetalert2';\n\n@Injectable({ providedIn: 'root' })\nexport class SwalService {\n /** رسالة تأكيد قبل تنفيذ إجراء */\n confirm(\n title = 'هل أنت متأكد؟',\n text = 'لن يمكنك التراجع عن هذا الإجراء',\n confirmButtonText = 'نعم',\n cancelButtonText = 'إلغاء'\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'warning',\n title,\n text,\n showCancelButton: true,\n confirmButtonText,\n cancelButtonText,\n // reverseButtons: true,\n customClass: {\n container: 'swal2-container' // ✅ أضف هذه الفئة\n }\n });\n }\n\n /** رسالة نجاح */\n success(\n title: string,\n text?: string,\n timer = 2000\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'success',\n title,\n text,\n timer,\n showConfirmButton: false,\n customClass: {\n container: 'swal2-container' // ✅ أضف هذه الفئة\n }\n });\n }\n\n /** رسالة خطأ */\n error(\n title: string,\n text?: string,\n footer?: string\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'error',\n title,\n text,\n footer,\n customClass: {\n container: 'swal2-container' // ✅ أضف هذه الفئة\n }\n });\n }\n\n /** رسالة معلومات */\n info(\n title: string,\n text?: string\n ): Promise<SweetAlertResult> {\n return Swal.fire({\n icon: 'info',\n title,\n text,\n });\n }\n\n /** عرض نافذة SweetAlert2 بأي خيارات تريد */\n alert(\n options: SweetAlertOptions\n ): Promise<SweetAlertResult> {\n return Swal.fire(options);\n }\n\n /** Toast بسيط قابل لإعادة الاستخدام */\n toast(\n title: string,\n icon: SweetAlertIcon = 'info',\n position: SweetAlertOptions['position'] = 'top-end',\n timer = 3000\n ): void {\n const Toast = Swal.mixin({\n toast: true,\n position,\n timer,\n showConfirmButton: false,\n });\n Toast.fire({ icon, title });\n }\n\n}\n","import { Breadcrumb } from 'primeng/breadcrumb';\r\nimport { DividerModule } from 'primeng/divider';\r\n// src/app/shared/generic-crud-table/generic-crud-table.component.ts\r\nimport { Component, Input, Output, EventEmitter, ViewChild, inject, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GenericButton } from '../generic-button/generic-button';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { PaginatorState } from 'primeng/paginator';\r\nimport { ActionDef } from '../../models/Actiondef';\r\nimport { GenericSearch } from '../generic-search/generic-search';\r\nimport { TableModule,TableLazyLoadEvent } from 'primeng/table';\r\nimport { GenericTable } from '../generic-table/generic-table';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { FormlyFieldConfig, FormlyForm, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DrawerModule } from 'primeng/drawer';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { BaseService } from '../../services/base.service';\r\nimport { Observable, } from 'rxjs';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { BreadcrumbComponent } from '../breadcrumb/breadcrumb';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ButtonConfig } from '../../models/ButtonConfig';\r\nimport { SwalService } from '../../services/SwalService.service';\r\n\r\nexport interface PageChangePayload extends PaginatorState {\r\nsort?: string;\r\nfilters?: Record<string, any>;\r\n}\r\n\r\nexport type ActionsMode = 'buttons' | 'menu';\r\n\r\n@Component({\r\n selector: 'app-generic-crud-table',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TableModule,\r\n GenericButton,\r\n ButtonModule,\r\n GenericSearch,\r\n GenericTable,\r\n ToolbarModule,\r\n TranslateModule,\r\n DividerModule,\r\n IconFieldModule,\r\n DrawerModule,\r\n FormlyForm,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MessageModule,\r\n BreadcrumbComponent,\r\n DialogModule,\r\n],\r\n templateUrl: './generic-crud-table.html',\r\n host: {\r\n class: 'h-full flex-1 flex flex-col overflow-hidden border border-surface rounded-2xl p-4 bg-white'\r\n },\r\n})\r\n\r\nexport class GenericCrudTableComponent<T> implements OnChanges{\r\n @ViewChild('genericTable') genericTable!: GenericTable<T>;\r\n translate:TranslateService = inject(TranslateService);\r\n private swalService = inject(SwalService);\r\n\r\n home: MenuItem | undefined = { icon: 'pi pi-home', routerLink: '/' };\r\n @Input() data: T[] = [];\r\n formFields_: FormlyFieldConfig[] = []; // <-- هنا\r\n @Input() formFields: FormlyFieldConfig[] = []; // <-- هنا\r\n @Input() columns: FormlyFieldConfig[] = []; // <-- هنا\r\n @Input() isViewMode = false;\r\n @Input() isEditMode = false;\r\n @Input() drawerVisible = false;\r\n @Input() dialogVisible = false;\r\n form = new UntypedFormGroup({});\r\n @Input() model: any;\r\n model_: any = {};\r\n @Input() loading = false;\r\n @Input() errorMsg: string = '';\r\n @Input() errorMessage: string|any = '';\r\n\r\noptions: FormlyFormOptions = {};\r\n\r\n @Input() actions: ActionDef<T>[] = [];\r\n /** تحدد طريقة العرض: 'buttons' أو 'menu' */\r\n @Input() actionsMode: ActionsMode = 'buttons';\r\n @Output() action = new EventEmitter<{ name: string; row: T }>();\r\n @Output() bulkAction = new EventEmitter<{ name: string; items: T[] }>();\r\n @Output() singleAction = new EventEmitter<{ name: string; item: T }>();\r\n\r\n // البحث\r\n// Search\r\n @Input() filters: any;\r\n @Input() filterModel: any = {};\r\n @Output() search = new EventEmitter<{ field: string; global: string }>();\r\n\r\n/** للتحكم بإظهار/إخفاء قسم البحث */\r\n @Input() showSearch: boolean = true;\r\n\r\n /** Pagination Inputs */\r\n @Input() first = 0;\r\n @Input() rows = 10;\r\n @Input() totalRecords = 0;\r\n @Output() pageChange = new EventEmitter<PageChangePayload>();\r\n @Output() onSearch = new EventEmitter<any>();\r\n\r\n@Output() visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();;\r\n// @Output() visibleChange = new EventEmitter<boolean>();\r\nviewHeaderTitle = 'عرض التفاصيل';\r\n /** لجعل الجدول قابل لاختيار الصفوف (افتراضي false) */\r\n @Input() rowSelectable: boolean = false;\r\n /** حدث يخرج الصف المحدّد */\r\n @Output() rowSelect = new EventEmitter<T>();\r\n\r\n selection: T | null = null;\r\n\r\n // الفرز\r\n sortField?: string;\r\n sortOrder: 1 | -1 = 1;\r\n\r\n@Input() scrollHeight: string = '400px';\r\n\r\n @Input() paginator: boolean = true;\r\n\r\n@Input() service: BaseService|any;\r\n@Input() idField: string = 'id';\r\n\r\n @Input() showRowSelectionCheckbox: boolean = false;\r\n\r\n @Input() bulkActionButtons: ButtonConfig[] = [];\r\n @Input() singleActionButtons: ButtonConfig[] = [];\r\n\r\n  _selectedRows: T[] = [];\r\n\r\nget isSingleItemSelected(): boolean {\r\n return this._selectedRows.length === 1;\r\n}\r\n\r\nget isMultipleItemSelected(): boolean {\r\n return this._selectedRows.length > 1;\r\n}\r\n\r\nget selectedItems(): T[] {\r\n return this._selectedRows;\r\n}\r\n\r\n\r\n\r\n/** للتحكم بإظهار زر الإضافة */\r\n@Input() showAddButton: boolean = true;\r\n/** الأيقونة الافتراضية لزر الإضافة */\r\n@Input() addButtonIcon: string = 'pi pi-plus';\r\n/** النص الافتراضي لزر الإضافة */\r\n@Input() addButtonLabel: string = 'ADD';\r\n /** تتحكّم بموقع زر الإضافة: 'top' أو 'bottom' */\r\n@Input() addButtonPosition: 'top' | 'bottom' = 'top';\r\n\r\n @Input() addButtonConfigs: ButtonConfig[] = [];\r\n\r\n@Input() breadcrumb: MenuItem[] | undefined;\r\nngOnChanges(changes: SimpleChanges) {\r\n\r\n}\r\nget breadcrumb_(): MenuItem[] | undefined {\r\n return this.breadcrumb?.map(v => ({\r\n ...v,\r\n label: this.translate.instant(v.label ?? '')\r\n }));\r\n}\r\nget rtl(): boolean {\r\n try {\r\n return document?.documentElement?.dir === 'rtl';\r\n } catch (error) {\r\n return true;\r\n }\r\n}\r\n// private destroy$ = new Subject<void>();\r\n /** الآن يتلقّى pagination + sort في حدث واحد */\r\nonLazyLoad(event: TableLazyLoadEvent) {\r\n // this.model_= this.model ?? {};\r\n this.model= this.model ?? {};\r\n\r\n this.formFields_ = this.formFields;\r\n const first = event.first ?? this.first;\r\n const rows = event.rows ?? this.rows;\r\n const sortField = typeof event.sortField === 'string'\r\n ? event.sortField\r\n : this.sortField;\r\n const sortOrder = event.sortOrder === -1 ? -1 : 1;\r\n\r\n\r\n const filters: Record<string, any> = {};\r\n if (event.filters) {\r\n Object.entries(event.filters).forEach(([field, meta]) => {\r\n const value = (meta as any).value;\r\n if (value != null && value !== '') {\r\n filters[field] = value;\r\n }\r\n });\r\n }\r\n\r\n this.first = first;\r\n this.rows = rows;\r\n this.sortField = sortField;\r\n this.sortOrder = sortOrder as 1| -1;\r\nvar dir = sortOrder === 1 ? 'asc' : 'desc';\r\n var sort = sortField ? `${sortField} ${dir}` : undefined;\r\n\r\n this.pageChange.emit({ first, rows ,sort, filters });\r\n\r\n // يبني النص وإرساله\r\n\r\n}\r\n\r\n\r\n /** تصيير البيانات حسب الصفحة */\r\n get pagedData(): T[] {\r\n // return this.data ? this.data.slice(this.first, this.first + this.rows) : [];\r\n\r\n return this.data;\r\n }\r\n\r\n\r\n\r\nget globalFilterFields(): string[] {\r\n return this.columns.map(c => String(c.key));\r\n}\r\n\r\n\r\n\r\n\r\n\r\n /** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */\r\n// from generic-crud-table.component.ts\r\n\r\n/** بدّل applySearch لتبث pageChange مباشرةً */\r\n applySearch(filters: any) {\r\n // this.genericTable.applyFilter(global);\r\n this.onSearch.emit(filters);\r\n }\r\n\r\n\r\n /** دالة تنفّذ عند النقر على صف */\r\n onRowClick(row: T) {\r\n console.log('GenericCrudTableComponent.rowClick:', row);\r\n if (this.rowSelectable) {\r\n this.rowSelect.emit(row);\r\n }\r\n }\r\n\r\n\r\n @Input() beforeSave: (record: T) => T = (record) => record;\r\n\r\n // onSubmit() {\r\n // if (this.form.invalid) return;\r\n\r\n // this.loading = true;\r\n // this.errorMessage = null;\r\n\r\n // const service = this.service /* as CrudService<T> */;\r\n // const id = this.isEditMode ? (this.model as any)[this.idField] : null;\r\n\r\n // const recordToSave = this.beforeSave({ ...this.model });\r\n\r\n\r\n // const operation$: Observable<any> = this.isEditMode\r\n // ? service.update(id, recordToSave)\r\n // : service.create(recordToSave);\r\n\r\n // // operation$.pipe(takeUntil(this.destroy$)).subscribe({\r\n // operation$.subscribe({\r\n // next: () => {\r\n // // this.ref.close(true); // نجاح العملية\r\n // this.visibleChange.emit(false)\r\n // // this.pageChange.emit({ first, rows ,sort, filters });\r\n // this.applySearch('');\r\n // // this.me\r\n // },\r\n // error: (err:any) => {\r\n // this.loading = false;\r\n\r\n // this.errorMessage = err.error?.title ||\r\n // err.message ||\r\n // 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\r\n // }\r\n // });\r\n // }\r\n\r\n onSubmit() {\r\n if (this.form.invalid) return;\r\n\r\n // ✅ أول شيء نطلب تأكيد من المستخدم\r\n this.swalService.confirm(\r\n this.isEditMode ? 'تأكيد التعديل' : 'تأكيد الحفظ',\r\n this.isEditMode\r\n ? 'هل تريد حفظ التعديلات على هذا السجل؟'\r\n : 'هل تريد حفظ هذا السجل؟',\r\n 'نعم',\r\n 'إلغاء'\r\n ).then((result) => {\r\n if (!result.isConfirmed) return;\r\n\r\n this.loading = true;\r\n this.errorMessage = null;\r\n\r\n const service = this.service;\r\n const id = this.isEditMode ? (this.model as any)[this.idField] : null;\r\n\r\n const recordToSave = this.beforeSave({ ...this.model });\r\n\r\n const operation$: Observable<any> = this.isEditMode\r\n ? service.update(id, recordToSave)\r\n : service.create(recordToSave);\r\n\r\n operation$.subscribe({\r\n next: () => {\r\n this.loading = false;\r\n\r\n // ✅ رسالة نجاح\r\n this.swalService.success(\r\n this.isEditMode ? 'تم التعديل بنجاح' : 'تم الحفظ بنجاح'\r\n );\r\n\r\n this.visibleChange.emit(false);\r\n this.applySearch('');\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n\r\n const msg =\r\n err.error?.title ||\r\n err.message ||\r\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\r\n\r\n this.errorMessage = msg;\r\n\r\n // ❌ رسالة خطأ\r\n this.swalService.error('فشل الحفظ', msg);\r\n }\r\n });\r\n });\r\n}\r\n\r\n\r\n   trackByIdx(index: number, item: any): number {\r\n    return index;\r\n  }\r\n\r\nonSingleItemAction(btn: ButtonConfig): void {\r\n if (!this.isSingleItemSelected) return;\r\n\r\n const selectedItem = this._selectedRows[0];\r\n this.singleAction.emit({\r\n name: btn.actionName ?? 'singleAction',\r\n item: selectedItem\r\n });\r\n}\r\n\r\nonInternalBulkAction(btn: ButtonConfig): void {\r\n if (!this.isMultipleItemSelected) return;\r\n\r\n this.bulkAction.emit({\r\n name: btn.actionName ?? 'bulkAction',\r\n items: [...this._selectedRows] // نرسل نسخة من المصفوفة\r\n });\r\n}\r\n\r\n\r\n}\r\n","\r\n <div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <!-- <div class=\"text-2xl leading-8 font-medium bg-slate-800 p-4 rounded-md\">\r\n <p-breadcrumb\r\n [model]=\"breadcrumb_\"\r\n [home]=\"home\"\r\n styleClass=\"custom-breadcrumb\"\r\n ></p-breadcrumb>\r\n </div> -->\r\n\r\n<app-breadcrumb [breadcrumb]=\"breadcrumb_\"></app-breadcrumb>\r\n\r\n </div>\r\n\r\n<div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n <ng-container *ngIf=\"isSingleItemSelected\">\r\n <ng-container *ngFor=\"let btn of singleActionButtons; trackBy: trackByIdx\">\r\n <lib-generic-button\r\n\r\n [icon]=\"btn.icon\"\r\n[label]=\"btn.label | translate\"\r\n[variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n</ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedItems.length > 0\">\r\n <ng-container *ngFor=\"let btn of bulkActionButtons; trackBy: trackByIdx\">\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let btn of addButtonConfigs; trackBy: trackByIdx\">\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\" this.action.emit({ name: btn.actionName ?? 'add', row: null! });\"\r\n ></lib-generic-button>\r\n </ng-container>\r\n\r\n <p-button\r\n icon=\"pi pi-circle-fill text-green-500\" *ngIf=\"showAddButton && addButtonConfigs.length == 0\"\r\n [label]=\"(addButtonLabel | translate)\r\n \"(onClick)=\"action.emit({ name: 'add', row: null! })\"\r\n outlined severity=\"secondary\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n\r\n <ng-container *ngIf=\"showSearch && filters; else emptySearch\">\r\n <lib-generic-search\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (reset)=\"applySearch('')\"\r\n ></lib-generic-search>\r\n </ng-container>\r\n\r\n <ng-template #emptySearch>\r\n <!-- Render a dummy div to preserve expected DOM shape -->\r\n <!-- <div class=\"min-h-[2.5rem] w-[12rem]\"></div> -->\r\n </ng-template>\r\n\r\n <div class=\"flex items-center gap-3\">\r\n\r\n <p-button icon=\"pi pi-refresh\" outlined severity=\"secondary\" (onClick)=\"applySearch('')\" />\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0\" />\r\n <p-button icon=\"pi pi-sort\" outlined severity=\"secondary\" />\r\n <p-button label=\"1 of 15\" outlined severity=\"secondary\" />\r\n <p-button icon=\"pi pi-chevron-right\" outlined severity=\"secondary\" />\r\n <p-button icon=\"pi pi-chevron-left\" outlined severity=\"secondary\" />\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n<lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n></lib-generic-table>\r\n\r\n\r\n\r\n\r\n<p-drawer\r\n*ngIf=\"drawerVisible\"\r\n[(visible)]=\"drawerVisible\" [closable]=\"true\"\r\n[dismissible]=\"false\" [closeOnEscape]=\"true\"\r\n(visibleChange)=\"visibleChange.emit($event)\"\r\nstyleClass=\"!w-full md:!w-80 lg:!w-[40rem]\">\r\n <!-- Header -->\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex items-center justify-between w-full\">\r\n <div class=\"flex items-center gap-2\">\r\n <i class=\"pi pi-arrow-left cursor-pointer text-xl\" (click)=\"visibleChange.emit(false)\"></i>\r\n <span class=\"font-bold text-lg\">{{ isEditMode ? 'تعديل ' : 'إضافة' }}</span>\r\n </div>\r\n </div>\r\n </ng-template>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" class=\"p-4\">\r\n <formly-form [form]=\"form\" [fields]=\"formFields_\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n\r\n <!-- Footer -->\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n size=\"large\"\r\n type=\"submit\"\r\n (click)=\"onSubmit()\">\r\n </button>\r\n\r\n <button\r\n pButton\r\n label=\"{{ 'CANCEL' | translate }}\"\r\n severity=\"danger\"\r\n size=\"large\"\r\n (click)=\"visibleChange.emit(false)\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n\r\n<p-dialog\r\n *ngIf=\"dialogVisible\"\r\n [(visible)]=\"dialogVisible\"\r\n [modal]=\"true\"\r\n [closable]=\"true\"\r\n [dismissableMask]=\"true\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [style]=\"{ width: '95vw', maxWidth: '40rem' }\"\r\n [header]=\"viewHeaderTitle\"\r\n>\r\n<!-- backdrop-blur-sm -->\r\n <div class=\"relative\">\r\n <!-- Only visible in view mode: disables interaction and adds blur effect -->\r\n <div\r\n *ngIf=\"isViewMode\"\r\n class=\"absolute inset-0 z-10 bg-white/50 pointer-events-auto cursor-not-allowed rounded-md\">\r\n </div>\r\n\r\n <!-- Form -->\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n </formly-form>\r\n </form>\r\n </div>\r\n <!-- Footer -->\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end\">\r\n <button\r\n pButton\r\n label=\"{{ 'CLOSE' | translate }}\"\r\n severity=\"secondary\"\r\n size=\"large\"\r\n (click)=\"visibleChange.emit(false)\">\r\n </button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n\r\n\r\n","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","import {\n Component,\n ChangeDetectionStrategy,\n Type,\n OnInit,\n} from '@angular/core';\nimport {\n FieldType,\n FieldTypeConfig,\n FormlyAttributes,\n FormlyFieldConfig,\n} from '@ngx-formly/core';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { TranslateModule } from '@ngx-translate/core';\n\ninterface DatepickerProps extends FormlyFieldProps {\n defaultDate?: Date;\n dataType?: 'string' | 'date'; // default is 'string'\n dateFormat?: string;\n icon?: string;\n hourFormat?: string;\n timeOnly?: boolean;\n showTime?: boolean;\n showIcon?: boolean;\n showButtonBar?: boolean;\n showOtherMonths?: boolean;\n selectOtherMonths?: boolean;\n selectionMode?: 'multiple' | 'single' | 'range';\n numberOfMonths?: number;\n inline?: boolean;\n readonlyInput?: boolean;\n touchUI?: boolean;\n monthNavigator?: boolean;\n yearNavigator?: boolean;\n yearRange?: string;\n}\n\nexport interface FormlyDatepickerFieldConfig\n extends FormlyFieldConfig<DatepickerProps> {\n type: 'datepicker' | Type<FormlyFieldDatepicker>;\n}\n\n@Component({\n selector: 'formly-field-primeng-datepicker',\n template: `\n <p-datepicker\n [dataType]=\"props.dataType ?? 'string'\"\n [dateFormat]=\"props.dateFormat ?? (props.showTime ? 'yy-mm-dd' : 'yy-mm-dd')\"\n [hourFormat]=\"props.hourFormat || '12'\"\n [timeOnly]=\"props.timeOnly || false\"\n [icon]=\"props.icon\"\n [showTime]=\"props.showTime || false\"\n [showIcon]=\"props.showIcon || true\"\n [showButtonBar]=\"props.showButtonBar\"\n [showOtherMonths]=\"props.showOtherMonths\"\n [selectOtherMonths]=\"props.selectOtherMonths\"\n [selectionMode]=\"props.selectionMode || 'single'\"\n [numberOfMonths]=\"props.numberOfMonths || 0\"\n [inline]=\"props.inline\"\n [readonlyInput]=\"props.readonlyInput\"\n [touchUI]=\"props.touchUI\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"(props['placeholder'] ?? '') | translate\"\n [styleClass]=\"'w-full rounded-none block text-base'\"\n appendTo=\"body\"\n (onSelect)=\"onDateSelect($event)\"\n (onBlur)=\"onTouched()\"\n ></p-datepicker>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n TranslateModule,\n ],\n})\nexport class FormlyFieldDatepicker extends FieldType<\n FieldTypeConfig<DatepickerProps>\n> implements OnInit {\n override defaultOptions?: Partial<FieldTypeConfig<DatepickerProps>> = {\n props: {\n numberOfMonths: 1,\n },\n };\n\n ngOnInit(): void {\n const value = this.formControl.value;\n\n // Convert incoming string to Date\n if (typeof value === 'string') {\n const parsed = new Date(value);\n if (!isNaN(parsed.getTime())) {\n this.formControl.setValue(parsed, { emitEvent: false });\n }\n }\n\n // Convert back to string when user selects date (if needed)\n this.formControl.valueChanges.subscribe(val => {\n if (val instanceof Date && this.props?.dataType === 'string') {\n const pad = (n: number) => n.toString().padStart(2, '0');\n\n const year = val.getFullYear();\n const month = pad(val.getMonth() + 1); // months are 0-based\n const day = pad(val.getDate());\n\n let result = `${year}-${month}-${day}`;\n\n if (this.props?.showTime) {\n const hours = pad(val.getHours());\n const minutes = pad(val.getMinutes());\n const seconds = pad(val.getSeconds());\n result += `T${hours}:${minutes}:${seconds}`;\n }\n\n if (this.formControl.value !== result) {\n this.formControl.setValue(result, { emitEvent: false });\n }\n }\n});\n\n }\n\n onDateSelect(date: Date) {\n if (this.props?.dataType === 'string') {\n const formatted =\n this.props.showTime === true\n ? this.toLocalDateTimeString(date)\n : this.toLocalDateOnlyString(date);\n\n this.formControl.setValue(formatted);\n } else {\n this.formControl.setValue(date);\n }\n }\n\n onTouched() {\n this.formControl.markAsTouched();\n }\n\n private toLocalDateOnlyString(date: Date): string {\n const pad = (n: number) => n.toString().padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n return `${year}-${month}-${day}`;\n}\n\n private toLocalDateTimeString(date: Date): string {\n const pad = (n: number) => n.toString().padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;\n}\n}\n","import { FormlyFieldDatepicker } from './datepicker.type';\nimport { ConfigOption } from '@ngx-formly/core';\n\nexport function withFormlyFieldDatepicker(): ConfigOption {\n return {\n types: [\n {\n name: 'datepicker',\n component: FormlyFieldDatepicker,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlyFieldDatepicker } from './datepicker.type';\nimport { withFormlyFieldDatepicker } from './datepicker.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldDatepicker],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldDatepicker()),\n ],\n})\nexport class FormlyDatepickerModule {}\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { FormlyFieldConfig, FieldType, FormlyAttributes, FieldTypeConfig } from '@ngx-formly/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { BaseService } from '../../services/base.service';\r\nimport { forkJoin, Observable, Subscription } from 'rxjs';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AutoCompleteModule, AutoComplete } from 'primeng/autocomplete';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FormlyFieldProps } from '@ngx-formly/primeng/form-field';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\n\r\ninterface GenericSelectorProps extends FormlyFieldProps/* , FormlyFieldSelectProps */ {\r\n // appendTo?: Select['appendTo'];\r\n serviceName: string;\r\n listEndpoint?: string | ((model: any) => string);\r\n labelField?: string;\r\n loadDefaultField?: string;\r\n loadDefaultValue?: string;\r\n\r\n valueField?: string;\r\n multiple?: boolean;\r\n loadDefault?: boolean;\r\n\r\n offline?: boolean;\r\n\r\n /** Static offline items (array of objects) */\r\n offlineItems?: any[];\r\n\r\n /** Async offline items (observable) */\r\n offlineItems$?: Observable<any[]>;\r\n\r\n /** Function-based filter for offline items */\r\n offlineDataFn?: (query?: string) => any[];\r\n fixedFilters?: Record<string, any>;\r\n defaultValue?: any; // id أو array of ids\r\n defaultItem?: any; // الكائن كامل (object) إذا عندك جاهز\r\n}\r\n\r\n@Component({\r\n selector: 'formly-generic-selector',\r\n template: `\r\n <p-autoComplete\r\n #autoComp\r\n(ngModelChange)=\"onSelectionChange($event)\"\r\n[ngModel]=\"selectedItem\"\r\n [formlyAttributes]=\"field\"\r\n [suggestions]=\"options_\"\r\n (completeMethod)=\"search($event)\"\r\n [multiple]=\"to['multiple']\"\r\n [optionLabel]=\"to['labelField'] || 'name'\"\r\n [dropdown]=\"true\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\r\n [disabled]=\"!!props.disabled\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full rounded-none\"\r\n [showEmptyMessage]=\"true\"\r\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\r\n [showTransitionOptions]=\"'0ms'\" >\r\n <!-- <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <p-checkbox\r\n [binary]=\"true\"\r\n [ngModel]=\"isItemSelected(item)\"\r\n (onChange)=\"toggleItemSelection(item)\">\r\n </p-checkbox>\r\n <span>{{ item[to['labelField'] || 'name'] }}</span>\r\n </div>\r\n </ng-template> -->\r\n</p-autoComplete>\r\n `,\r\n providers: [DialogService,BaseService],\r\n imports:[\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AutoCompleteModule,\r\n CommonModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n FormlyAttributes,\r\n TranslateModule,\r\n AutoComplete,\r\n CheckboxModule\r\n]\r\n})\r\nexport class GenericSelectorTypeComponent extends FieldType<FieldTypeConfig<GenericSelectorProps>> implements OnInit,OnDestroy {\r\n @ViewChild('autoComp') autoComp!: AutoComplete;\r\n options_: any[] = [];\r\n selectedItem: any;\r\n\r\n loading = false;\r\n private _offlineList: any[] = [];\r\n\r\n api: BaseService|any;\r\n dialog: DialogService|any;\r\n private valueChangeSubscription!: Subscription; // Add a subscription to manage the observable\r\n constructor(private svc: BaseService,private injector: Injector,private cdr: ChangeDetectorRef) {\r\n super();\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.api = this.svc;\r\n this.dialog = this.injector.get(DialogService);\r\n const to = this.props;\r\n this.api.apiName = to['serviceName'];\r\n\r\n if (to['offline']) {\r\n if (to['offlineDataFn']) {\r\n this._offlineList = to['offlineDataFn']();\r\n this.initOfflineSelection();\r\n } else if (to['offlineItems$']) {\r\n to['offlineItems$'].subscribe((list: any[]) => {\r\n this._offlineList = list;\r\n this.initOfflineSelection();\r\n });\r\n } else {\r\n this._offlineList = to['offlineItems'] || [];\r\n this.initOfflineSelection();\r\n }\r\n } else {\r\n this.initOnlineSelection();\r\n }\r\n\r\n // Subscribe to formControl value changes\r\n this.valueChangeSubscription = this.formControl.valueChanges\r\n .subscribe(() => {\r\n // This tap operator is a good place to run side effects\r\n // like calling your change handler after a value changes.\r\n // this.selectedItem = this.formControl.value;\r\n if (this.props.change) {\r\n if (to['offline']) {\r\n if (to['offlineDataFn']) {\r\n this._offlineList = to['offlineDataFn']();\r\n this.initOfflineSelection(false);\r\n } else if (to['offlineItems$']) {\r\n to['offlineItems$'].subscribe((list: any[]) => {\r\n this._offlineList = list;\r\n this.initOfflineSelection(false);\r\n });\r\n } else {\r\n this._offlineList = to['offlineItems'] || [];\r\n this.initOfflineSelection(false);\r\n }\r\n } else {\r\n this.initOnlineSelection(false);\r\n }\r\n }\r\n })\r\n ;\r\n }\r\n\r\n // Remember to unsubscribe to prevent memory leaks!\r\n ngOnDestroy() {\r\n if (this.valueChangeSubscription) {\r\n this.valueChangeSubscription.unsubscribe();\r\n }\r\n }\r\nprivate loadDefaultValue() {\r\n this.loading = true;\r\n const vf = this.to['valueField'] || 'id';\r\n const fixedFilters = this.getFixedFilters();\r\n const lf = this.to['loadDefaultField'] || 'isDefault';\r\n const lfValue = this.to['loadDefaultValue'] || true;\r\nconst searchParams = {\r\n [lf]: lfValue,\r\n ...fixedFilters,\r\n };\r\n this.api.getList(searchParams)\r\n .subscribe({\r\n next: (res: any) => {\r\n // Assuming the API returns a list and you want to select the first one\r\n if (res && res.items && res.items.length > 0) {\r\n if (this.to['multiple']){\r\n this.formControl.setValue(res.items.map((c: any) => c[vf]));\r\n }\r\n else{\r\n const defaultValue = res.items[0];\r\n this.formControl.setValue(defaultValue?.[vf]);\r\n }\r\n }\r\n this.loading = false;\r\n // this.initOnlineSelection(); // Proceed with online selection after setting the value\r\n },\r\n error: (err: any) => {\r\n console.error(\"Failed to load default value from API:\", err);\r\n this.loading = false;\r\n // this.initOnlineSelection(); // Fallback to local selection if API fails\r\n }\r\n });\r\n}\r\n // New method to handle loading the default value from the API\r\n\r\n onSelectionChange(val: any) {\r\n this.selectedItem = val;\r\n\r\n const vf = this.to['valueField'] || 'id';\r\n\r\n if (this.to['multiple']) {\r\n this.formControl.setValue(\r\n Array.isArray(val) ? val.map((c: any) => c[vf]) : []\r\n );\r\n } else {\r\n this.formControl.setValue(val?.[vf] ?? null);\r\n }\r\n}\r\n private initOfflineSelection(withSetValue:boolean=true) {\r\n const val = this.formControl.value;\r\n const vf = this.to['valueField'] || 'id';\r\n\r\n if (val == null) return;\r\n\r\n if (this.to['multiple'] && Array.isArray(val)) {\r\n this.selectedItem = this._offlineList.filter(item =>\r\n val.includes(item[vf])\r\n );\r\n } else {\r\n this.selectedItem = this._offlineList.find(item => item[vf] === val);\r\n }\r\n\r\n if(withSetValue == true){\r\n\r\n this.formControl.setValue(\r\n this.to['multiple']\r\n ? this.selectedItem.map((c: any) => c[vf])\r\n : this.selectedItem?.[vf]\r\n );\r\n }\r\n else{\r\n if (this.props.change) {\r\n this.props.change(this.field, { item: this.selectedItem });\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n }\r\n\r\n private initOnlineSelection(withSetValue:boolean=true) {\r\n\r\n var d = this.selectedItem;\r\n const fullModel = this.model;\r\n const val = this.formControl.value;\r\n const vf = this.to['valueField'] || 'id';\r\n if (val == null || (Array.isArray(val) && val.length === 0)) {\r\n this.selectedItem = this.to['multiple'] ? [] : null;\r\n\r\n if (this.props['loadDefault'] == true) {\r\n this.loadDefaultValue();\r\n }\r\n else{\r\n\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n if (this.to['multiple'] && Array.isArray(val) && val.length) {\r\n const calls = val.map((id: any) => this.api.get(id));\r\n forkJoin(calls)\r\n .pipe(finalize(() => (this.loading = false)))\r\n .subscribe(items => {\r\n this.selectedItem = items;\r\n if(withSetValue == true){\r\n\r\n this.formControl.setValue(items.map((c: any) => c[vf]));\r\n this.cdr.detectChanges();\r\n }\r\n else{\r\n if (this.props.change) {\r\n this.props.change(this.field, { item: this.selectedItem });\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n });\r\n } else {\r\n this.loading = true;\r\n\r\n this.api.get(val)\r\n .pipe(finalize(() => (this.loading = false)))\r\n .subscribe((item: any) => {\r\n this.selectedItem = item;\r\n // debugger\r\n if(withSetValue == true){\r\n this.formControl.setValue(item?.[vf]);\r\n this.cdr.detectChanges();\r\n }\r\n else{\r\n if (this.props.change) {\r\n this.props.change(this.field, { item: this.selectedItem });\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\ngetFixedFilters(): any {\r\n const fixedFilters = this.to['fixedFilters'];\r\n\r\n if (typeof fixedFilters === 'function') {\r\n // Call with current model (and optionally field)\r\n return fixedFilters(this.model);\r\n }\r\n\r\n return fixedFilters || {};\r\n}\r\n\r\nsearch(event: { query: string }) {\r\n const q = event.query?.toString().toLowerCase() || '';\r\n const lf = this.to['labelField'] || 'name';\r\n const fixedFilters = this.getFixedFilters();\r\n\r\n\r\n if (this.to['offline']) {\r\n this.options_ = this.to['offlineDataFn']\r\n ? this.to['offlineDataFn'](q)\r\n : this._offlineList.filter(item =>\r\n item[lf]?.toString().toLowerCase().includes(q)\r\n );\r\n\r\n setTimeout(() => this.autoComp?.show(), 0);\r\n } else {\r\n this.loading = true;\r\n this.options_ = [];\r\n\r\n const searchParams = {\r\n [lf]: q,\r\n ...fixedFilters,\r\n };\r\n\r\n // ✅ استخدام listEndpoint إذا كان موجودًا، وإلا العودة إلى الافتراضي\r\n let listEndpoint = this.props.listEndpoint;\r\n if (typeof listEndpoint === 'function') {\r\n listEndpoint = listEndpoint(this.model);\r\n }\r\n\r\n this.api.getList(searchParams , listEndpoint)\r\n .pipe(finalize(() => (this.loading = false)))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.options_ = res.items ?? res ?? [];\r\n setTimeout(() => this.autoComp?.show(), 0);\r\n },\r\n error: () => {\r\n this.options_ = [];\r\n\r\n },\r\n });\r\n }\r\n}\r\n\r\n openCrud(mode: 'add' | 'edit' | 'info') {\r\n const payload = mode === 'add' ? null : this.selectedItem;\r\n\r\n // Example integration:\r\n // const ref = this.dialog.open(CrudComponent, {\r\n // data: {\r\n // serviceName: this.to.serviceName,\r\n // mode,\r\n // record: payload\r\n // }\r\n // });\r\n // ref.onClose.subscribe((updated: any) => {\r\n // if (!this.to.multiple && updated?.[this.to.valueField]) {\r\n // this.api.get(updated[this.to.valueField])\r\n // .subscribe(item => {\r\n // this.selectedItem = item;\r\n // this.formControl.setValue(item?.[this.to.valueField]);\r\n // });\r\n // }\r\n // });\r\n\r\n }\r\n\r\n getEmptyMessage(): string {\r\n if (this.loading) {\r\n return 'LOADING_DATA_MESSAGE'; // مفتاح ترجمة لـ \"جاري تحميل البيانات...\"\r\n } else if (this.options_.length === 0) {\r\n return 'NO_RESULTS_FOUND'; // مفتاح ترجمة لـ \"لا توجد نتائج مطابقة.\"\r\n }\r\n return ''; // لا تُعرض رسالة إذا كانت هناك نتائج\r\n }\r\n\r\nisItemSelected(item: any): boolean {\r\n const vf = this.to['valueField'] || 'id';\r\n return Array.isArray(this.selectedItem) &&\r\n this.selectedItem.some((sel: any) => sel[vf] === item[vf]);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\n\n@Component({\n selector: 'formly-field-icon-picker',\n imports:[FormsModule,CommonModule,DialogModule,ReactiveFormsModule,ButtonModule],\n template: `\n <div class=\"relative inline-block\">\n <!-- Toggle Button -->\n <button type=\"button\" class=\"px-2 py-1 border rounded shadow-sm bg-white dark:bg-gray-800 dark:border-gray-600\"\n (click)=\"dropdownOpen = !dropdownOpen\">\n <i [class]=\"formControl.value || 'fa-solid fa-circle-half-stroke'\" class=\"text-lg\"></i>\n <i class=\"fas fa-caret-down ml-1 text-xs\"></i>\n </button>\n\n <!-- Dropdown -->\n <div *ngIf=\"dropdownOpen\"\n class=\"absolute z-50 mt-2 w-72 rounded-md border border-gray-300 shadow-lg bg-white dark:bg-gray-800 dark:border-gray-600\">\n\n <!-- Header -->\n <div class=\"flex items-center justify-between px-2 py-1 border-b dark:border-gray-600\">\n <button (click)=\"prevPage()\" class=\"p-1 hover:text-blue-600\" [disabled]=\"page === 1\">\n <i class=\"fas fa-arrow-left\"></i>\n </button>\n <span class=\"text-xs text-gray-600 dark:text-gray-300\">Page {{ page }} / {{ totalPages }}</span>\n <button (click)=\"nextPage()\" class=\"p-1 hover:text-blue-600\" [disabled]=\"page === totalPages\">\n <i class=\"fas fa-arrow-right\"></i>\n </button>\n </div>\n\n <!-- Search -->\n <div class=\"p-2\">\n <input\n type=\"text\"\n placeholder=\"Search icon\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearch()\"\n class=\"w-full px-2 py-1 text-sm border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white\"\n />\n </div>\n\n <!-- Icon Grid -->\n <div class=\"grid grid-cols-4 gap-2 p-2 max-h-56 overflow-y-auto\">\n <button\n *ngFor=\"let icon of pagedIcons\"\n (click)=\"selectIcon(icon)\"\n class=\"flex items-center justify-center h-10 w-10 border rounded hover:bg-gray-100 dark:hover:bg-gray-700\"\n [ngClass]=\"{ 'ring-2 ring-blue-500': formControl.value === icon }\"\n >\n <i [class]=\"icon\" class=\"text-lg\"></i>\n </button>\n </div>\n\n <!-- Footer -->\n <div class=\"px-2 py-1 text-xs text-gray-500 dark:text-gray-400 border-t dark:border-gray-600\">\n {{ start + 1 }} - {{ end }} of {{ filteredIcons.length }}\n </div>\n </div>\n </div>\n\n `\n})\n\nexport class IconPickerComponent extends FieldType{\n dropdownOpen = false;\n searchQuery = '';\n page = 1;\n pageSize = 16;\n\n icons: string[] = [\n 'fa-solid fa-box',\n 'fa-solid fa-layer-group',\n 'fa-solid fa-table-columns',\n 'fa-solid fa-database',\n 'fa-solid fa-arrow-left',\n 'fa-solid fa-arrow-right',\n 'fa-solid fa-arrow-down',\n 'fa-solid fa-arrow-up',\n 'fa-solid fa-trash',\n 'fa-solid fa-gear',\n 'fa-solid fa-circle-check',\n 'fa-solid fa-circle-xmark',\n 'fa-solid fa-pen',\n 'fa-solid fa-copy',\n 'fa-solid fa-share',\n 'fa-solid fa-upload',\n 'fa-solid fa-download',\n 'fa-solid fa-image',\n 'fa-solid fa-chart-pie',\n // Add more FontAwesome Pro icons\n ];\n\n get filteredIcons() {\n if (!this.searchQuery) return this.icons;\n return this.icons.filter(icon =>\n icon.toLowerCase().includes(this.searchQuery.toLowerCase())\n );\n }\n\n get totalPages() {\n return Math.ceil(this.filteredIcons.length / this.pageSize);\n }\n\n get start() {\n return (this.page - 1) * this.pageSize;\n }\n\n get end() {\n return Math.min(this.start + this.pageSize, this.filteredIcons.length);\n }\n\n get pagedIcons() {\n return this.filteredIcons.slice(this.start, this.end);\n }\n\n onSearch() {\n this.page = 1;\n }\n\n selectIcon(icon: string) {\n this.formControl.setValue(icon);\n this.dropdownOpen = false;\n }\n\n nextPage() {\n if (this.page < this.totalPages) this.page++;\n }\n\n prevPage() {\n if (this.page > 1) this.page--;\n }\n}\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FieldType, FieldTypeConfig, FormlyAttributes } from '@ngx-formly/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToggleSwitch } from 'primeng/toggleswitch';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'formly-field-primeng-input-switch',\r\n standalone: true,\r\n imports: [CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ToggleSwitch,\r\n FormlyAttributes,\r\n TranslateModule,\r\n TooltipModule],\r\n template: `\r\n <!-- border border-gray-300 -->\r\n <div class=\"flex items-center justify-between rtl:flex-row-reverse w-full px-2 py-1\"\r\n style=\" border-radius: var(--p-inputtext-border-radius);\">\r\n\r\n <label [for]=\"id\" class=\"font-bold text-lg text-gray-800\">\r\n {{ (to.label ?? '') | translate }}\r\n\r\n <span *ngIf=\"to.required\" class=\"text-red-500\">*</span>\r\n </label>\r\n\r\n <p-toggleSwitch\r\n [formControl]=\"formControl\"\r\n [formlyAttributes]=\"field\"\r\n [pTooltip]=\"field.props['tooltip']\"\r\n [styleClass]=\"''\"\r\n [inputId]=\"id\"\r\n\r\n ></p-toggleSwitch>\r\n\r\n\r\n <!-- <label [for]=\"id\" class=\"font-bold text-lg text-gray-800 mr-2 whitespace-nowrap\">\r\n {{ (to.label ?? '') | translate}}\r\n </label> -->\r\n</div>\r\n <!-- [style]=\"to.['style']\" -->\r\n <!-- [disabled]=\"to.disabled ?? false\" -->\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class InputSwitchTypeComponent extends FieldType<FieldTypeConfig> {}\r\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-field-input-with-icon',\n imports:[FormlyModule,ReactiveFormsModule,CommonModule,FormsModule],\n template: `\n <div class=\"relative\">\n <!-- [formControl]=\"formControl\" -->\n <input\n [type]=\"type\"\n\n [formlyAttributes]=\"field\"\n class=\"w-full rounded-xl border border-gray-200 bg-gray-50 pl-12 pr-4 py-3 text-sm focus:border-primary focus:ring-2 focus:ring-blue-100 transition-all\"\n [placeholder]=\"to.placeholder\"\n [disabled]=\"to.disabled ? true : false\"\n />\n <i class=\"{{ to['icon'] }} absolute left-4 top-1/2 -translate-y-1/2 text-gray-400 text-base\"></i>\n </div>\n `,\n})\nexport class InputWithIconType extends FieldType {\n get type() {\n return this.to.type || 'text';\n }\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-label-type',\n standalone: true,\n template: `\n <div [class]=\"to['className'] || 'text-gray-700 font-bold'\">\n <span [innerHTML]=\"displayValue\" ></span>\n <!-- <span {}></span> -->\n </div>\n `,\n})\nexport class LabelTypeComponent extends FieldType {\nget displayValue(): any {\n const key = this.key as string;\n const val = this.model?.[key] ;\n const row = this.model ?? {};\n\n // تحقق من أن formatter دالة قبل الاستدعاء\n const formatter = this.props['formatter'];\n if (formatter && typeof formatter === 'function') {\n\n try {\n return formatter(row, val);\n } catch (e) {\n console.warn('Formatter error:', e);\n return val ?? '--';\n }\n }\n\n\n\n return val ?? '--';\n}\n\n\n\n}\n","import { TranslateModule } from '@ngx-translate/core';\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FieldArrayType, FormlyField } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { FormArray } from '@angular/forms';\n\n@Component({\n selector: 'formly-repeat-section',\n standalone: true,\n imports: [CommonModule, FormlyField, TranslateModule],\n template: `\n <div class=\"overflow-auto bg-gray-100 border border-gray-300\">\n <table *ngIf=\"(field.fieldGroup ?? []).length > 0\" class=\"table-auto w-full border border-gray-300\">\n <thead>\n <tr class=\"bg-gray-100 text-gray-700 text-sm\">\n <th class=\"w-8\"></th>\n <ng-container *ngFor=\"let col of getFirstRowColumns()\">\n <th class=\"text-center border\">{{ (col.props?.label ?? '') | translate }}</th>\n </ng-container>\n <th class=\"w-10\"></th>\n </tr>\n </thead>\n\n <tbody>\n <tr *ngFor=\"let row of field.fieldGroup; let rowIndex = index\" class=\"border-t\">\n <td class=\"bg-[#fffbea] text-center text-gray-400 px-2\"><i class=\"pi pi-bars\"></i></td>\n\n <ng-container *ngFor=\"let col of row.fieldGroup\">\n <td class=\"bg-[#fffbea]\">\n <formly-field [field]=\"col\"></formly-field>\n </td>\n </ng-container>\n\n <td class=\"text-center px-2 bg-[#fffbea]\">\n <ng-container *ngIf=\"rowIndex !== 0 || field.props?.['canDeleteFirstRow']\">\n <button type=\"button\" (click)=\"remove(rowIndex)\" class=\"text-red-600 hover:text-red-800\">\n <i class=\"pi pi-trash\"></i>\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div class=\"flex justify-end\">\n <button\n type=\"button\"\n class=\"inline-flex items-center gap-1 px-4 py-2 bg-primary-600 text-white text-sm font-medium hover:bg-primary-500 transition-colors duration-200 shadow-sm\"\n (click)=\"add()\"\n >\n <span class=\"text-lg\">+</span>\n </button>\n </div>\n </div>\n `,\n})\nexport class RepeatTypeComponent extends FieldArrayType implements OnInit {\n // Return columns of the first row (for table headers)\n getFirstRowColumns() {\n return this.field.fieldGroup?.[0]?.fieldGroup ?? [];\n }\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n ngOnInit() {\n\n // Subscribe to each FormArray changes\n // if (this.formControl instanceof FormArray) {\n this.field.formControl.valueChanges.subscribe(() => {\n // Force Angular to detect changes\n\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n });\n // }\n }\n}\n","\nimport { NgFor } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FieldType, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\nimport { TabsModule } from 'primeng/tabs';\n\n@Component({\n selector: 'formly-tabs-type',\n imports: [NgFor, FormlyForm,TabsModule],\n template: `\n <!-- <p-tabView>\n <p-tabPanel *ngFor=\"let tabField of field.fieldGroup; let i = index\" [disabled]=\"i !== 0 &&\n !isValid(field.fieldGroup![i - 1])\" [header]=\"tabField.props?.label || 'Tab '+(i+1)\">\n <formly-form [fields]=\"tabField.fieldGroup!\" [form]=\"form\" [options]=\"options\" [model]=\"model\"></formly-form>\n </p-tabPanel>\n </p-tabView> -->\n `\n})\nexport class TabsTypeComponent extends FieldType {\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field.formControl?.valid ?? true;\n }\n\n return field.fieldGroup ? field.fieldGroup.every((f) => this.isValid(f)) : true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'formly-color-tag-type',\n standalone: true,\n imports: [\n FormlyAttributes,\n TranslateModule,\n TooltipModule,\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n ],\n template: `\n <div\n class=\"inline-block px-3 py-1 rounded-full border text-sm\"\n [ngStyle]=\"{\n direction:'ltr',\n backgroundColor: colorValue,\n color: textColor,\n borderColor: colorValue\n }\"\n [pTooltip]=\"colorValue\"\n >\n {{ colorValue }}\n </div>\n `,\n})\nexport class ColorTagTypeComponent extends FieldType {\n get colorValue(): string {\n const val = this.formControl.value;\n return val && typeof val === 'string' && val.startsWith('#') ? val : '#cccccc';\n }\n\n get textColor(): string {\n // Simple check for light/dark background for contrast\n const hex = this.colorValue.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16) || 0;\n const g = parseInt(hex.substring(2, 4), 16) || 0;\n const b = parseInt(hex.substring(4, 6), 16) || 0;\n const brightness = (r * 299 + g * 587 + b * 114) / 1000;\n return brightness > 150 ? '#000' : '#fff';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'formly-option-tag-type',\n standalone: true,\n imports: [FormlyAttributes, TranslateModule, TooltipModule, CommonModule, ReactiveFormsModule, FormsModule],\n template: `\n <ng-container *ngIf=\"selectedOption\">\n <div\n class=\"inline-block px-3 py-1 rounded-full border text-sm\"\n [ngStyle]=\"{\n backgroundColor: selectedOption.color,\n color: textColor,\n borderColor: selectedOption.color\n }\"\n [pTooltip]=\"selectedOption.label | translate\"\n >\n {{ selectedOption.label | translate}}\n </div>\n </ng-container>\n `,\n})\nexport class OptionTagTypeComponent extends FieldType {\n get selectedOption() {\n return (this.props?.options ?? [] as any)?.find((opt: any) => opt.value === this.formControl.value);\n }\n get textColor(): string {\n // Simple check for light/dark background for contrast\n const hex = this.selectedOption.color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16) || 0;\n const g = parseInt(hex.substring(2, 4), 16) || 0;\n const b = parseInt(hex.substring(4, 6), 16) || 0;\n const brightness = (r * 299 + g * 587 + b * 114) / 1000;\n return brightness > 150 ? '#000' : '#fff';\n }\n}\n\n\n// {\n// key: 'tagColor',\n// type: 'color-tag',\n// templateOptions: {\n// options: [\n// { label: 'Red', value: 'red', color: '#ef4444' },\n// { label: 'Blue', value: 'blue', color: '#3b82f6' },\n// { label: 'Green', value: 'green', color: '#10b981' },\n// ],\n// },\n// hideLabel: true,\n// hooks: {\n// onInit: (field) => {\n// field.templateOptions.readonly = true;\n// }\n// }\n// }\n","import { Tag } from 'primeng/tag';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes } from '@ngx-formly/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'formly-tag-type',\n standalone: true,\n imports: [Tag,FormlyAttributes,TranslateModule,TooltipModule,CommonModule, ReactiveFormsModule],\n template: `\n <!--\n [formControl]=\"formControl\" -->\n <p-tag\n [formlyAttributes]=\"field\"\n [pTooltip]=\"getTooltip()\"\n [severity]=\"to['severity'] || getSeverity()\"\n [value]=\"getDisplayValue()\"\n [class]=\"to['styleClass'] || 'font-medium'\">\n </p-tag>\n `,\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagTypeComponent extends FieldType<FieldTypeConfig> {\n\n getTooltip(): string {\n const tooltipFrom = this.props['table']['props']['tooltipFrom'];\n return this.model?.[tooltipFrom]\n}\n getValue(): any {\n var key = this.key as string;\n const val = this.model?.[key];\n return val;\n }\n\n getSeverity(): string {\n const value = this.getValue();\n\n if (value === true) return 'success';\n if (value === false) return 'danger';\n return 'info';\n }\n\n getDisplayValue(): string {\n const value = this.getValue();\n\n if (value === true) return 'مفعل';\n if (value === false) return 'معطل';\n return String(value ?? '-');\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\n@Directive({\n selector: '[appAutofocus]',\n standalone:true\n})\nexport class AutofocusDirective implements OnChanges {\n @Input('appAutofocus') autoFocus: boolean | string = true;\n\n constructor(private el: ElementRef) {}\n\n ngOnChanges() {\n if (this.autoFocus === '' || this.autoFocus === true) {\n this.el.nativeElement.focus();\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { EditorModule } from 'primeng/editor';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { AutofocusDirective } from '../../directives/appAutofocus';\n\n@Component({\n selector: 'formly-rich-text-editor-type',\n standalone: true,\n imports: [CommonModule, FormsModule, EditorModule,AutofocusDirective],\n template: `\n <p-editor\n [(ngModel)]=\"formControl.value\"\n [appAutofocus]=\"to['autofocus'] || false\"\n [style]=\"{height: to['height'] || '200px'}\"\n [placeholder]=\"to.placeholder\"\n ></p-editor>\n `,\n})\nexport class RichTextEditorTypeComponent extends FieldType {}\n","// label.wrapper.ts – LabelWrapperComponent\nimport { NgIf } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'formly-label-wrapper',\n imports: [NgIf,TranslateModule],\n template: `\n <!-- font-semibold -->\n <label *ngIf=\"to.label\" [for]=\"id\" class=\"block mb-1 font-bold text-lg\">{{ to.label | translate }} <span *ngIf=\"to.required\" class=\"text-red-600\">*</span></label>\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to.description\" class=\"text-gray-500\">{{ to.description | translate}}</small>\n `\n})\nexport class LabelWrapperComponent extends FieldWrapper {}\n","// td-wrapper.component.ts\nimport { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\n\n@Component({\n imports:[],\n selector: 'formly-wrapper-td',\n template: `\n <ng-container #fieldComponent></ng-container>\n `,\n standalone: true,\n})\nexport class TdWrapperComponent extends FieldWrapper {}\n","import { Component, ChangeDetectionStrategy, Type, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlyFieldProps } from '../../form-field';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputNumber } from 'primeng/inputnumber';\n\ninterface InputProps extends FormlyFieldProps {\n showButtons?: boolean;\n autofocus?: boolean;\n useGrouping?: boolean;\n}\n\nexport interface FormlyInputFieldConfig extends FormlyFieldConfig<InputProps> {\n type: 'input' | Type<FormlyFieldInput>;\n}\n\n@Component({\n selector: 'formly-field-primeng-input',\n template: `\n <input\n *ngIf=\"props.type !== 'number'; else numberTmp\"\n pInputText\n [type]=\"props['type'] || 'text'\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n class=\"w-full rounded-none block\"\n #inputElement\n />\n <ng-template #numberTmp>\n <p-inputNumber\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"w-full rounded-none block\"\n [min]=\"props['min'] || 0\"\n [showButtons]=\"props['showButtons'] ?? false\"\n buttonLayout=\"horizontal\"\n spinnerMode=\"horizontal\"\n [useGrouping]=\"props['useGrouping']\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n #inputNumberElement>\n <ng-template #incrementbuttonicon>\n <span class=\"pi pi-plus\"></span>\n </ng-template>\n <ng-template #decrementbuttonicon>\n <span class=\"pi pi-minus\"></span>\n </ng-template>\n </p-inputNumber>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n InputTextModule,\n TranslateModule,\n InputNumber\n ]\n})\nexport class FormlyFieldInput extends FieldType<FieldTypeConfig<InputProps>> implements AfterViewInit {\n @ViewChild('inputElement') inputElement?: ElementRef<HTMLInputElement>;\n @ViewChild('inputNumberElement') inputNumberElement?: any; // p-inputNumber component reference\n\n ngAfterViewInit() {\n if (this.props.autofocus) {\n setTimeout(() => {\n if (this.props.type === 'number' && this.inputNumberElement?.el?.nativeElement) {\n // Focus for p-inputNumber\n this.inputNumberElement.el.nativeElement.querySelector('input')?.focus();\n } else if (this.inputElement?.nativeElement) {\n // Focus for regular input\n this.inputElement.nativeElement.focus();\n }\n });\n }\n }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldInput } from './input.type';\n\nexport function withFormlyFieldInput(): ConfigOption {\n return {\n types: [\n {\n name: 'input',\n component: FormlyFieldInput,\n wrappers: ['form-field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { FormlyFieldInput } from './input.type';\nimport { withFormlyFieldInput } from './input.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n// import { FormlyFormFieldModule } from '../../components/form-field';\n\n@NgModule({\n // declarations: [FormlyFieldInput],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldInput()),\n ],\n})\nexport class FormlyInputModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldSelectProps } from '@ngx-formly/core/select';\nimport { Select, SelectModule } from 'primeng/select';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\ninterface SelectProps extends FormlyFieldProps, FormlyFieldSelectProps {\n appendTo?: Select['appendTo'];\n filter?: boolean;\n filterBy?: string;\n}\n\nexport interface FormlySelectFieldConfig extends FormlyFieldConfig<SelectProps> {\n type: 'select' | Type<FormlyFieldSelect>;\n}\n\n@Component({\n selector: 'formly-field-primeng-select',\n template: `\n <p-select\n [options]=\"(props.options | formlySelectOptions: field | async) ?? []\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [showClear]=\"!props.required\"\n [appendTo]=\"props.appendTo\"\n [filter]=\"props.filter\"\n [filterBy]=\"props.filterBy ?? 'label'\"\n [optionLabel]=\"'label'\"\n [optionValue]=\"'value'\"\n (onChange)=\"props.change && props.change(field, $event)\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n [styleClass]=\"'w-full rounded-none block'\"\n >\n <!-- Template for each option in the dropdown -->\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex items-center gap-2\">\n <!-- Example: add an icon if option has one -->\n @if (option.icon) {\n\n <i [class]=\"option.icon\"></i>\n }\n <span>{{ option.label | translate }}</span>\n <!-- Example: show description -->\n @if (option.description) {\n\n <small class=\"text-gray-500\"> - {{ option.description | translate}}</small>\n }\n </div>\n </ng-template>\n\n <!-- Template for selected value -->\n <ng-template let-selected pTemplate=\"selectedItem\">\n <div class=\"flex items-center gap-2\">\n @if (selected?.icon) {\n <i [class]=\"selected.icon\"></i>\n }\n <span>{{ selected?.label | translate}}</span>\n </div>\n </ng-template>\n </p-select>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,FormlyAttributes,SelectModule,FormlyCoreSelectModule,TranslateModule]\n\n})\nexport class FormlyFieldSelect extends FieldType<FieldTypeConfig<SelectProps>> {}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldSelect } from './select.type';\n\nexport function withFormlyFieldSelect(): ConfigOption {\n return {\n types: [\n {\n name: 'select',\n component: FormlyFieldSelect,\n wrappers: ['form-field'],\n },\n { name: 'enum', extends: 'select' },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { SelectModule } from 'primeng/select';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\n\nimport { FormlyFieldSelect } from './select.type';\nimport { withFormlyFieldSelect } from './select.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldSelect],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SelectModule,\n FormlyFormFieldModule,\n FormlyCoreSelectModule,\n FormlyModule.forChild(withFormlyFieldSelect()),\n ],\n})\nexport class FormlySelectModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { SelectModule } from 'primeng/select';\nimport { TextareaModule } from 'primeng/textarea';\n\ninterface TextAreaProps extends FormlyFieldProps {}\n\nexport interface FormlyTextAreaFieldConfig extends FormlyFieldConfig<TextAreaProps> {\n type: 'textarea' | Type<FormlyFieldTextArea>;\n}\n\n@Component({\n selector: 'formly-field-primeng-textarea',\n template: ` <textarea [formControl]=\"formControl\" [formlyAttributes]=\"field\" class=\"w-full rounded-none block\" [placeholder]=\"(props['placeholder'] ?? '')| translate\" pInputTextarea></textarea> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n SelectModule,\n TextareaModule,\n TranslateModule\n ]\n})\nexport class FormlyFieldTextArea extends FieldType<FieldTypeConfig<TextAreaProps>> {}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldTextArea } from './textarea.type';\n\nexport function withFormlyFieldTextArea(): ConfigOption {\n return {\n types: [\n {\n name: 'textarea',\n component: FormlyFieldTextArea,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TextareaModule } from 'primeng/textarea';\nimport { FormlyFieldTextArea } from './textarea.type';\nimport { withFormlyFieldTextArea } from './textarea.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldTextArea],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TextareaModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldTextArea()),\n ],\n})\nexport class FormlyTextAreaModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldProps as CheckboxProps, FormlyFormFieldModule } from '../../form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { CheckboxModule } from 'primeng/checkbox';\n\nexport interface FormlyCheckboxFieldConfig extends FormlyFieldConfig<CheckboxProps> {\n type: 'checkbox' | Type<FormlyFieldCheckbox>;\n}\n\n@Component({\n selector: 'formly-field-primeng-checkbox',\n template: `\n <!-- <div class=\"p-field-checkbox flex items-center gap-1\">\n\n <p-checkbox\n [binary]=\"true\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [inputId]=\"id\"\n\n />\n <label [for]=\"id\" class=\"ml-2\">{{ (props['label'] ?? '') | translate}}</label>\n </div> -->\n\n <div class=\"flex items-center justify-end rtl:flex-row-reverse w-full px-2 py-1\" style=\" border-radius: var(--p-inputtext-border-radius);\">\n<!-- text-lg -->\n <label [for]=\"id\" class=\"font-bold text-gray-800 mr-2 whitespace-nowrap\">\n {{ (to.label ?? '') | translate }}\n </label>\n <p-checkbox\n [binary]=\"true\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [inputId]=\"id\"\n\n />\n</div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[ CommonModule,ReactiveFormsModule,DatePickerModule,FormlyFormFieldModule,FormlyAttributes,TranslateModule,CheckboxModule]\n})\nexport class FormlyFieldCheckbox extends FieldType<FieldTypeConfig<CheckboxProps>> {\n override defaultOptions = { props: { hideLabel: true } };\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldCheckbox } from './checkbox.type';\n\nexport function withFormlyFieldCheckbox(): ConfigOption {\n return {\n types: [\n {\n name: 'checkbox',\n component: FormlyFieldCheckbox,\n wrappers: ['form-field'],\n },\n {\n name: 'boolean',\n extends: 'checkbox',\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxModule } from 'primeng/checkbox';\n\nimport { FormlyFieldCheckbox } from './checkbox.type';\nimport { withFormlyFieldCheckbox } from './checkbox.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n // declarations: [FormlyFieldCheckbox],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CheckboxModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldCheckbox()),\n ],\n})\nexport class FormlyCheckboxModule {}\n","import { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'formly-panel-wrapper',\n standalone: true,\n imports: [TranslateModule],\n template: `\n @if (to.hidden == false || !to.hidden) {\n <div style=\"border-radius: var(--content-border-radius);\"\n class=\"border border-surface rounded-2xl bg-white p-3 mb-2\">\n\n @if (to.label) {\n <div class=\"font-bold mb-2 flex items-center gap-2\">\n @if (to['icon']) {\n <i class=\"{{ to['icon'] }}\"></i>\n }\n {{ to.label | translate }}\n </div>\n }\n\n <ng-container #fieldComponent></ng-container>\n </div>\n }\n `,\n})\nexport class PanelWrapperComponent extends FieldWrapper {}\n","\r\nimport { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-clickable-label-type',\r\n standalone: true,\r\n template: `\r\n\r\n<a class=\"cursor-pointer hover:underline hover:text-blue-600 font-bold\"\r\n (click)=\"handleCellClick(props,model, $event)\"\r\n (mouseenter)=\"props['hoverable'] && onCellHover(props, model, $event)\"\r\n (mouseleave)=\"props['hoverable'] && onCellLeave(props, model, $event)\"\r\n >\r\n @if(props['formatter']){\r\n <span [innerHTML]=\"props['formatter'](model)\"></span>\r\n }\r\n @else{\r\n {{ getCellValue(props, model) }}\r\n }\r\n\r\n\r\n </a>\r\n `,\r\n})\r\nexport class ClickableLabelTypeComponent extends FieldType {\r\n onCellLeave(col: any, row: any, event: MouseEvent) { // <--- تعديل هنا\r\n event.stopPropagation(); // يمنع اختيار الصف\r\n col.onCellMouseLeave?.(row, event); // <--- استدعاء الدالة المخصصة للمغادرة\r\n }\r\n onCellHover(col: any, row: any, event: MouseEvent) { // <--- تعديل هنا\r\n event.stopPropagation(); // يمنع اختيار الصف\r\n col.onCellMouseEnter?.(row, event); // <--- استدعاء الدالة المخصصة للتحويم\r\n }\r\n\r\n handleCellClick(col: any, model: any, event: MouseEvent) {\r\n event.stopPropagation();\r\n col?.clickAction?.(model, event);\r\n }\r\n\r\ngetCellValue(col: any, model: any) {\r\n const field = this.key as string;\r\n const pipeFn = this.props['pipe'] as ((v: any) => any) | undefined;\r\n return pipeFn ? pipeFn(model[col.key as string]) : model[field];\r\n}\r\n}\r\n","import { provideFormlyCore } from '@ngx-formly/core';\r\nimport { withFormlyPrimeNG } from '@ngx-formly/primeng';\r\nimport { AttachmentTypeComponent } from '../components/attachments/attachment-type';\r\nimport { ColorPickerComponent } from '../components/color-picker/color-picker.type';\r\nimport { withFormlyFieldDatepicker } from '../components/datepicker';\r\nimport { GenericSelectorTypeComponent } from '../components/generic-selector/generic-selector.component';\r\nimport { IconPickerComponent } from '../components/icon-picker/icon-picker.type';\r\nimport { InputSwitchTypeComponent } from '../components/input-switch/input-switch.type';\r\nimport { InputWithIconType } from '../components/input-with-icon/input-with-icon.type';\r\nimport { LabelTypeComponent } from '../components/label-type/label-type';\r\nimport { RepeatTypeComponent } from '../components/repeat/repeat-section.type';\r\nimport { TabsTypeComponent } from '../components/tabs/tabs.type';\r\nimport { ColorTagTypeComponent } from '../components/tag-type/formly-color-tag-type';\r\nimport { OptionTagTypeComponent } from '../components/tag-type/formly-option-tag-type';\r\nimport { TagTypeComponent } from '../components/tag-type/formly-tag-type';\r\nimport { RichTextEditorTypeComponent } from '../components/text-editor/formly-rich-text-editor-type';\r\nimport { LabelWrapperComponent } from '../components/wrappers/label.wrapper';\r\nimport { TdWrapperComponent } from '../components/wrappers/td-wrapper.type';\r\nimport { withFormlyFormField } from '../components/form-field';\r\nimport { FormlyFieldInput, withFormlyFieldInput } from '../components/input';\r\nimport { withFormlyFieldSelect } from '../components/select';\r\nimport { withFormlyFieldTextArea } from '../components/textarea';\r\nimport { withFormlyFieldCheckbox } from '../components/checkbox';\r\nimport { PanelWrapperComponent } from '../components/wrappers/panel.wrapper';\r\nimport { CustomSwitchFieldComponent } from '../components/custom-switch/custom-switch';\r\nimport { FormlyAvatarLabelComponent } from '../components/formly-avatar-label/formly-avatar-label';\r\nimport { FormlySelectionButtonComponent } from '../components/formly-button-selector/formly-button-selector';\r\nimport { FormlyButtonComponent } from '../components/formly-button/formly-button';\r\nimport { FormlySplitButtonComponent } from '../components/formly-split-button/formly-split-button';\r\nimport { UsernameWithDomainComponent } from '../components/formly-username-with-domain/formly-username-with-domain';\r\nimport { ClickableLabelTypeComponent } from '../components/label-type/clickable-label-type';\r\nimport { FormlyFieldButton } from '../components/form-button/form-button.type';\r\nimport { FormlyTemplateType } from '../components/form-template/template.type';\r\nimport { ConditionExpressionBuilderType } from '../components/condition-editor/condition-editor-type';\r\nimport { FormlyAvatarImageComponent } from '../components/formly-avatar-image/formly-avatar-image';\r\n\r\nexport const provideFormly = provideFormlyCore([\r\n ...withFormlyPrimeNG(),\r\n\r\n withFormlyFormField(),\r\n withFormlyFieldInput(),\r\n withFormlyFieldSelect(),\r\n withFormlyFieldDatepicker(),\r\n withFormlyFieldTextArea(),\r\n\r\n // withFormlyFieldRadio(),\r\n withFormlyFieldCheckbox(),\r\n\r\n {\r\n types: [\r\n { name: 'advanced-input', component: FormlyFieldInput, wrappers: ['form-field'], },\r\n { name: 'string', extends: 'input' },\r\n { name: 'number', extends: 'input', defaultOptions: { props: { type: 'number', }, }, },\r\n { name: 'integer', extends: 'input', defaultOptions: { props: { type: 'number', }, }, },\r\n { name: 'inputWithIcon', component: InputWithIconType, wrappers: ['form-field'] },\r\n { name: 'attachment-type', component: AttachmentTypeComponent, wrappers: ['form-field'] },\r\n { name: 'rich-text-editor', component: RichTextEditorTypeComponent, wrappers: ['form-field'] },\r\n { name: 'generic-selector', component: GenericSelectorTypeComponent, wrappers: ['form-field'] },\r\n { name: 'switch', component: InputSwitchTypeComponent, wrappers: ['form-field-no'] },\r\n { name: 'username-with-domain', component: UsernameWithDomainComponent, wrappers: ['form-field'] },\r\n { name: 'custom-switch', component: CustomSwitchFieldComponent, wrappers: ['form-field-no'] },\r\n { name: 'Formly-Split', component: FormlySplitButtonComponent, wrappers: ['form-field'] },\r\n { name: 'Button-Selection', component: FormlySelectionButtonComponent, wrappers: ['form-field'] },\r\n {name: 'avatar-label-button',component: FormlyAvatarLabelComponent,},\r\n {name: 'formly-button',component: FormlyButtonComponent,},\r\n {name: 'label-type',component: LabelTypeComponent},\r\n {name: 'clickable-label-type',component: ClickableLabelTypeComponent},\r\n {name: 'option-tag',component: OptionTagTypeComponent},\r\n { name: 'repeat', component: RepeatTypeComponent },\r\n { name: 'tabs', component: TabsTypeComponent },\r\n {name: 'tag',component: TagTypeComponent},\r\n {name: 'color-tag',component: ColorTagTypeComponent},\r\n {name: 'condition-builder',component: ConditionExpressionBuilderType ,wrappers: ['form-field'],},\r\n {name: 'icon-picker',component: IconPickerComponent ,wrappers: ['form-field-no'],},\r\n {name: 'color-picker',component: ColorPickerComponent ,wrappers: ['form-field-no'],},\r\n {name: 'template',component: FormlyTemplateType,},\r\n {\r\n name: 'button',\r\n component: FormlyFieldButton,\r\n wrappers: ['form-field'],\r\n defaultOptions: {\r\n props: {\r\n btnType: 'default',\r\n type: 'button',\r\n },\r\n },\r\n },\r\n {name: 'avatar-image',component: FormlyAvatarImageComponent},\r\n ],\r\n wrappers: [\r\n // { name: 'tooltip', component: TooltipWrapperComponent },\r\n { name: 'panel', component: PanelWrapperComponent },\r\n { name: 'label', component: LabelWrapperComponent },\r\n { name: 'td', component: TdWrapperComponent },\r\n ],\r\n validationMessages: [\r\n { name: 'required', message: 'هذا الحقل مطلوب' },\r\n ],\r\n }\r\n]);\r\n","import { Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyForm, FormlyFormOptions, } from '@ngx-formly/core';\nimport { MessageService } from 'primeng/api';\nimport { DrawerModule, Drawer } from 'primeng/drawer';\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\nimport { NgClass } from '@angular/common';\nimport { provideFormly } from '../../providers/formly.config';\n\n\n@Component({\n standalone:true,\n selector: 'app-generic-drawer',\n imports: [\n CommonModule,\n ButtonModule,\n FormlyForm,\n FormsModule,\n ReactiveFormsModule,\n DrawerModule,\n TranslateModule,\n NgClass,\n Drawer\n ],\n providers: [MessageService,provideFormly],\n templateUrl: './generic-drawer.html',\n styleUrls: ['./generic-drawer.css'],\n\n})\n\nexport class GenericDrawerComponent implements OnInit, OnChanges {\n @Input() visible = false; // للتحكم في ظهور الدرج\n @Input() initialModel: any = {}; // النموذج الأولي للبيانات (فارغ للإضافة، أو بيانات الكائن للتعديل)\n @Input() fields: FormlyFieldConfig[] = []; // حقول Formly لتشكيل النموذج\n fields_: FormlyFieldConfig[] = []; // حقول Formly لتشكيل النموذج\n @Input() options: FormlyFormOptions = {}; // خيارات Formly\n @Input() drawerTitle: string = ''; // عنوان الدرج (مثلاً: \"إضافة منتج\", \"تعديل مستخدم\")\n @Input() isSaving = false; // للتحكم في حالة التحميل/الحفظ من المكون الأب\n @Input() drawerWidth: string = '400px'; // عرض الدرج الافتراضي\n @Input() showSaveButton: boolean = true; // لإظهار أو إخفاء زر الحفظ\n @Input() showCancelButton: boolean = true; // لإظهار أو إخفاء زر الإلغاء\n\n\n @Output() visibleChange = new EventEmitter<boolean>(); // لتحديث حالة الظهور في المكون الأب\n @Output() submitted = new EventEmitter<any>(); // ينبعث عند الضغط على حفظ والنموذج سليم\n @Output() canceled = new EventEmitter<void>(); // ينبعث عند إلغاء العملية أو إغلاق الدرج\n\n form = new FormGroup({});\n model: any = {}; // النموذج الذي يتعامل معه Formly داخليًا\n\n translate: TranslateService = inject(TranslateService);\n private messageService = inject(MessageService);\n\n ngOnInit() {\n this.fields_ = this.fields;\n this.resetForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['visible'] && changes['visible'].currentValue) {\n // عند فتح الدرج (visible يصبح true)، نقوم بتهيئة النموذج من initialModel\n this.model = { ...this.initialModel }; // نعمل نسخة لتجنب التغيير المباشر\n this.form.reset(this.model); // إعادة تعيين النموذج بقيمه الجديدة\n } else if (changes['visible'] && !changes['visible'].currentValue) {\n // عند إغلاق الدرج (visible يصبح false)، يمكننا تنظيف النموذج\n this.form.reset();\n this.model = {};\n }\n }\n\n /**\n * تُستدعى عند الضغط على زر \"حفظ\" داخل الدرج.\n * تتحقق من صحة النموذج ثم تُطلق حدث `submitted`.\n */\n onSubmit() {\n console.log('Form is valid:', this.form.valid);\n console.log('Form errors:', this.form.errors);\n console.log('Model:', this.model);\n console.log('Form Controls:', this.form.controls);\n if (this.form.invalid) {\n const controls = this.form.controls as { [key: string]: any }; // ✅ الحل هنا\n\n Object.keys(controls).forEach(key => {\n const controlErrors = controls[key].errors;\n if (controlErrors != null) {\n console.log(`Validation errors for control '${key}':`, controlErrors);\n }\n });\n this.form.markAllAsTouched();\n this.messageService.add({\n severity: 'error',\n detail: this.translate.instant('COMMON.FILL_REQUIRED_FIELDS'),\n });\n return;\n }\n // نطلق حدثًا يحتوي على النموذج الحالي بعد التحقق من صحته\n // المكون الأب سيكون مسؤولاً عن استدعاء خدمة API المناسبة\n this.submitted.emit(this.model);\n }\n\n /**\n * تُستدعى عند الضغط على زر \"إلغاء\" أو زر الإغلاق (X) في الرأس.\n * تُغلق الدرج وتُطلق حدث `canceled`.\n */\n closeDrawer() {\n this.visible = false;\n this.visibleChange.emit(false); // إبلاغ المكون الأب بتغير حالة الظهور\n this.canceled.emit(); // إبلاغ المكون الأب بالإلغاء\n this.resetForm(); // إعادة تعيين النموذج لتنظيفه\n }\n\n /**\n * تُستدعى عندما يقوم `p-drawer` بإغلاق نفسه (مثل النقر خارج الدرج أو الضغط على Esc).\n * هذا يضمن أن يتم تحديث حالة `visible` في المكون الأب.\n */\n onDrawerHide() {\n this.visibleChange.emit(false);\n this.canceled.emit(); // يمكن التعامل مع هذا كحدث إلغاء أيضاً\n this.resetForm(); // إعادة تعيين النموذج\n }\n\n private resetForm() {\n // إعادة تعيين النموذج إلى initialModel عند الفتح، أو تنظيفه عند الإغلاق\n this.model = { ...this.initialModel };\n this.form.reset(this.model);\n }\n\n /**\n * تحدد ما إذا كانت العملية إضافة أم تعديل بناءً على وجود معرف (id) في النموذج.\n * يمكن استخدامها لتغيير الأيقونة أو النص في الرأس.\n */\n isEditMode(): boolean {\n // افتراضياً، نعتبر أن وجود خاصية 'id' (أو `yourIdPropertyName`) يعني وضع التعديل.\n // يمكنك تعديل هذا الشرط ليتناسب مع نموذج البيانات الخاص بك.\n return !!this.initialModel?.id;\n }\n}\n","<p-drawer \n [(visible)]=\"visible\"\n (onHide)=\"onDrawerHide()\"\n position=\"left\"\n [modal]=\"true\"\n [blockScroll]=\"true\"\n [showCloseIcon]=\"true\"\n [style]=\"{ width: drawerWidth }\"\n styleClass=\"h-screen flex flex-col p-0\"\n appendTo=\"body\"\n>\n <ng-template pTemplate=\"header\">\n <div\n class=\"flex items-center justify-between p-4 border-b bg-white\"\n class=\"drawer-header\"\n >\n <span class=\"font-semibold text-lg flex items-center gap-2\">\n <i\n class=\"pi\"\n [ngClass]=\"{ 'pi-plus': !isEditMode(), 'pi-pencil': isEditMode() }\"\n ></i>\n {{ drawerTitle }}\n </span>\n <!-- <button\n pButton\n icon=\"pi pi-times\"\n class=\"p-button-text\"\n (click)=\"closeDrawer()\"\n ></button> -->\n </div>\n </ng-template>\n\n <div class=\"flex-grow p-4 space-y-6\" class=\"drawer-content\">\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields_\"\n [model]=\"model\"\n [options]=\"options\"\n class=\"space-y-6\"\n ></formly-form>\n\n </form>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div\n class=\"flex justify-end gap-2 p-4 border-t bg-white\"\n class=\"drawer-footer\"\n >\n <button\n *ngIf=\"showCancelButton\"\n pButton\n label=\"{{ 'COMMON.CANCEL' | translate }}\"\n class=\"p-button-secondary\"\n (click)=\"closeDrawer()\"\n [disabled]=\"isSaving\"\n ></button>\n <button\n *ngIf=\"showSaveButton\"\n pButton\n label=\"{{ 'COMMON.SAVE' | translate }}\"\n icon=\"pi pi-save\"\n [loading]=\"isSaving\"\n [disabled]=\"form.invalid || isSaving\"\n (click)=\"onSubmit()\"\n ></button>\n </div>\n </ng-template>\n</p-drawer>\n\n\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-generic-loadingspinner',\n imports: [CommonModule],\n templateUrl: './generic-loadingspinner.html',\n styleUrl: './generic-loadingspinner.css'\n})\nexport class GenericLoadingspinner {\n@Input() loading: boolean = false;\n}\n\n\n\n\n"," <ng-container *ngIf=\"loading\"> \n <div class=\"flex justify-center items-center my-6\"> \n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\"> \n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle> \n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path> \n </svg> \n <span class=\"ml-2 text-gray-700\">جاري التحميل...</span> \n </div> \n </ng-container>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-header-wrapper',\n imports: [],\n templateUrl: './header-wrapper.html',\n styleUrl: './header-wrapper.css'\n})\nexport class HeaderWrapper {\n\n}\n","<p>header-wrapper works!</p>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\n\n@Component({\n selector: 'lib-sidebar-card',\n standalone: true,\n imports: [CommonModule, NgClass],\n templateUrl: './sidebar-cards.html',\n})\nexport class SidebarCards {\n /** عنوان الهيدر **/\n @Input() header = '';\n /** فئة أيقونة Font-Awesome **/\n @Input() icon = '';\n /** هل المحتوى مفتوح **/\n @Input() open = false;\n /** يرسل تغيير الحالة للأبّ **/\n @Output() openChange = new EventEmitter<boolean>();\n\n toggle() {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n}\n","<!-- sidebar-card.component.html -->\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\n <!-- رأس الكرت -->\n <div\n class=\"flex items-center justify-between p-4 bg-white cursor-pointer select-none rounded-t-2xl\"\n (click)=\"toggle()\"\n >\n <div class=\"flex items-center space-x-2\">\n <i [class]=\"icon + ' text-blue-600 text-lg'\"></i>\n <span class=\"font-semibold text-gray-800\">{{ header }}</span>\n </div>\n <i\n class=\"fas text-gray-400 transition-transform duration-200\"\n [ngClass]=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\n ></i>\n </div>\n\n <!-- محتوى الكرت -->\n <div\n *ngIf=\"open\"\n class=\"p-4 bg-white border-t border-gray-200 rounded-b-2xl space-y-3 text-sm text-gray-700\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\n\n@Component({\n selector: 'lib-sidebar-toggles',\n standalone: true,\n imports: [CommonModule, NgClass],\n templateUrl: './sidebar-toggles.html',\n styleUrls: ['./sidebar-toggles.css'],\n})\nexport class SidebarToggles {\n /** هل كلها مفتوحة الآن؟ */\n @Input() allOpen = false;\n /** حالة بطاقة تفاصيل العميل */\n @Input() contactOpen = false;\n /** حالة بطاقة الـ Timeline */\n @Input() timelineOpen = false;\n\n @Output() toggleAll = new EventEmitter<void>();\n @Output() toggleContact = new EventEmitter<void>();\n @Output() toggleTimeline = new EventEmitter<void>();\n}\n","<div class=\"fixed right-0 top-0 h-full w-16 bg-gray-100 border-l border-gray-200\n flex flex-col items-center py-4 space-y-4 z-50\">\n <!-- collapse/expand all -->\n <button\n (click)=\"toggleAll.emit()\"\n class=\"bg-blue-600 text-white p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-blue-300\"\n >\n <i\n class=\"fas fa-arrow-right text-xl transition-transform\"\n [ngClass]=\"{ 'rotate-180': allOpen }\"\n ></i>\n </button>\n\n <!-- contact -->\n <button\n (click)=\"toggleContact.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': contactOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !contactOpen\n }\"\n >\n <i class=\"fas fa-info-circle text-xl\"></i>\n </button>\n\n <!-- timeline -->\n <button\n (click)=\"toggleTimeline.emit()\"\n class=\"p-3 rounded-xl shadow-lg transition transform hover:-translate-y-0.5 focus:outline-none focus:ring-2\"\n [ngClass]=\"{\n 'bg-blue-600 text-white': timelineOpen,\n 'bg-white text-gray-700 hover:bg-gray-100': !timelineOpen\n }\"\n >\n <i class=\"fas fa-paperclip text-xl\"></i>\n </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n imports:[CommonModule,TooltipModule],\n selector: 'app-tooltip-wrapper',\n template: `\n <div class=\"flex flex-col\">\n <label *ngIf=\"field.props?.label\" class=\"flex items-center mb-1 text-sm font-medium text-gray-700\">\n {{ field.props?.label }}\n\n <!-- PrimeNG Tooltip Icon -->\n <span\n *ngIf=\"field && field.props && field.props['tooltip']\"\n [pTooltip]=\"field.props['tooltip']\"\n [tooltipPosition]=\"field.props['tooltipPosition'] || 'right'\"\n [tooltipStyleClass]=\"field.props['tooltipClass']\"\n class=\"ml-2 cursor-help inline-flex items-center\"\n >\n <i class=\"pi pi-info-circle text-gray-500 text-sm\"></i>\n </span>\n\n <!-- Required Asterisk -->\n <span *ngIf=\"field.props?.required\" class=\"text-red-500 ml-1\">*</span>\n </label>\n\n <ng-template #fieldComponent></ng-template>\n\n <!-- <div *ngIf=\"showError && field.formControl?.errors\" class=\"text-red-500 text-xs mt-1\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div> -->\n </div>\n `\n})\nexport class TooltipWrapperComponent extends FieldWrapper {\n // @ViewChild('fieldComponent', { read: ViewContainerRef, static: true }) fieldComponent!: ViewContainerRef;\n\n // get showError(): boolean {\n // return this.field.formControl?.invalid && (\n // this.field.formControl?.dirty ||\n // this.field.formControl?.touched ||\n // this.options.parentForm?.submitted\n // );\n // }\n}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { FieldType, FieldTypeConfig, FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { FormlyFieldProps, FormlyFormFieldModule } from '../../form-field';\n\ntype RadioProps = FormlyFieldProps;\n\nexport interface FormlyRadioFieldConfig extends FormlyFieldConfig<RadioProps> {\n type: 'radio' | Type<FormlyFieldRadio>;\n}\n\n@Component({\n selector: 'formly-field-primeng-radio',\n template: `\n <div\n class=\"p-field-radiobutton\"\n *ngFor=\"let option of props.options | formlySelectOptions: field | async; let index = index\"\n >\n <p-radioButton\n [name]=\"field.name || id\"\n [formControl]=\"option.disabled ? disabledControl : formControl\"\n [value]=\"option.value\"\n [inputId]=\"id + index\"\n >\n </p-radioButton>\n <label [for]=\"id + index\" class=\"ml-2\">{{ option.label }}</label>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:false\n})\nexport class FormlyFieldRadio extends FieldType<FieldTypeConfig<RadioProps>> {\n get disabledControl() {\n return new UntypedFormControl({ value: this.formControl.value, disabled: true });\n }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldRadio } from './radio.type';\n\nexport function withFormlyFieldRadio(): ConfigOption {\n return {\n types: [\n {\n name: 'radio',\n component: FormlyFieldRadio,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlySelectModule } from '@ngx-formly/core/select';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { FormlyFieldRadio } from './radio.type';\nimport { withFormlyFieldRadio } from './radio.config';\nimport { FormlyFormFieldModule } from '../../form-field';\n\n@NgModule({\n declarations: [FormlyFieldRadio],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n RadioButtonModule,\n\n FormlyFormFieldModule,\n FormlySelectModule,\n FormlyModule.forChild(withFormlyFieldRadio()),\n ],\n})\nexport class FormlyRadioModule {}\n","// src/app/shared/components/base-crud.component.ts\r\nimport { Directive, inject } from '@angular/core';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ActionDef } from '../models/Actiondef';\r\nimport { PaginatedResult } from '../models/Paginated';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { GenericCrudDialog } from './generic-crud-dialog/generic-crud-dialog';\r\nimport { BaseService } from '../services/base.service';\r\nimport { DeactivationReasonFormComponent } from './deactivation-reason/deactivation-reason';\r\nimport { SwalService } from '../services/SwalService.service';\r\n\r\n@Directive()\r\nexport abstract class BaseCrud<T, F = any> {\r\n list: T[] = [];\r\n paginator: boolean = true;\r\n canLoad: boolean = true;\r\n loading: boolean = false;\r\n errorMsg: string = '';\r\n first: number = 0;\r\n rows: number = 10;\r\n totalRecords: number = 0;\r\n searchGlobal: string = '';\r\n sort?: string;\r\n pageFilters: Partial<F> = {};\r\n currentFilters: Partial<F> = {};\r\n mode: string ='';\r\n scrollHeight: string ='400px';\r\n private swalService = inject(SwalService);\r\n\r\n protected dialogRef!: DynamicDialogRef;\r\n\r\n\r\n // abstract service: CrudService<T, F>;\r\n abstract service: BaseService;\r\n abstract dialogService: DialogService;\r\n // abstract dialogComponent: any;\r\n // abstract columns: ColumnDef<T>[];\r\n abstract actions: ActionDef<T>[];\r\n\r\n // for generic dialog:\r\n abstract formFields: FormlyFieldConfig[];\r\n abstract idField: keyof T;\r\n dialogVisible: boolean = false;\r\n drawerVisible: boolean = false;\r\n selectedItem: T | any = null;\r\n defaultModel: T | any = null;\r\n // selectedItem: T | any = {};\r\n isViewMode = false;\r\n isEditMode = false;\r\n\r\n\r\n\r\nloadPage(pageIndex: number, pageSize: number): void {\r\n if(this.canLoad){\r\n\r\n\r\n this.loading = true;\r\n var filters: Partial<F> = {\r\n maxResultCount:pageSize,\r\n skipCount:pageIndex,\r\n sorting:this.sort,\r\n ...this.currentFilters,\r\n ...this.pageFilters,\r\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\r\n };\r\n //\r\n this.service.getList(filters)\r\n .subscribe({\r\n next: (res: PaginatedResult<T>) => {\r\n //\r\n this.list = res.items;\r\n this.totalRecords = res.totalCount;\r\n this.loading = false;\r\n },\r\n error: err => {\r\n this.errorMsg = err.error?.message || err.message || 'خطأ في التحميل';\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n}\r\n\r\nonSearch(filters?: any): void {\r\n //\r\n if (filters && typeof filters === 'object' && !Array.isArray(filters)) {\r\n this.pageFilters = filters;\r\n } else {\r\n this.searchGlobal = filters;\r\n }\r\n\r\n this.loadPage(0, 10);\r\n}\r\n\r\n\r\n\r\nvisibleChange(value:boolean){\r\n if(this.mode == 'view'){\r\n this.dialogVisible = value;\r\n }\r\n else{\r\n\r\n this.drawerVisible = value;\r\n }\r\n}\r\n\r\n\r\nonPageChange(event: { first?: number; rows?: number; sort?: string; filters?: Record<string, any> }): void {\r\n // فك المتغيّرات مع قيمة افتراضية لفلاتر\r\n const {\r\n first = this.first,\r\n rows = this.rows,\r\n sort = this.sort,\r\n filters = {}\r\n } = event;\r\n\r\n this.first = first;\r\n this.rows = rows;\r\n this.sort = sort;\r\n\r\n // const pageIndex = Math.floor(first / rows);\r\n const skipCount = first;\r\n const pageIndex = skipCount;\r\n\r\n // الوصول للفلتر العام عبر الصيغة المربعة\r\n const globalValue = filters['global'];\r\n this.searchGlobal = typeof globalValue === 'string' ? globalValue : '';\r\n\r\n // فلترة خاصة بحقل واحد\r\n // const fieldFilters = { ...filters };\r\n // delete fieldFilters['global'];\r\n // this.currentFilters = fieldFilters as Partial<F>;\r\n\r\n\r\n\r\n this.loadPage(pageIndex, rows);\r\n}\r\n\r\n\r\n\r\nonTableAction(event: { name: string; row: T | null }): void {\r\n switch (event.name) {\r\n case 'add': this.openDrawer(null,event.name); break;\r\n case 'view': this.openDrawer(event.row!,event.name); break;\r\n case 'edit': this.openDrawer(event.row!,event.name); break;\r\n case 'delete': this.onDelete(event.row!);break;\r\n case 'state': this.openDeactivationReason(event.row!);break;\r\n }\r\n}\r\n\r\n\r\nprotected openDrawer(item: T | null,mode:string): void {\r\n\r\n this.mode = mode;\r\n\r\n // this.drawerVisible = !this.drawerVisible;\r\n\r\n\r\n if (item == null) {\r\n\r\n this.selectedItem = this.defaultModel || {};\r\n }\r\n else{\r\n this.selectedItem = item;\r\n }\r\n\r\n if(mode == 'edit'){\r\n this.drawerVisible = true;\r\n this.isEditMode = true ;\r\n this.isViewMode = false ;\r\n // this.isEditMode = item !=null ;\r\n }\r\n if(mode == 'add'){\r\n this.drawerVisible = true;\r\n this.isViewMode = false ;\r\n this.isEditMode = false ;\r\n }\r\n if(mode == 'view'){\r\n // this.drawerVisible = true;\r\n this.dialogVisible = true;\r\n\r\n this.isViewMode = true ;\r\n this.isEditMode = false ;\r\n }\r\n}\r\n\r\n\r\nopenDeactivationReason(model: any) {\r\n\r\n this.selectedItem = model;\r\n if(this.selectedItem.isActive == true){\r\n\r\n\r\n const ref = this.dialogService.open(DeactivationReasonFormComponent, {\r\n header: 'السبب (في حال تم إيقافه)',\r\n width: '30vw',\r\n data: { model: { ...model },\r\n fields: this.formFields,\r\n service: this.service,\r\n idField: this.idField },\r\n });\r\n\r\n ref.onClose.subscribe((result) => {\r\n if (result) {\r\n this.selectedItem.isActive = false;\r\n this.selectedItem.deactivationReason = result.deactivationReason;\r\n // Optionally: save model via API\r\n }\r\n });\r\n}\r\nelse{\r\n this.selectedItem.isActive = true;\r\n this.selectedItem.deactivationReason = \"\";\r\n const id = (this.selectedItem as any)[this.idField] ;\r\n this.service.update(id, this.selectedItem).subscribe({\r\n next: () => {\r\n\r\n },\r\n error: (err) => {\r\n this.loading = false;\r\n\r\n }\r\n });\r\n}\r\n}\r\n\r\n\r\nprotected openDialog(item: T | null): void {\r\n this.dialogRef = this.dialogService.open(GenericCrudDialog<T>, {\r\n header: item ? 'تعديل' : 'اضافه',\r\n styleClass: 'w-1/2',\r\n modal: true,\r\n data: {\r\n item,\r\n fields: this.formFields,\r\n service: this.service,\r\n idField: this.idField\r\n }\r\n });\r\n //\r\n this.dialogRef.onClose.subscribe((reload: boolean) => {\r\n if (reload) this.loadPage(0, this.rows);\r\n });\r\n}\r\n\r\n\r\n\r\n // onDelete(item: any): void {\r\n // if (!confirm('هل تريد الحذف فعلاً؟')) return;\r\n // const id = (item as any)[this.idField];\r\n // this.service.delete(id).subscribe(() => {\r\n // this.loadPage(0, this.rows);\r\n // });\r\n // }\r\n\r\n\r\nonDelete(item: any): void {\r\n const id = (item as any)[this.idField];\r\n\r\n this.swalService.confirm(\r\n 'تأكيد الحذف',\r\n 'هل تريد حذف هذا السجل فعلاً؟',\r\n 'نعم، احذف',\r\n 'إلغاء'\r\n ).then((result) => {\r\n if (result.isConfirmed) {\r\n this.service.delete(id).subscribe(() => {\r\n this.loadPage(0, this.rows);\r\n this.swalService.success('تم الحذف بنجاح');\r\n }, () => {\r\n this.swalService.error('فشل الحذف', 'حدث خطأ أثناء الحذف');\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nget columns(): FormlyFieldConfig[] {\r\n const flattenFields = (fields: FormlyFieldConfig[]): FormlyFieldConfig[] => {\r\n return fields.flatMap(field => {\r\n // Check for nested group/panel\r\n if (field.fieldGroup?.length) {\r\n return flattenFields(field.fieldGroup);\r\n }\r\n\r\n // Skip fields with no props or table.hidden === true\r\n if (!field.props || field.props['table']?.hidden === true) {\r\n return [];\r\n }\r\n\r\n // Determine the column type: table.type > field.type > 'label-type'\r\n // const tableType = field.props['table']?.type || field.type || 'label-type';\r\n const tableType = field.props['table']?.type || 'label-type';\r\n\r\n //\r\n\r\n return [{\r\n type: tableType,\r\n key: field['key'], // always set key for table rendering\r\n props: {\r\n ...field.props, // base props\r\n ...field.props['table']?.props // table-specific overrides\r\n },\r\n expressions: field.props['table']?.expressions\r\n }];\r\n });\r\n };\r\n\r\n return flattenFields(this.formFields);\r\n}\r\n\r\n\r\nget filters(): FormlyFieldConfig[] {\r\n const flattenForFilter = (fields: FormlyFieldConfig[]): FormlyFieldConfig[] => {\r\n return fields.flatMap(field => {\r\n if (field.fieldGroup?.length) {\r\n // Recursively handle nested panels/groups\r\n return flattenForFilter(field.fieldGroup);\r\n }\r\n\r\n // Skip fields with no props or filter.hidden === true\r\n if (!field.props || field.props['filter']?.hidden === true) {\r\n return [];\r\n }\r\n\r\n return [field];\r\n });\r\n };\r\n\r\n return flattenForFilter(this.formFields);\r\n}\r\n\r\n}\r\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","import { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[appRtlLang]'\n})\nexport class RtlLang implements OnChanges{\n\n@Input('appRtlLang') lang: string = 'ar';\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n const direction = this.lang === 'ar' ? 'rtl' : 'ltr';\n this.renderer.setStyle(this.el.nativeElement, 'direction', direction);\n }\n\n}\n","export interface Root {\n // environment: Partial<Environment>;\n registerLocaleFn: (locale: string) => Promise<any>;\n skipGetAppConfiguration?: boolean;\n skipInitAuthService?: boolean;\n sendNullsAsQueryParam?: boolean;\n tenantKey?: string;\n // localizations?: Localization[];\n othersGroup?: string;\n dynamicLayouts?: Map<string, string>;\n disableProjectNameInTitle?: boolean;\n }\n\nexport class ListResultDto<T> {\n items?: T[];\n\n constructor(initialValues: Partial<ListResultDto<T>> = {}) {\n for (const key in initialValues) {\n if (checkHasProp(initialValues, key)) {\n this[key] = initialValues[key];\n }\n }\n }\n}\n\nexport class PagedResultDto<T> extends ListResultDto<T> {\n totalCount?: number;\n\n constructor(initialValues: Partial<PagedResultDto<T>> = {}) {\n super(initialValues);\n }\n}\n\nexport class GeneralResponse <T> {\n\n success?: boolean;\n\n result?: T;\n\n targetUrl?: string;\n\n // error?: IGeneralErrorInfo;\n error?: any;\n\n unAuthorizedRequest?: boolean;\n\n constructor() {\n }\n\n}\nexport function checkHasProp<T>(object: T, key: string | keyof T): key is keyof T {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'statustext',\n standalone: true\n})\nexport class StatustextPipe implements PipeTransform {\n\n transform(value: number | null | undefined): string {\n switch (value) {\n case 1: return 'فعال';\n case 2: return 'موقوف';\n default: return 'غير معلوم';\n }\n }\n}\n","// tafqeet.pipe.ts\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'tafqeet'\n})\nexport class TafqeetPipe implements PipeTransform {\n transform(value: number, currencyName: string = 'ريال سعودي'): string {\n if (value == null || isNaN(value)) return '';\n\n const [intPart, fracPart] = value.toFixed(2).split('.').map(Number);\n const intText = this.toArabicWords(intPart);\n const fracText = this.toArabicWords(fracPart);\n\n let result = `${intText} ${currencyName}`;\n if (fracPart > 0) {\n result += ` و${fracText} هللة`;\n }\n\n return result;\n }\n\n private toArabicWords(n: number): string {\n const units = [\n '', 'واحد', 'اثنان', 'ثلاثة', 'أربعة', 'خمسة', 'ستة', 'سبعة', 'ثمانية', 'تسعة'\n ];\n const teens = [\n 'عشرة', 'أحد عشر', 'اثنا عشر', 'ثلاثة عشر', 'أربعة عشر', 'خمسة عشر',\n 'ستة عشر', 'سبعة عشر', 'ثمانية عشر', 'تسعة عشر'\n ];\n const tens = [\n '', '', 'عشرون', 'ثلاثون', 'أربعون', 'خمسون', 'ستون', 'سبعون', 'ثمانون', 'تسعون'\n ];\n const hundreds = [\n '', 'مائة', 'مائتان', 'ثلاثمائة', 'أربعمائة', 'خمسمائة', 'ستمائة', 'سبعمائة', 'ثمانمائة', 'تسعمائة'\n ];\n\n if (n === 0) return 'صفر';\n\n let words: string[] = [];\n\n if (n >= 100) {\n const h = Math.floor(n / 100);\n words.push(hundreds[h]);\n n %= 100;\n }\n\n if (n >= 10 && n < 20) {\n words.push(teens[n - 10]);\n } else {\n const t = Math.floor(n / 10);\n const u = n % 10;\n\n if (u > 0) {\n words.push(units[u]);\n }\n if (t > 0) {\n words.push(tens[t]);\n }\n }\n\n return words.reverse().filter(w => !!w).join(' و ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe } from '@angular/common'; // لاستخدام DatePipe لتنسيق التاريخ الكامل\n\n@Pipe({\n name: 'timeAgoWithFullDate', // تغيير الاسم ليعكس وظيفته الشاملة\n pure: false // مهم لتحديث الـ Pipe بشكل متكرر\n})\nexport class TimeAgoWithFullDatePipe implements PipeTransform {\n\n constructor(private datePipe: DatePipe) {} // حقن DatePipe\n\n transform(value: Date | string | null): string {\n if (!value) return '';\n\n const date = typeof value === 'string' ? new Date(value) : value;\n const now = new Date();\n const seconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n let relativeTime: string;\n\n if (seconds < 10) { // في بضع ثوانٍ (لأن \"few seconds\" في Freshdesk تكون قصيرة جداً)\n relativeTime = 'منذ بضع ثوانٍ';\n } else if (seconds < 60) {\n relativeTime = `منذ ${seconds} ثانية`;\n } else if (seconds < 120) { // 1 to 2 minutes\n relativeTime = 'منذ دقيقة واحدة';\n } else if (seconds < 3600) { // less than 1 hour\n relativeTime = `منذ ${Math.floor(seconds / 60)} دقيقة`;\n } else if (seconds < 7200) { // 1 to 2 hours\n relativeTime = 'منذ ساعة واحدة';\n } else if (seconds < 86400) { // less than 24 hours\n relativeTime = `منذ ${Math.floor(seconds / 3600)} ساعة`;\n } else if (seconds < 172800) { // 1 to 2 days\n relativeTime = 'منذ يوم واحد';\n } else if (seconds < 2592000) { // less than 30 days (approx. 1 month)\n relativeTime = `منذ ${Math.floor(seconds / 86400)} يومًا`;\n } else {\n // For longer periods, Freshdesk typically just shows the full date\n // We'll still keep the 'منذ X' for now based on previous request,\n // but you might consider just returning the full date for older items.\n const months = Math.floor(seconds / 2592000); // 30 days * 24 hours * 60 minutes * 60 seconds\n if (months < 12) {\n relativeTime = `منذ ${months} شهرًا`;\n } else {\n relativeTime = `منذ ${Math.floor(months / 12)} سنة`;\n }\n }\n\n // تنسيق التاريخ الكامل بالضبط كما في Freshdesk: \"Sat, 26 Jul 2025 at 9:41 PM\"\n const fullDateFormatted = this.datePipe.transform(date, 'E, d MMM yyyy at h:mm a', 'en-US');\n\n // دمج الوقت النسبي مع التاريخ الكامل\n return `${relativeTime} (${fullDateFormatted})`;\n }\n}\n","// core/providers/environment.provider.ts\nimport { ENVIRONMENT, EnvironmentConfig } from '../tokens/environment.token';\nimport { Provider } from '@angular/core';\n\nexport function provideEnvironmentConfig(config: EnvironmentConfig): Provider {\n return {\n provide: ENVIRONMENT,\n useValue: config\n };\n}\n","// src/app/services/generic.service.ts\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport { PaginatedResult } from '../models/Paginated';\nimport { CrudService } from './crud-service.interface';\n\n/**\n * GenericService<T, K>:\n * - T = نوع الكائن (Model)\n * - K = نوع المفتاح الأساسي (ID)، افتراضي number\n *\n * يحتوي على جميع دوال الـ CRUD القياسية للتوريث في الخدمات المتخصصة.\n */\nexport abstract class GenericService<T, K = number> implements CrudService<T, Record<string, any>> {\n /**\n * ✏️ على كل خدمة فرعية أن تعرّف هذا:\n * مثال: protected baseUrl = 'https://api.example.com/api/jobtyps';\n */\n protected abstract baseUrl: string;\n\n constructor(protected http: HttpClient) {}\n\n /**\n * جلب كل السجلات\n */\n getAll(): Observable<T[]> {\n // ملاحظة: يمكن إضافة معالج أخطاء مركزي هنا أو عبر Interceptor\n return this.http.get<T[]>(this.baseUrl);\n }\n\n /**\n * جلب سجل واحد بناءً على المعرف\n */\n\n getById(id: K): Observable<T> {\n // ملاحظة: تأكد أن الـ endpoint يدعم GET برقم المعرف\n return this.http.get<T>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * إنشاء سجل جديد\n */\n create(item: Partial<T>): Observable<T> {\n\n // ملاحظة: استخدم Partial<T> للسماح ببعض الحقول الاختيارية\n return this.http.post<T>(this.baseUrl, item);\n }\n\n /**\n * تحديث سجل موجود\n */\n\n update(id: K, item: Partial<T>): Observable<T> {\n // ملاحظة: هنا نُعيد Observable<void> لأن API قد لا تُرجع الجسم نفسه\n return this.http.put<T>(`${this.baseUrl}`, item);\n }\n /**\n * حذف سجل\n */\n delete(id: K): Observable<void> {\n // ملاحظة: يُفضّل استخدام Confirm قبل الحذف في الواجهة\n return this.http.delete<void>(`${this.baseUrl}/${id}`);\n }\n\n\n\n /** endpoint قابل للتخصيص — يمكن للفرع override–ها */\n protected getPageUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * جلب صفحة من البيانات مع دعم الفلاتر والفرز\n * @param pageIndex صفر-based\n * @param pageSize عدد السجلات\n * @param filters كائن Partial<T> أو Record<string,any>\n * @param sort نص الفرز، مثلاً \"eiNa:desc\"\n */\n getPage(\n pageIndex: number,\n pageSize: number,\n filters?: Record<string, any>,\n sort?: string\n ): Observable<PaginatedResult<T>> {\n // debugger\n let params = new HttpParams()\n .set('pageIndex', pageIndex.toString())\n .set('pageSize', pageSize.toString());\n\n if (filters) {\n Object.entries(filters).forEach(([key, val]) => {\n if (val != null && val !== '') {\n params = params.set(key, val.toString());\n }\n });\n }\n\n if (sort) {\n params = params.set('sort', sort);\n }\n\n // return this.http\n // .get<T[]>(this.getPageUrl(), { params, observe: 'response' })\n // .pipe(\n // map((resp: HttpResponse<T[]>) => ({\n // items: resp.body || [],\n // totalCount: Number(resp.headers.get('X-Total-Count')) || resp.body?.length || 0\n // }))\n // );\n return this.http.get<PaginatedResult<T>>(\n this.getPageUrl(),\n { params }\n );\n }\n\n\n}\n","import { Request } from 'express';\nimport { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\n// Define the `Request` token\nexport const REQUEST = new InjectionToken<Request>('REQUEST');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SsrCookieService {\n private readonly documentIsAccessible: boolean;\n static initialUrl = '';\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() @Inject(REQUEST) private request: Request\n ) {\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n SsrCookieService.initialUrl = this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static getCookieRegExp(name: string): RegExp {\n const escapedName: string = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, '\\\\$1');\n\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static safeDecodeURIComponent(encodedURIComponent: string): string {\n try {\n return decodeURIComponent(encodedURIComponent);\n } catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n check(name: string): boolean {\n name = encodeURIComponent(name);\n const regExp: RegExp = SsrCookieService.getCookieRegExp(name);\n return regExp.test((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n }\n isDocumentIsAccessible(): boolean {\n return this.documentIsAccessible ;\n }\n get url(): string {\n return this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n get(name: string): string {\n if (this.check(name)) {\n name = encodeURIComponent(name);\n\n const regExp: RegExp = SsrCookieService.getCookieRegExp(name);\n const result: RegExpExecArray |any= regExp.exec((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n\n return result[1] ? SsrCookieService.safeDecodeURIComponent(result[1]) : '';\n } else {\n return '';\n }\n }\n\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n getAll(): { [key: string]: string } {\n const cookies: { [key: string]: string } = {};\n const cookieString: any = this.documentIsAccessible ? this.document?.cookie : this.request?.headers.cookie;\n\n if (cookieString && cookieString !== '') {\n cookieString.split(';').forEach((currentCookie:any) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[SsrCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = SsrCookieService.safeDecodeURIComponent(cookieValue);\n });\n }\n\n return cookies;\n }\n\n /**\n * Set cookie based on provided information\n *\n * @param name Cookie name\n * @param value Cookie value\n * @param expires Number of days until the cookies expires or an actual `Date`\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Secure flag\n * @param sameSite OWASP same site token `Lax`, `None`, or `Strict`. Defaults to `Lax`\n * @param partitioned Partitioned flag\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n set(\n name: string,\n value: string,\n expires?: number | Date,\n path?: string,\n domain?: string,\n secure?: boolean,\n sameSite?: 'Lax' | 'None' | 'Strict',\n partitioned?: boolean\n ): void;\n\n /**\n * Set cookie based on provided information\n *\n * Cookie's parameters:\n * <pre>\n * expires Number of days until the cookies expires or an actual `Date`\n * path Cookie path\n * domain Cookie domain\n * secure Cookie secure flag\n * sameSite OWASP same site token `Lax`, `None`, or `Strict`. Defaults to `Lax`\n * </pre>\n *\n * @param name Cookie name\n * @param value Cookie value\n * @param options Body with cookie's params\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n set(\n name: string,\n value: string,\n options?: {\n expires?: number | Date;\n path?: string;\n domain?: string;\n secure?: boolean;\n sameSite?: 'Lax' | 'None' | 'Strict';\n partitioned?: boolean;\n }\n ): void;\n\n set(\n name: string,\n value: string,\n expiresOrOptions?: number | Date | any,\n path?: string,\n domain?: string,\n secure?: boolean,\n sameSite?: 'Lax' | 'None' | 'Strict',\n partitioned?: boolean\n ): void {\n if (!this.documentIsAccessible) {\n return;\n }\n\n if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n partitioned,\n };\n\n this.set(name, value, optionsBody);\n return;\n }\n\n let cookieString: string = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n\n const options = expiresOrOptions ? expiresOrOptions : {};\n\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires: Date = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n } else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(\n `[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`\n );\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n\n cookieString += 'sameSite=' + options.sameSite + ';';\n\n if (options.partitioned) {\n cookieString += 'Partitioned;';\n }\n\n this.document.cookie = cookieString;\n }\n\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n delete(name: string, path?: string, domain?: string, secure?: boolean, sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'): void {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', { expires: expiresDate, path, domain, secure, sameSite });\n }\n\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n deleteAll(path?: string, domain?: string, secure?: boolean, sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'): void {\n if (!this.documentIsAccessible) {\n return;\n }\n\n const cookies: any = this.getAll();\n\n for (const cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n}\n","\n/*\n * Public API Surface of @framework/ng.core\n */\n\n/* ----------------- Components ----------------- */\n// export * from './lib/components/editorjs-demo/editorjs-demo';\nexport * from './lib/components/odata-query-builder/odata-query-builder.component';\nexport * from './lib/components/condition-editor/condition-editor-type';\nexport * from './lib/components/form-template/template.type';\nexport * from './lib/components/form-button/form-button.type';\nexport * from './lib/components/attachments/attachment-type';\nexport * from './lib/components/breadcrumb/breadcrumb';\nexport * from './lib/components/color-picker/color-picker.type';\nexport * from './lib/components/column-settings-popover/column-settings-popover';\nexport * from './lib/components/custom-switch/custom-switch';\nexport * from './lib/components/deactivation-reason/deactivation-reason';\nexport * from './lib/components/formly-avatar-label/formly-avatar-label';\nexport * from './lib/components/formly-button/formly-button';\nexport * from './lib/components/formly-button-selector/formly-button-selector';\nexport * from './lib/components/formly-split-button/formly-split-button';\nexport * from './lib/components/formly-username-with-domain/formly-username-with-domain';\nexport * from './lib/components/generic-autocomplete/generic-autocomplete-component';\nexport * from './lib/components/formly-avatar-image/formly-avatar-image';\nexport * from './lib/components/generic-button/generic-button';\nexport * from './lib/components/generic-card/generic-card';\nexport * from './lib/components/generic-crud-dialog/generic-crud-dialog';\nexport * from './lib/components/generic-crud-table/generic-crud-table';\nexport * from './lib/components/generic-drawer/generic-drawer';\nexport * from './lib/components/generic-errormessage/generic-errormessage';\nexport * from './lib/components/generic-formly-fields/generic-formly-fields';\nexport * from './lib/components/generic-loadingspinner/generic-loadingspinner';\nexport * from './lib/components/generic-search/generic-search';\nexport * from './lib/components/generic-selector/generic-selector.component';\nexport * from './lib/components/generic-table/generic-table';\nexport * from './lib/components/header-wrapper/header-wrapper';\nexport * from './lib/components/icon-picker/icon-picker.type';\nexport * from './lib/components/input-switch/input-switch.type';\nexport * from './lib/components/input-with-icon/input-with-icon.type';\nexport * from './lib/components/label-type/clickable-label-type';\nexport * from './lib/components/label-type/label-type';\nexport * from './lib/components/repeat/repeat-section.type';\nexport * from './lib/components/sidebar-cards/sidebar-cards';\nexport * from './lib/components/sidebar-toggles/sidebar-toggles';\nexport * from './lib/components/tabs/tabs.type';\nexport * from './lib/components/tag-type/formly-tag-type';\nexport * from './lib/components/tag-type/formly-option-tag-type';\nexport * from './lib/components/tag-type/formly-color-tag-type';\nexport * from './lib/components/text-editor/formly-rich-text-editor-type';\nexport * from './lib/components/wrappers/label.wrapper';\nexport * from './lib/components/wrappers/panel.wrapper';\nexport * from './lib/components/wrappers/td-wrapper.type';\nexport * from './lib/components/wrappers/tooltip-wrapper';\n\nexport * from './lib/components/input';\nexport * from './lib/components/radio';\nexport * from './lib/components/select';\nexport * from './lib/components/checkbox';\nexport * from './lib/components/textarea';\nexport * from './lib/components/form-field';\nexport * from './lib/components/datepicker';\n\nexport * from './lib/components/base-crud';\nexport * from './lib/components/formly-presets';\n// export * from './lib/components/InputWithIconType';\n\n\n\n\n/* ----------------- Directives ----------------- */\nexport * from './lib/directives/appAutofocus';\nexport * from './lib/directives/rtl-lang';\n\n/* ----------------- Models ----------------- */\nexport * from './lib/models/Actiondef';\nexport * from './lib/models/AttachmentDto';\nexport * from './lib/models/ButtonConfig';\nexport * from './lib/models/Columndef';\nexport * from './lib/models/Common';\nexport * from './lib/models/Filterdef';\nexport * from './lib/models/Paginated';\nexport * from './lib/models/rest';\nexport * from './lib/models/StatusOption';\n\n/* ----------------- Pipes ----------------- */\nexport * from './lib/pipes/statustext-pipe';\nexport * from './lib/pipes/tafkeet-pipe';\nexport * from './lib/pipes/time-ago.pipe';\n\n/* ----------------- Providers ----------------- */\nexport * from './lib/providers/environment.provider';\nexport * from './lib/providers/formly.config';\n\n/* ----------------- Services ----------------- */\nexport * from './lib/services/base.service';\nexport * from './lib/services/crud-service.interface';\nexport * from './lib/services/generic.service';\nexport * from './lib/services/rest.service';\nexport * from './lib/services/ssr-cookie.service';\nexport * from './lib/services/SwalService.service';\n\n/* ----------------- Tokens ----------------- */\nexport * from './lib/tokens/environment.token';\nexport * from './lib/tokens/options.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.RestService","i1.BaseService","i2","i3","i4","i5","i6","i7","i9","finalize","i8","FormlyFormFieldModule","FormlyCoreSelectModule","FormlySelectModule"],"mappings":"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"}