@elite.framework/ng.core 1.0.65 → 2.0.1
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.
- package/README.md +2 -22
- package/directives/README.md +3 -0
- package/fesm2022/{elite.framework-ng.core-src-lib-directives.mjs → elite.framework-ng.core-directives.mjs} +7 -7
- package/fesm2022/elite.framework-ng.core-directives.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.core-models.mjs +47 -0
- package/fesm2022/elite.framework-ng.core-models.mjs.map +1 -0
- package/fesm2022/{elite.framework-ng.core-src-lib-pipes.mjs → elite.framework-ng.core-pipes.mjs} +7 -7
- package/fesm2022/elite.framework-ng.core-pipes.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.core-providers.mjs +18 -0
- package/fesm2022/elite.framework-ng.core-providers.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.core-services.mjs +509 -0
- package/fesm2022/elite.framework-ng.core-services.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.core-tokens.mjs +17 -0
- package/fesm2022/elite.framework-ng.core-tokens.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.core.mjs +7 -2239
- package/fesm2022/elite.framework-ng.core.mjs.map +1 -1
- package/index.d.ts +4 -648
- package/models/README.md +3 -0
- package/models/index.d.ts +135 -0
- package/package.json +26 -170
- package/pipes/README.md +3 -0
- package/providers/README.md +3 -0
- package/providers/index.d.ts +6 -0
- package/services/README.md +3 -0
- package/services/index.d.ts +250 -0
- package/tokens/README.md +3 -0
- package/tokens/index.d.ts +15 -0
- package/fesm2022/elite.framework-ng.core-src-lib-components-attachments.mjs +0 -204
- package/fesm2022/elite.framework-ng.core-src-lib-components-attachments.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-breadcrumb.mjs +0 -132
- package/fesm2022/elite.framework-ng.core-src-lib-components-breadcrumb.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-color-picker.mjs +0 -76
- package/fesm2022/elite.framework-ng.core-src-lib-components-color-picker.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-column-settings-popover.mjs +0 -172
- package/fesm2022/elite.framework-ng.core-src-lib-components-column-settings-popover.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-condition-editor.mjs +0 -794
- package/fesm2022/elite.framework-ng.core-src-lib-components-condition-editor.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-custom-switch.mjs +0 -110
- package/fesm2022/elite.framework-ng.core-src-lib-components-custom-switch.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-deactivation-reason.mjs +0 -130
- package/fesm2022/elite.framework-ng.core-src-lib-components-deactivation-reason.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-form-button.mjs +0 -50
- package/fesm2022/elite.framework-ng.core-src-lib-components-form-button.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-form-field.mjs +0 -154
- package/fesm2022/elite.framework-ng.core-src-lib-components-form-field.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-form-template.mjs +0 -24
- package/fesm2022/elite.framework-ng.core-src-lib-components-form-template.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-image.mjs +0 -100
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-image.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-label.mjs +0 -78
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-avatar-label.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button-selector.mjs +0 -167
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button-selector.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button.mjs +0 -62
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-button.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-split-button.mjs +0 -50
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-split-button.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-username-with-domain.mjs +0 -76
- package/fesm2022/elite.framework-ng.core-src-lib-components-formly-username-with-domain.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-autocomplete.mjs +0 -163
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-autocomplete.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-button.mjs +0 -133
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-button.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-card.mjs +0 -214
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-card.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-crud-table.mjs +0 -385
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-crud-table.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-errormessage.mjs +0 -23
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-errormessage.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-formly-fields.mjs +0 -53
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-formly-fields.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-loadingspinner.mjs +0 -23
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-loadingspinner.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-search.mjs +0 -85
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-search.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-selector.mjs +0 -430
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-selector.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-table.mjs +0 -216
- package/fesm2022/elite.framework-ng.core-src-lib-components-generic-table.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-header-wrapper.mjs +0 -18
- package/fesm2022/elite.framework-ng.core-src-lib-components-header-wrapper.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-icon-picker.mjs +0 -195
- package/fesm2022/elite.framework-ng.core-src-lib-components-icon-picker.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-input-switch.mjs +0 -94
- package/fesm2022/elite.framework-ng.core-src-lib-components-input-switch.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-input-with-icon.mjs +0 -55
- package/fesm2022/elite.framework-ng.core-src-lib-components-input-with-icon.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-label-type.mjs +0 -112
- package/fesm2022/elite.framework-ng.core-src-lib-components-label-type.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-odata-query-builder.mjs +0 -297
- package/fesm2022/elite.framework-ng.core-src-lib-components-odata-query-builder.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-repeat.mjs +0 -135
- package/fesm2022/elite.framework-ng.core-src-lib-components-repeat.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-cards.mjs +0 -40
- package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-cards.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs +0 -41
- package/fesm2022/elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-tabs.mjs +0 -45
- package/fesm2022/elite.framework-ng.core-src-lib-components-tabs.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-tag-type.mjs +0 -192
- package/fesm2022/elite.framework-ng.core-src-lib-components-tag-type.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-text-editor.mjs +0 -44
- package/fesm2022/elite.framework-ng.core-src-lib-components-text-editor.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-components-wrappers.mjs +0 -174
- package/fesm2022/elite.framework-ng.core-src-lib-components-wrappers.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-directives.mjs.map +0 -1
- package/fesm2022/elite.framework-ng.core-src-lib-pipes.mjs.map +0 -1
- package/src/lib/components/attachments/index.d.ts +0 -31
- package/src/lib/components/breadcrumb/index.d.ts +0 -10
- package/src/lib/components/color-picker/index.d.ts +0 -9
- package/src/lib/components/column-settings-popover/index.d.ts +0 -39
- package/src/lib/components/condition-editor/index.d.ts +0 -73
- package/src/lib/components/custom-switch/index.d.ts +0 -12
- package/src/lib/components/deactivation-reason/index.d.ts +0 -24
- package/src/lib/components/form-button/index.d.ts +0 -10
- package/src/lib/components/form-field/index.d.ts +0 -30
- package/src/lib/components/form-template/index.d.ts +0 -9
- package/src/lib/components/formly-avatar-image/index.d.ts +0 -11
- package/src/lib/components/formly-avatar-label/index.d.ts +0 -29
- package/src/lib/components/formly-button/index.d.ts +0 -13
- package/src/lib/components/formly-button-selector/index.d.ts +0 -28
- package/src/lib/components/formly-split-button/index.d.ts +0 -16
- package/src/lib/components/formly-username-with-domain/index.d.ts +0 -12
- package/src/lib/components/generic-autocomplete/index.d.ts +0 -34
- package/src/lib/components/generic-button/index.d.ts +0 -35
- package/src/lib/components/generic-card/index.d.ts +0 -90
- package/src/lib/components/generic-crud-table/index.d.ts +0 -120
- package/src/lib/components/generic-errormessage/index.d.ts +0 -10
- package/src/lib/components/generic-formly-fields/index.d.ts +0 -22
- package/src/lib/components/generic-loadingspinner/index.d.ts +0 -9
- package/src/lib/components/generic-search/index.d.ts +0 -29
- package/src/lib/components/generic-selector/index.d.ts +0 -66
- package/src/lib/components/generic-table/index.d.ts +0 -60
- package/src/lib/components/header-wrapper/index.d.ts +0 -8
- package/src/lib/components/icon-picker/index.d.ts +0 -23
- package/src/lib/components/input-switch/index.d.ts +0 -9
- package/src/lib/components/input-with-icon/index.d.ts +0 -10
- package/src/lib/components/label-type/index.d.ts +0 -19
- package/src/lib/components/odata-query-builder/index.d.ts +0 -81
- package/src/lib/components/repeat/index.d.ts +0 -17
- package/src/lib/components/sidebar-cards/index.d.ts +0 -18
- package/src/lib/components/sidebar-toggles/index.d.ts +0 -18
- package/src/lib/components/tabs/index.d.ts +0 -10
- package/src/lib/components/tag-type/index.d.ts +0 -27
- package/src/lib/components/text-editor/index.d.ts +0 -9
- package/src/lib/components/wrappers/index.d.ts +0 -24
- /package/{src/lib/directives → directives}/index.d.ts +0 -0
- /package/{src/lib/pipes → pipes}/index.d.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.core-src-lib-components-odata-query-builder.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/odata-query-builder/elite.framework-ng.core-src-lib-components-odata-query-builder.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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import * as i2 from '@ngx-translate/core';
|
|
2
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
-
import * as i0 from '@angular/core';
|
|
4
|
-
import { Component } from '@angular/core';
|
|
5
|
-
import { FieldArrayType, FormlyField } from '@ngx-formly/core';
|
|
6
|
-
import * as i1 from '@angular/common';
|
|
7
|
-
import { CommonModule } from '@angular/common';
|
|
8
|
-
|
|
9
|
-
class RepeatTypeComponent extends FieldArrayType {
|
|
10
|
-
cdr;
|
|
11
|
-
// Return columns of the first row (for table headers)
|
|
12
|
-
getFirstRowColumns() {
|
|
13
|
-
return this.field.fieldGroup?.[0]?.fieldGroup ?? [];
|
|
14
|
-
}
|
|
15
|
-
constructor(cdr) {
|
|
16
|
-
super();
|
|
17
|
-
this.cdr = cdr;
|
|
18
|
-
}
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
// Subscribe to each FormArray changes
|
|
21
|
-
// if (this.formControl instanceof FormArray) {
|
|
22
|
-
this.field.formControl.valueChanges.subscribe(() => {
|
|
23
|
-
// Force Angular to detect changes
|
|
24
|
-
this.field.fieldGroup = [...this.field.fieldGroup ?? []];
|
|
25
|
-
this.cdr.detectChanges();
|
|
26
|
-
});
|
|
27
|
-
// }
|
|
28
|
-
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: RepeatTypeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: RepeatTypeComponent, isStandalone: true, selector: "formly-repeat-section", usesInheritance: true, ngImport: i0, template: `
|
|
31
|
-
<div class="overflow-auto bg-gray-100 border border-gray-300">
|
|
32
|
-
<table *ngIf="(field.fieldGroup ?? []).length > 0" class="table-auto w-full border border-gray-300">
|
|
33
|
-
<thead>
|
|
34
|
-
<tr class="bg-gray-100 text-gray-700 text-sm">
|
|
35
|
-
<th class="w-8"></th>
|
|
36
|
-
<ng-container *ngFor="let col of getFirstRowColumns()">
|
|
37
|
-
<th class="text-center border">{{ (col.props?.label ?? '') | translate }}</th>
|
|
38
|
-
</ng-container>
|
|
39
|
-
<th class="w-10"></th>
|
|
40
|
-
</tr>
|
|
41
|
-
</thead>
|
|
42
|
-
|
|
43
|
-
<tbody>
|
|
44
|
-
<tr *ngFor="let row of field.fieldGroup; let rowIndex = index" class="border-t">
|
|
45
|
-
<td class="bg-[#fffbea] text-center text-gray-400 px-2"><i class="pi pi-bars"></i></td>
|
|
46
|
-
|
|
47
|
-
<ng-container *ngFor="let col of row.fieldGroup">
|
|
48
|
-
<td class="bg-[#fffbea]">
|
|
49
|
-
<formly-field [field]="col"></formly-field>
|
|
50
|
-
</td>
|
|
51
|
-
</ng-container>
|
|
52
|
-
|
|
53
|
-
<td class="text-center px-2 bg-[#fffbea]">
|
|
54
|
-
<ng-container *ngIf="rowIndex !== 0 || field.props?.['canDeleteFirstRow']">
|
|
55
|
-
<button type="button" (click)="remove(rowIndex)" class="text-red-600 hover:text-red-800">
|
|
56
|
-
<i class="pi pi-trash"></i>
|
|
57
|
-
</button>
|
|
58
|
-
</ng-container>
|
|
59
|
-
</td>
|
|
60
|
-
</tr>
|
|
61
|
-
</tbody>
|
|
62
|
-
</table>
|
|
63
|
-
|
|
64
|
-
<div class="flex justify-end">
|
|
65
|
-
<button
|
|
66
|
-
type="button"
|
|
67
|
-
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"
|
|
68
|
-
(click)="add()"
|
|
69
|
-
>
|
|
70
|
-
<span class="text-lg">+</span>
|
|
71
|
-
</button>
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
75
|
-
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: RepeatTypeComponent, decorators: [{
|
|
77
|
-
type: Component,
|
|
78
|
-
args: [{
|
|
79
|
-
selector: 'formly-repeat-section',
|
|
80
|
-
standalone: true,
|
|
81
|
-
imports: [CommonModule, FormlyField, TranslateModule],
|
|
82
|
-
template: `
|
|
83
|
-
<div class="overflow-auto bg-gray-100 border border-gray-300">
|
|
84
|
-
<table *ngIf="(field.fieldGroup ?? []).length > 0" class="table-auto w-full border border-gray-300">
|
|
85
|
-
<thead>
|
|
86
|
-
<tr class="bg-gray-100 text-gray-700 text-sm">
|
|
87
|
-
<th class="w-8"></th>
|
|
88
|
-
<ng-container *ngFor="let col of getFirstRowColumns()">
|
|
89
|
-
<th class="text-center border">{{ (col.props?.label ?? '') | translate }}</th>
|
|
90
|
-
</ng-container>
|
|
91
|
-
<th class="w-10"></th>
|
|
92
|
-
</tr>
|
|
93
|
-
</thead>
|
|
94
|
-
|
|
95
|
-
<tbody>
|
|
96
|
-
<tr *ngFor="let row of field.fieldGroup; let rowIndex = index" class="border-t">
|
|
97
|
-
<td class="bg-[#fffbea] text-center text-gray-400 px-2"><i class="pi pi-bars"></i></td>
|
|
98
|
-
|
|
99
|
-
<ng-container *ngFor="let col of row.fieldGroup">
|
|
100
|
-
<td class="bg-[#fffbea]">
|
|
101
|
-
<formly-field [field]="col"></formly-field>
|
|
102
|
-
</td>
|
|
103
|
-
</ng-container>
|
|
104
|
-
|
|
105
|
-
<td class="text-center px-2 bg-[#fffbea]">
|
|
106
|
-
<ng-container *ngIf="rowIndex !== 0 || field.props?.['canDeleteFirstRow']">
|
|
107
|
-
<button type="button" (click)="remove(rowIndex)" class="text-red-600 hover:text-red-800">
|
|
108
|
-
<i class="pi pi-trash"></i>
|
|
109
|
-
</button>
|
|
110
|
-
</ng-container>
|
|
111
|
-
</td>
|
|
112
|
-
</tr>
|
|
113
|
-
</tbody>
|
|
114
|
-
</table>
|
|
115
|
-
|
|
116
|
-
<div class="flex justify-end">
|
|
117
|
-
<button
|
|
118
|
-
type="button"
|
|
119
|
-
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"
|
|
120
|
-
(click)="add()"
|
|
121
|
-
>
|
|
122
|
-
<span class="text-lg">+</span>
|
|
123
|
-
</button>
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
`,
|
|
127
|
-
}]
|
|
128
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Generated bundle index. Do not edit.
|
|
132
|
-
*/
|
|
133
|
-
|
|
134
|
-
export { RepeatTypeComponent };
|
|
135
|
-
//# sourceMappingURL=elite.framework-ng.core-src-lib-components-repeat.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.core-src-lib-components-repeat.mjs","sources":["../../../projects/core/src/lib/components/repeat/repeat-section.type.ts","../../../projects/core/src/lib/components/repeat/elite.framework-ng.core-src-lib-components-repeat.ts"],"sourcesContent":["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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAwDM,MAAO,mBAAoB,SAAQ,cAAc,CAAA;AAKjC,IAAA,GAAA;;IAHpB,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,EAAE;;AAErD,IAAA,WAAA,CAAoB,GAAsB,EAAA;AACxC,QAAA,KAAK,EAAE;QADW,IAAA,CAAA,GAAG,GAAH,GAAG;;IAGvB,QAAQ,GAAA;;;QAIJ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;;AAGjD,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;AACxD,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;;uGAjBK,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9CpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA7CS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FA+CzC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlD/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC;AACrD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CT,EAAA,CAAA;AACF,iBAAA;;;ACvDD;;AAEG;;;;"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input, Component } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/common';
|
|
4
|
-
import { CommonModule, NgClass } from '@angular/common';
|
|
5
|
-
|
|
6
|
-
class SidebarCards {
|
|
7
|
-
/** عنوان الهيدر **/
|
|
8
|
-
header = '';
|
|
9
|
-
/** فئة أيقونة Font-Awesome **/
|
|
10
|
-
icon = '';
|
|
11
|
-
/** هل المحتوى مفتوح **/
|
|
12
|
-
open = false;
|
|
13
|
-
/** يرسل تغيير الحالة للأبّ **/
|
|
14
|
-
openChange = new EventEmitter();
|
|
15
|
-
toggle() {
|
|
16
|
-
this.open = !this.open;
|
|
17
|
-
this.openChange.emit(this.open);
|
|
18
|
-
}
|
|
19
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SidebarCards, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: SidebarCards, isStandalone: true, selector: "lib-sidebar-card", inputs: { header: "header", icon: "icon", open: "open" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<!-- sidebar-card.component.html -->\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\n <!-- \u0631\u0623\u0633 \u0627\u0644\u0643\u0631\u062A -->\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 <!-- \u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0643\u0631\u062A -->\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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SidebarCards, decorators: [{
|
|
23
|
-
type: Component,
|
|
24
|
-
args: [{ selector: 'lib-sidebar-card', standalone: true, imports: [CommonModule, NgClass], template: "<!-- sidebar-card.component.html -->\n<div class=\"bg-white border border-gray-200 rounded-2xl shadow-sm overflow-hidden\">\n <!-- \u0631\u0623\u0633 \u0627\u0644\u0643\u0631\u062A -->\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 <!-- \u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0643\u0631\u062A -->\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" }]
|
|
25
|
-
}], propDecorators: { header: [{
|
|
26
|
-
type: Input
|
|
27
|
-
}], icon: [{
|
|
28
|
-
type: Input
|
|
29
|
-
}], open: [{
|
|
30
|
-
type: Input
|
|
31
|
-
}], openChange: [{
|
|
32
|
-
type: Output
|
|
33
|
-
}] } });
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Generated bundle index. Do not edit.
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
export { SidebarCards };
|
|
40
|
-
//# sourceMappingURL=elite.framework-ng.core-src-lib-components-sidebar-cards.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.core-src-lib-components-sidebar-cards.mjs","sources":["../../../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-cards/elite.framework-ng.core-src-lib-components-sidebar-cards.ts"],"sourcesContent":["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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MASa,YAAY,CAAA;;IAEd,MAAM,GAAG,EAAE;;IAEX,IAAI,GAAG,EAAE;;IAET,IAAI,GAAG,KAAK;;AAEX,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;IAElD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;uGAZtB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTzB,66BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,66BAAA,EAAA;8BAKvB,MAAM,EAAA,CAAA;sBAAd;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,UAAU,EAAA,CAAA;sBAAnB;;;AEjBH;;AAEG;;;;"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input, Component } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/common';
|
|
4
|
-
import { CommonModule, NgClass } from '@angular/common';
|
|
5
|
-
|
|
6
|
-
class SidebarToggles {
|
|
7
|
-
/** هل كلها مفتوحة الآن؟ */
|
|
8
|
-
allOpen = false;
|
|
9
|
-
/** حالة بطاقة تفاصيل العميل */
|
|
10
|
-
contactOpen = false;
|
|
11
|
-
/** حالة بطاقة الـ Timeline */
|
|
12
|
-
timelineOpen = false;
|
|
13
|
-
toggleAll = new EventEmitter();
|
|
14
|
-
toggleContact = new EventEmitter();
|
|
15
|
-
toggleTimeline = new EventEmitter();
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SidebarToggles, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: SidebarToggles, isStandalone: true, selector: "lib-sidebar-toggles", inputs: { allOpen: "allOpen", contactOpen: "contactOpen", timelineOpen: "timelineOpen" }, outputs: { toggleAll: "toggleAll", toggleContact: "toggleContact", toggleTimeline: "toggleTimeline" }, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SidebarToggles, decorators: [{
|
|
20
|
-
type: Component,
|
|
21
|
-
args: [{ selector: 'lib-sidebar-toggles', standalone: true, imports: [CommonModule, NgClass], template: "<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" }]
|
|
22
|
-
}], propDecorators: { allOpen: [{
|
|
23
|
-
type: Input
|
|
24
|
-
}], contactOpen: [{
|
|
25
|
-
type: Input
|
|
26
|
-
}], timelineOpen: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}], toggleAll: [{
|
|
29
|
-
type: Output
|
|
30
|
-
}], toggleContact: [{
|
|
31
|
-
type: Output
|
|
32
|
-
}], toggleTimeline: [{
|
|
33
|
-
type: Output
|
|
34
|
-
}] } });
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Generated bundle index. Do not edit.
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
export { SidebarToggles };
|
|
41
|
-
//# sourceMappingURL=elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.core-src-lib-components-sidebar-toggles.mjs","sources":["../../../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/sidebar-toggles/elite.framework-ng.core-src-lib-components-sidebar-toggles.ts"],"sourcesContent":["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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAUa,cAAc,CAAA;;IAEhB,OAAO,GAAG,KAAK;;IAEf,WAAW,GAAG,KAAK;;IAEnB,YAAY,GAAG,KAAK;AAEnB,IAAA,SAAS,GAAQ,IAAI,YAAY,EAAQ;AACzC,IAAA,aAAa,GAAI,IAAI,YAAY,EAAQ;AACzC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAQ;uGAVxC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3B,izCAqCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,izCAAA,EAAA;8BAMvB,OAAO,EAAA,CAAA;sBAAf;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBAES,SAAS,EAAA,CAAA;sBAAlB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACS,cAAc,EAAA,CAAA;sBAAvB;;;AEpBH;;AAEG;;;;"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { NgFor } from '@angular/common';
|
|
2
|
-
import * as i0 from '@angular/core';
|
|
3
|
-
import { Component } from '@angular/core';
|
|
4
|
-
import { FieldType, FormlyForm } from '@ngx-formly/core';
|
|
5
|
-
import { TabsModule } from 'primeng/tabs';
|
|
6
|
-
|
|
7
|
-
class TabsTypeComponent extends FieldType {
|
|
8
|
-
isValid(field) {
|
|
9
|
-
if (field.key) {
|
|
10
|
-
return field.formControl?.valid ?? true;
|
|
11
|
-
}
|
|
12
|
-
return field.fieldGroup ? field.fieldGroup.every((f) => this.isValid(f)) : true;
|
|
13
|
-
}
|
|
14
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TabsTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: TabsTypeComponent, isStandalone: true, selector: "formly-tabs-type", usesInheritance: true, ngImport: i0, template: `
|
|
16
|
-
<!-- <p-tabView>
|
|
17
|
-
<p-tabPanel *ngFor="let tabField of field.fieldGroup; let i = index" [disabled]="i !== 0 &&
|
|
18
|
-
!isValid(field.fieldGroup![i - 1])" [header]="tabField.props?.label || 'Tab '+(i+1)">
|
|
19
|
-
<formly-form [fields]="tabField.fieldGroup!" [form]="form" [options]="options" [model]="model"></formly-form>
|
|
20
|
-
</p-tabPanel>
|
|
21
|
-
</p-tabView> -->
|
|
22
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TabsModule }] });
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TabsTypeComponent, decorators: [{
|
|
25
|
-
type: Component,
|
|
26
|
-
args: [{
|
|
27
|
-
selector: 'formly-tabs-type',
|
|
28
|
-
imports: [NgFor, FormlyForm, TabsModule],
|
|
29
|
-
template: `
|
|
30
|
-
<!-- <p-tabView>
|
|
31
|
-
<p-tabPanel *ngFor="let tabField of field.fieldGroup; let i = index" [disabled]="i !== 0 &&
|
|
32
|
-
!isValid(field.fieldGroup![i - 1])" [header]="tabField.props?.label || 'Tab '+(i+1)">
|
|
33
|
-
<formly-form [fields]="tabField.fieldGroup!" [form]="form" [options]="options" [model]="model"></formly-form>
|
|
34
|
-
</p-tabPanel>
|
|
35
|
-
</p-tabView> -->
|
|
36
|
-
`
|
|
37
|
-
}]
|
|
38
|
-
}] });
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Generated bundle index. Do not edit.
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
export { TabsTypeComponent };
|
|
45
|
-
//# sourceMappingURL=elite.framework-ng.core-src-lib-components-tabs.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.core-src-lib-components-tabs.mjs","sources":["../../../projects/core/src/lib/components/tabs/tabs.type.ts","../../../projects/core/src/lib/components/tabs/elite.framework-ng.core-src-lib-components-tabs.ts"],"sourcesContent":["\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAkBM,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAE7C,IAAA,OAAO,CAAC,KAAwB,EAAA;AAC/B,QAAA,IAAI,KAAK,CAAC,GAAG,EAAE;AACb,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI;;AAGzC,QAAA,OAAO,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;;uGAPtE,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATlB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAR4B,UAAU,EAAA,CAAA,EAAA,CAAA;;2FAU5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC3B,oBAAA,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAC,UAAU,CAAC;AACxC,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { Tag } from 'primeng/tag';
|
|
2
|
-
import * as i0 from '@angular/core';
|
|
3
|
-
import { Component } from '@angular/core';
|
|
4
|
-
import { FieldType, FormlyAttributes } from '@ngx-formly/core';
|
|
5
|
-
import * as i1 from 'primeng/tooltip';
|
|
6
|
-
import { TooltipModule } from 'primeng/tooltip';
|
|
7
|
-
import * as i3 from '@ngx-translate/core';
|
|
8
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
9
|
-
import * as i2 from '@angular/common';
|
|
10
|
-
import { CommonModule } from '@angular/common';
|
|
11
|
-
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
12
|
-
|
|
13
|
-
class TagTypeComponent extends FieldType {
|
|
14
|
-
getTooltip() {
|
|
15
|
-
const tooltipFrom = this.props['table']['props']['tooltipFrom'];
|
|
16
|
-
return this.model?.[tooltipFrom];
|
|
17
|
-
}
|
|
18
|
-
getValue() {
|
|
19
|
-
var key = this.key;
|
|
20
|
-
const val = this.model?.[key];
|
|
21
|
-
return val;
|
|
22
|
-
}
|
|
23
|
-
getSeverity() {
|
|
24
|
-
const value = this.getValue();
|
|
25
|
-
if (value === true)
|
|
26
|
-
return 'success';
|
|
27
|
-
if (value === false)
|
|
28
|
-
return 'danger';
|
|
29
|
-
return 'info';
|
|
30
|
-
}
|
|
31
|
-
getDisplayValue() {
|
|
32
|
-
const value = this.getValue();
|
|
33
|
-
if (value === true)
|
|
34
|
-
return 'مفعل';
|
|
35
|
-
if (value === false)
|
|
36
|
-
return 'معطل';
|
|
37
|
-
return String(value ?? '-');
|
|
38
|
-
}
|
|
39
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TagTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: TagTypeComponent, isStandalone: true, selector: "formly-tag-type", usesInheritance: true, ngImport: i0, template: `
|
|
41
|
-
<!--
|
|
42
|
-
[formControl]="formControl" -->
|
|
43
|
-
<p-tag
|
|
44
|
-
[formlyAttributes]="field"
|
|
45
|
-
[pTooltip]="getTooltip()"
|
|
46
|
-
[severity]="to['severity'] || getSeverity()"
|
|
47
|
-
[value]="getDisplayValue()"
|
|
48
|
-
[class]="to['styleClass'] || 'font-medium'">
|
|
49
|
-
</p-tag>
|
|
50
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }] });
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TagTypeComponent, decorators: [{
|
|
53
|
-
type: Component,
|
|
54
|
-
args: [{
|
|
55
|
-
selector: 'formly-tag-type',
|
|
56
|
-
standalone: true,
|
|
57
|
-
imports: [Tag, FormlyAttributes, TranslateModule, TooltipModule, CommonModule, ReactiveFormsModule],
|
|
58
|
-
template: `
|
|
59
|
-
<!--
|
|
60
|
-
[formControl]="formControl" -->
|
|
61
|
-
<p-tag
|
|
62
|
-
[formlyAttributes]="field"
|
|
63
|
-
[pTooltip]="getTooltip()"
|
|
64
|
-
[severity]="to['severity'] || getSeverity()"
|
|
65
|
-
[value]="getDisplayValue()"
|
|
66
|
-
[class]="to['styleClass'] || 'font-medium'">
|
|
67
|
-
</p-tag>
|
|
68
|
-
`,
|
|
69
|
-
// changeDetection: ChangeDetectionStrategy.OnPush,
|
|
70
|
-
}]
|
|
71
|
-
}] });
|
|
72
|
-
|
|
73
|
-
class OptionTagTypeComponent extends FieldType {
|
|
74
|
-
get selectedOption() {
|
|
75
|
-
return (this.props?.options ?? [])?.find((opt) => opt.value === this.formControl.value);
|
|
76
|
-
}
|
|
77
|
-
get textColor() {
|
|
78
|
-
// Simple check for light/dark background for contrast
|
|
79
|
-
const hex = this.selectedOption.color.replace('#', '');
|
|
80
|
-
const r = parseInt(hex.substring(0, 2), 16) || 0;
|
|
81
|
-
const g = parseInt(hex.substring(2, 4), 16) || 0;
|
|
82
|
-
const b = parseInt(hex.substring(4, 6), 16) || 0;
|
|
83
|
-
const brightness = (r * 299 + g * 587 + b * 114) / 1000;
|
|
84
|
-
return brightness > 150 ? '#000' : '#fff';
|
|
85
|
-
}
|
|
86
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: OptionTagTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: OptionTagTypeComponent, isStandalone: true, selector: "formly-option-tag-type", usesInheritance: true, ngImport: i0, template: `
|
|
88
|
-
<ng-container *ngIf="selectedOption">
|
|
89
|
-
<div
|
|
90
|
-
class="inline-block px-3 py-1 rounded-full border text-sm"
|
|
91
|
-
[ngStyle]="{
|
|
92
|
-
backgroundColor: selectedOption.color,
|
|
93
|
-
color: textColor,
|
|
94
|
-
borderColor: selectedOption.color
|
|
95
|
-
}"
|
|
96
|
-
[pTooltip]="selectedOption.label | translate"
|
|
97
|
-
>
|
|
98
|
-
{{ selectedOption.label | translate}}
|
|
99
|
-
</div>
|
|
100
|
-
</ng-container>
|
|
101
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
102
|
-
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: OptionTagTypeComponent, decorators: [{
|
|
104
|
-
type: Component,
|
|
105
|
-
args: [{
|
|
106
|
-
selector: 'formly-option-tag-type',
|
|
107
|
-
standalone: true,
|
|
108
|
-
imports: [FormlyAttributes, TranslateModule, TooltipModule, CommonModule, ReactiveFormsModule, FormsModule],
|
|
109
|
-
template: `
|
|
110
|
-
<ng-container *ngIf="selectedOption">
|
|
111
|
-
<div
|
|
112
|
-
class="inline-block px-3 py-1 rounded-full border text-sm"
|
|
113
|
-
[ngStyle]="{
|
|
114
|
-
backgroundColor: selectedOption.color,
|
|
115
|
-
color: textColor,
|
|
116
|
-
borderColor: selectedOption.color
|
|
117
|
-
}"
|
|
118
|
-
[pTooltip]="selectedOption.label | translate"
|
|
119
|
-
>
|
|
120
|
-
{{ selectedOption.label | translate}}
|
|
121
|
-
</div>
|
|
122
|
-
</ng-container>
|
|
123
|
-
`,
|
|
124
|
-
}]
|
|
125
|
-
}] });
|
|
126
|
-
|
|
127
|
-
class ColorTagTypeComponent extends FieldType {
|
|
128
|
-
get colorValue() {
|
|
129
|
-
const val = this.formControl.value;
|
|
130
|
-
return val && typeof val === 'string' && val.startsWith('#') ? val : '#cccccc';
|
|
131
|
-
}
|
|
132
|
-
get textColor() {
|
|
133
|
-
// Simple check for light/dark background for contrast
|
|
134
|
-
const hex = this.colorValue.replace('#', '');
|
|
135
|
-
const r = parseInt(hex.substring(0, 2), 16) || 0;
|
|
136
|
-
const g = parseInt(hex.substring(2, 4), 16) || 0;
|
|
137
|
-
const b = parseInt(hex.substring(4, 6), 16) || 0;
|
|
138
|
-
const brightness = (r * 299 + g * 587 + b * 114) / 1000;
|
|
139
|
-
return brightness > 150 ? '#000' : '#fff';
|
|
140
|
-
}
|
|
141
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ColorTagTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
142
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: ColorTagTypeComponent, isStandalone: true, selector: "formly-color-tag-type", usesInheritance: true, ngImport: i0, template: `
|
|
143
|
-
<div
|
|
144
|
-
class="inline-block px-3 py-1 rounded-full border text-sm"
|
|
145
|
-
[ngStyle]="{
|
|
146
|
-
direction:'ltr',
|
|
147
|
-
backgroundColor: colorValue,
|
|
148
|
-
color: textColor,
|
|
149
|
-
borderColor: colorValue
|
|
150
|
-
}"
|
|
151
|
-
[pTooltip]="colorValue"
|
|
152
|
-
>
|
|
153
|
-
{{ colorValue }}
|
|
154
|
-
</div>
|
|
155
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }] });
|
|
156
|
-
}
|
|
157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ColorTagTypeComponent, decorators: [{
|
|
158
|
-
type: Component,
|
|
159
|
-
args: [{
|
|
160
|
-
selector: 'formly-color-tag-type',
|
|
161
|
-
standalone: true,
|
|
162
|
-
imports: [
|
|
163
|
-
FormlyAttributes,
|
|
164
|
-
TranslateModule,
|
|
165
|
-
TooltipModule,
|
|
166
|
-
CommonModule,
|
|
167
|
-
ReactiveFormsModule,
|
|
168
|
-
FormsModule,
|
|
169
|
-
],
|
|
170
|
-
template: `
|
|
171
|
-
<div
|
|
172
|
-
class="inline-block px-3 py-1 rounded-full border text-sm"
|
|
173
|
-
[ngStyle]="{
|
|
174
|
-
direction:'ltr',
|
|
175
|
-
backgroundColor: colorValue,
|
|
176
|
-
color: textColor,
|
|
177
|
-
borderColor: colorValue
|
|
178
|
-
}"
|
|
179
|
-
[pTooltip]="colorValue"
|
|
180
|
-
>
|
|
181
|
-
{{ colorValue }}
|
|
182
|
-
</div>
|
|
183
|
-
`,
|
|
184
|
-
}]
|
|
185
|
-
}] });
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Generated bundle index. Do not edit.
|
|
189
|
-
*/
|
|
190
|
-
|
|
191
|
-
export { ColorTagTypeComponent, OptionTagTypeComponent, TagTypeComponent };
|
|
192
|
-
//# sourceMappingURL=elite.framework-ng.core-src-lib-components-tag-type.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.core-src-lib-components-tag-type.mjs","sources":["../../../projects/core/src/lib/components/tag-type/formly-tag-type.ts","../../../projects/core/src/lib/components/tag-type/formly-option-tag-type.ts","../../../projects/core/src/lib/components/tag-type/formly-color-tag-type.ts","../../../projects/core/src/lib/components/tag-type/elite.framework-ng.core-src-lib-components-tag-type.ts"],"sourcesContent":["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 { 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 { 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAyBM,MAAO,gBAAiB,SAAQ,SAA0B,CAAA;IAE9D,UAAU,GAAA;AACV,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;AAC/D,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;;IAEhC,QAAQ,GAAA;AACN,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAa;QAC5B,MAAM,GAAG,GAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AAC9B,QAAA,OAAO,GAAG;;IAGZ,WAAW,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE7B,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,SAAS;QACpC,IAAI,KAAK,KAAK,KAAK;AAAE,YAAA,OAAO,QAAQ;AACpC,QAAA,OAAO,MAAM;;IAGf,eAAe,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE7B,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,MAAM;QACjC,IAAI,KAAK,KAAK,KAAK;AAAE,YAAA,OAAO,MAAM;AAClC,QAAA,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;;uGAzBlB,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbjB;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAXS,GAAG,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAC,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,eAAe,8BAAC,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;2FAcnF,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,GAAG,EAAC,gBAAgB,EAAC,eAAe,EAAC,aAAa,EAAC,YAAY,EAAE,mBAAmB,CAAC;AAC/F,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;;AAEF,iBAAA;;;ACGK,MAAO,sBAAuB,SAAQ,SAAS,CAAA;AACnD,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAS,GAAG,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAEpG,IAAA,IAAI,SAAS,GAAA;;AAEZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACtD,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI;QACvD,OAAO,UAAU,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM;;uGAXhC,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBvB;;;;;;;;;;;;;;GAcT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAf2B,eAAe,8BAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAiB/F,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,CAAC;AAC3G,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACF,iBAAA;;;ACOK,MAAO,qBAAsB,SAAQ,SAAS,CAAA;AAClD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;QAClC,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS;;AAGhF,IAAA,IAAI,SAAS,GAAA;;AAEX,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAC5C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI;QACvD,OAAO,UAAU,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM;;uGAbhC,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAftB;;;;;;;;;;;;;GAaT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnBC,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,8BACnB,WAAW,EAAA,CAAA,EAAA,CAAA;;2FAiBF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1BjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;AACZ,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,EAAA,CAAA;AACF,iBAAA;;;AChCD;;AAEG;;;;"}
|