@elite.framework/ng.ui.core 0.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 +3 -0
- package/attachments/README.md +3 -0
- package/attachments/index.d.ts +38 -0
- package/base-crud/README.md +3 -0
- package/base-crud/index.d.ts +68 -0
- package/breadcrumb/README.md +3 -0
- package/breadcrumb/index.d.ts +17 -0
- package/checkbox/README.md +3 -0
- package/checkbox/index.d.ts +33 -0
- package/color-picker/README.md +3 -0
- package/color-picker/index.d.ts +16 -0
- package/column-settings-popover/README.md +3 -0
- package/column-settings-popover/index.d.ts +46 -0
- package/condition-editor/README.md +3 -0
- package/condition-editor/index.d.ts +80 -0
- package/custom-switch/README.md +3 -0
- package/custom-switch/index.d.ts +19 -0
- package/datepicker/README.md +3 -0
- package/datepicker/index.d.ts +23 -0
- package/deactivation-reason/README.md +3 -0
- package/deactivation-reason/index.d.ts +31 -0
- package/fesm2022/elite.framework-ng.ui.core-attachments.mjs +217 -0
- package/fesm2022/elite.framework-ng.ui.core-attachments.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-base-crud.mjs +312 -0
- package/fesm2022/elite.framework-ng.ui.core-base-crud.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-breadcrumb.mjs +144 -0
- package/fesm2022/elite.framework-ng.ui.core-breadcrumb.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-checkbox.mjs +130 -0
- package/fesm2022/elite.framework-ng.ui.core-checkbox.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-color-picker.mjs +88 -0
- package/fesm2022/elite.framework-ng.ui.core-color-picker.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-column-settings-popover.mjs +184 -0
- package/fesm2022/elite.framework-ng.ui.core-column-settings-popover.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-condition-editor.mjs +782 -0
- package/fesm2022/elite.framework-ng.ui.core-condition-editor.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs +122 -0
- package/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-datepicker.mjs +206 -0
- package/fesm2022/elite.framework-ng.ui.core-datepicker.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-deactivation-reason.mjs +142 -0
- package/fesm2022/elite.framework-ng.ui.core-deactivation-reason.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-form-button.mjs +62 -0
- package/fesm2022/elite.framework-ng.ui.core-form-button.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-form-field.mjs +155 -0
- package/fesm2022/elite.framework-ng.ui.core-form-field.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-form-template.mjs +37 -0
- package/fesm2022/elite.framework-ng.ui.core-form-template.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-avatar-image.mjs +112 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-avatar-image.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-avatar-label.mjs +90 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-avatar-label.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-button-selector.mjs +179 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-button-selector.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-button.mjs +74 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-button.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-presets.mjs +201 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-presets.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-split-button.mjs +62 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-split-button.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-ui.mjs +416 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-ui.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-username-with-domain.mjs +88 -0
- package/fesm2022/elite.framework-ng.ui.core-formly-username-with-domain.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-autocomplete.mjs +175 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-autocomplete.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs +145 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-card.mjs +219 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-card.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs +398 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-errormessage.mjs +35 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-errormessage.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-formly-fields.mjs +65 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-formly-fields.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-loadingspinner.mjs +35 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-loadingspinner.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-search.mjs +98 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-search.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs +441 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs +226 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-header-wrapper.mjs +31 -0
- package/fesm2022/elite.framework-ng.ui.core-header-wrapper.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-icon-picker.mjs +207 -0
- package/fesm2022/elite.framework-ng.ui.core-icon-picker.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-input-switch.mjs +106 -0
- package/fesm2022/elite.framework-ng.ui.core-input-switch.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-input-with-icon.mjs +67 -0
- package/fesm2022/elite.framework-ng.ui.core-input-with-icon.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-input.mjs +201 -0
- package/fesm2022/elite.framework-ng.ui.core-input.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-label-type.mjs +125 -0
- package/fesm2022/elite.framework-ng.ui.core-label-type.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-odata-query-builder.mjs +308 -0
- package/fesm2022/elite.framework-ng.ui.core-odata-query-builder.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-radio.mjs +118 -0
- package/fesm2022/elite.framework-ng.ui.core-radio.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-repeat.mjs +147 -0
- package/fesm2022/elite.framework-ng.ui.core-repeat.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-select.mjs +180 -0
- package/fesm2022/elite.framework-ng.ui.core-select.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-sidebar-cards.mjs +52 -0
- package/fesm2022/elite.framework-ng.ui.core-sidebar-cards.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-sidebar-toggles.mjs +53 -0
- package/fesm2022/elite.framework-ng.ui.core-sidebar-toggles.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-tabs.mjs +57 -0
- package/fesm2022/elite.framework-ng.ui.core-tabs.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-tag-type.mjs +204 -0
- package/fesm2022/elite.framework-ng.ui.core-tag-type.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-text-editor.mjs +56 -0
- package/fesm2022/elite.framework-ng.ui.core-text-editor.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-textarea.mjs +95 -0
- package/fesm2022/elite.framework-ng.ui.core-textarea.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-ui-button.mjs +101 -0
- package/fesm2022/elite.framework-ng.ui.core-ui-button.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs +186 -0
- package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core.mjs +18 -0
- package/fesm2022/elite.framework-ng.ui.core.mjs.map +1 -0
- package/form-button/README.md +3 -0
- package/form-button/index.d.ts +17 -0
- package/form-field/README.md +3 -0
- package/form-field/index.d.ts +30 -0
- package/form-template/README.md +3 -0
- package/form-template/index.d.ts +16 -0
- package/formly-avatar-image/README.md +3 -0
- package/formly-avatar-image/index.d.ts +18 -0
- package/formly-avatar-label/README.md +3 -0
- package/formly-avatar-label/index.d.ts +36 -0
- package/formly-button/README.md +3 -0
- package/formly-button/index.d.ts +20 -0
- package/formly-button-selector/README.md +3 -0
- package/formly-button-selector/index.d.ts +35 -0
- package/formly-presets/README.md +3 -0
- package/formly-presets/index.d.ts +37 -0
- package/formly-split-button/README.md +3 -0
- package/formly-split-button/index.d.ts +23 -0
- package/formly-ui/README.md +3 -0
- package/formly-ui/index.d.ts +42 -0
- package/formly-username-with-domain/README.md +3 -0
- package/formly-username-with-domain/index.d.ts +19 -0
- package/generic-autocomplete/README.md +3 -0
- package/generic-autocomplete/index.d.ts +41 -0
- package/generic-button/README.md +3 -0
- package/generic-button/index.d.ts +42 -0
- package/generic-card/README.md +3 -0
- package/generic-card/index.d.ts +93 -0
- package/generic-crud-table/README.md +3 -0
- package/generic-crud-table/index.d.ts +129 -0
- package/generic-errormessage/README.md +3 -0
- package/generic-errormessage/index.d.ts +17 -0
- package/generic-formly-fields/README.md +3 -0
- package/generic-formly-fields/index.d.ts +26 -0
- package/generic-loadingspinner/README.md +3 -0
- package/generic-loadingspinner/index.d.ts +16 -0
- package/generic-search/README.md +3 -0
- package/generic-search/index.d.ts +36 -0
- package/generic-selector/README.md +3 -0
- package/generic-selector/index.d.ts +73 -0
- package/generic-table/README.md +3 -0
- package/generic-table/index.d.ts +66 -0
- package/header-wrapper/README.md +3 -0
- package/header-wrapper/index.d.ts +15 -0
- package/icon-picker/README.md +3 -0
- package/icon-picker/index.d.ts +30 -0
- package/index.d.ts +8 -0
- package/input/README.md +3 -0
- package/input/index.d.ts +42 -0
- package/input-switch/README.md +3 -0
- package/input-switch/index.d.ts +16 -0
- package/input-with-icon/README.md +3 -0
- package/input-with-icon/index.d.ts +17 -0
- package/label-type/README.md +3 -0
- package/label-type/index.d.ts +26 -0
- package/odata-query-builder/README.md +3 -0
- package/odata-query-builder/index.d.ts +87 -0
- package/package.json +219 -0
- package/radio/README.md +3 -0
- package/radio/index.d.ts +38 -0
- package/repeat/README.md +3 -0
- package/repeat/index.d.ts +24 -0
- package/select/README.md +3 -0
- package/select/index.d.ts +42 -0
- package/sidebar-cards/README.md +3 -0
- package/sidebar-cards/index.d.ts +25 -0
- package/sidebar-toggles/README.md +3 -0
- package/sidebar-toggles/index.d.ts +25 -0
- package/tabs/README.md +3 -0
- package/tabs/index.d.ts +17 -0
- package/tag-type/README.md +3 -0
- package/tag-type/index.d.ts +34 -0
- package/text-editor/README.md +3 -0
- package/text-editor/index.d.ts +16 -0
- package/textarea/README.md +3 -0
- package/textarea/index.d.ts +36 -0
- package/ui-button/README.md +3 -0
- package/ui-button/index.d.ts +33 -0
- package/wrappers/README.md +3 -0
- package/wrappers/index.d.ts +31 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { NgModule, inject, Directive } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { Router, ActivatedRoute } from '@angular/router';
|
|
5
|
+
import { SwalService } from '@elite.framework/ng.core/services';
|
|
6
|
+
import { DeactivationReasonFormComponent } from '@elite.framework/ng.ui.core/deactivation-reason';
|
|
7
|
+
|
|
8
|
+
class BaseCrudModule {
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BaseCrudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });
|
|
11
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BaseCrudModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
imports: [CommonModule],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
|
|
20
|
+
class BaseCrud {
|
|
21
|
+
list = [];
|
|
22
|
+
paginator = true;
|
|
23
|
+
canLoad = true;
|
|
24
|
+
loading = false;
|
|
25
|
+
errorMsg = '';
|
|
26
|
+
first = 0;
|
|
27
|
+
rows = 10;
|
|
28
|
+
totalRecords = 0;
|
|
29
|
+
searchGlobal = '';
|
|
30
|
+
sort;
|
|
31
|
+
pageFilters = {};
|
|
32
|
+
currentFilters = {};
|
|
33
|
+
mode = '';
|
|
34
|
+
scrollHeight = '400px';
|
|
35
|
+
swalService = inject(SwalService);
|
|
36
|
+
dialogRef;
|
|
37
|
+
dialogVisible = false;
|
|
38
|
+
drawerVisible = false;
|
|
39
|
+
selectedItem = null;
|
|
40
|
+
defaultModel = null;
|
|
41
|
+
// selectedItem: T | any = {};
|
|
42
|
+
isViewMode = false;
|
|
43
|
+
isEditMode = false;
|
|
44
|
+
displayMode = 'drawer';
|
|
45
|
+
router = inject(Router);
|
|
46
|
+
route = inject(ActivatedRoute);
|
|
47
|
+
loadPage(pageIndex, pageSize) {
|
|
48
|
+
if (this.canLoad) {
|
|
49
|
+
this.loading = true;
|
|
50
|
+
const filters = {
|
|
51
|
+
maxResultCount: pageSize,
|
|
52
|
+
skipCount: pageIndex,
|
|
53
|
+
sorting: this.sort,
|
|
54
|
+
...this.currentFilters,
|
|
55
|
+
...this.pageFilters,
|
|
56
|
+
...(this.searchGlobal ? { filter: this.searchGlobal } : {}),
|
|
57
|
+
};
|
|
58
|
+
//
|
|
59
|
+
this.service.getList(filters)
|
|
60
|
+
.subscribe({
|
|
61
|
+
next: (res) => {
|
|
62
|
+
//
|
|
63
|
+
this.list = res.items;
|
|
64
|
+
this.totalRecords = res.totalCount;
|
|
65
|
+
this.loading = false;
|
|
66
|
+
},
|
|
67
|
+
error: (err) => {
|
|
68
|
+
this.errorMsg = err.error?.message || err.message || 'خطأ في التحميل';
|
|
69
|
+
this.loading = false;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
onSearch(filters) {
|
|
75
|
+
//
|
|
76
|
+
if (filters && typeof filters === 'object' && !Array.isArray(filters)) {
|
|
77
|
+
this.pageFilters = filters;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.searchGlobal = filters;
|
|
81
|
+
}
|
|
82
|
+
this.loadPage(0, 10);
|
|
83
|
+
}
|
|
84
|
+
onPageChange(event) {
|
|
85
|
+
// فك المتغيّرات مع قيمة افتراضية لفلاتر
|
|
86
|
+
const { first = this.first, rows = this.rows, sort = this.sort, filters = {} } = event;
|
|
87
|
+
this.first = first;
|
|
88
|
+
this.rows = rows;
|
|
89
|
+
this.sort = sort;
|
|
90
|
+
// const pageIndex = Math.floor(first / rows);
|
|
91
|
+
const skipCount = first;
|
|
92
|
+
const pageIndex = skipCount;
|
|
93
|
+
// الوصول للفلتر العام عبر الصيغة المربعة
|
|
94
|
+
const globalValue = filters['global'];
|
|
95
|
+
this.searchGlobal = typeof globalValue === 'string' ? globalValue : '';
|
|
96
|
+
// فلترة خاصة بحقل واحد
|
|
97
|
+
// const fieldFilters = { ...filters };
|
|
98
|
+
// delete fieldFilters['global'];
|
|
99
|
+
// this.currentFilters = fieldFilters as Partial<F>;
|
|
100
|
+
this.loadPage(pageIndex, rows);
|
|
101
|
+
}
|
|
102
|
+
openEditor(item, mode) {
|
|
103
|
+
this.mode = mode;
|
|
104
|
+
this.selectedItem = item ?? this.defaultModel ?? {};
|
|
105
|
+
this.isEditMode = mode === 'edit';
|
|
106
|
+
this.isViewMode = mode === 'view';
|
|
107
|
+
// resolve displayMode (string or map)
|
|
108
|
+
const modeConfig = typeof this.displayMode === 'string'
|
|
109
|
+
? this.displayMode
|
|
110
|
+
: this.displayMode[mode] ?? 'drawer';
|
|
111
|
+
switch (modeConfig) {
|
|
112
|
+
case 'drawer':
|
|
113
|
+
this.drawerVisible = true;
|
|
114
|
+
break;
|
|
115
|
+
case 'dialog':
|
|
116
|
+
this.dialogVisible = true;
|
|
117
|
+
break;
|
|
118
|
+
case 'route':
|
|
119
|
+
{
|
|
120
|
+
const id = item ? item[this.idField] : 'new';
|
|
121
|
+
if (mode === 'add') {
|
|
122
|
+
this.router.navigate([mode], { relativeTo: this.route });
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
this.router.navigate([id, mode], { relativeTo: this.route });
|
|
126
|
+
}
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
visibleChange(value) {
|
|
132
|
+
const modeConfig = typeof this.displayMode === 'string'
|
|
133
|
+
? this.displayMode
|
|
134
|
+
: this.displayMode[this.mode] ?? 'drawer';
|
|
135
|
+
if (modeConfig === 'dialog') {
|
|
136
|
+
this.dialogVisible = value;
|
|
137
|
+
}
|
|
138
|
+
else if (modeConfig === 'drawer') {
|
|
139
|
+
this.drawerVisible = value;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// route mode does not use drawer/dialog
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// onTableAction(event: { name: string; row: T | null }): void {
|
|
146
|
+
// switch (event.name) {
|
|
147
|
+
// case 'add': this.openDrawer(null,event.name); break;
|
|
148
|
+
// case 'view': this.openDrawer(event.row!,event.name); break;
|
|
149
|
+
// case 'edit': this.openDrawer(event.row!,event.name); break;
|
|
150
|
+
// case 'delete': this.onDelete(event.row!);break;
|
|
151
|
+
// case 'state': this.openDeactivationReason(event.row!);break;
|
|
152
|
+
// }
|
|
153
|
+
// }
|
|
154
|
+
onTableAction(event) {
|
|
155
|
+
switch (event.name) {
|
|
156
|
+
case 'add':
|
|
157
|
+
case 'edit':
|
|
158
|
+
case 'view':
|
|
159
|
+
this.openEditor(event.row, event.name);
|
|
160
|
+
break;
|
|
161
|
+
case 'delete':
|
|
162
|
+
this.onDelete(event.row);
|
|
163
|
+
break;
|
|
164
|
+
case 'state':
|
|
165
|
+
this.openDeactivationReason(event.row);
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
openDrawer(item, mode) {
|
|
170
|
+
this.mode = mode;
|
|
171
|
+
// this.drawerVisible = !this.drawerVisible;
|
|
172
|
+
if (item == null) {
|
|
173
|
+
this.selectedItem = this.defaultModel || {};
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.selectedItem = item;
|
|
177
|
+
}
|
|
178
|
+
if (mode == 'edit') {
|
|
179
|
+
this.drawerVisible = true;
|
|
180
|
+
this.isEditMode = true;
|
|
181
|
+
this.isViewMode = false;
|
|
182
|
+
// this.isEditMode = item !=null ;
|
|
183
|
+
}
|
|
184
|
+
if (mode == 'add') {
|
|
185
|
+
this.drawerVisible = true;
|
|
186
|
+
this.isViewMode = false;
|
|
187
|
+
this.isEditMode = false;
|
|
188
|
+
}
|
|
189
|
+
if (mode == 'view') {
|
|
190
|
+
// this.drawerVisible = true;
|
|
191
|
+
this.dialogVisible = true;
|
|
192
|
+
this.isViewMode = true;
|
|
193
|
+
this.isEditMode = false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
openDeactivationReason(model) {
|
|
197
|
+
this.selectedItem = model;
|
|
198
|
+
if (this.selectedItem.isActive == true) {
|
|
199
|
+
const ref = this.dialogService.open(DeactivationReasonFormComponent, {
|
|
200
|
+
header: 'السبب (في حال تم إيقافه)',
|
|
201
|
+
width: '30vw',
|
|
202
|
+
data: { model: { ...model },
|
|
203
|
+
fields: this.formFields,
|
|
204
|
+
service: this.service,
|
|
205
|
+
idField: this.idField },
|
|
206
|
+
});
|
|
207
|
+
ref.onClose.subscribe((result) => {
|
|
208
|
+
if (result) {
|
|
209
|
+
this.selectedItem.isActive = false;
|
|
210
|
+
this.selectedItem.deactivationReason = result.deactivationReason;
|
|
211
|
+
// Optionally: save model via API
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
this.selectedItem.isActive = true;
|
|
217
|
+
this.selectedItem.deactivationReason = "";
|
|
218
|
+
const id = this.selectedItem[this.idField];
|
|
219
|
+
this.service.update(id, this.selectedItem).subscribe({
|
|
220
|
+
next: () => { console.log(''); },
|
|
221
|
+
error: (err) => {
|
|
222
|
+
this.loading = false;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// onDelete(item: any): void {
|
|
228
|
+
// if (!confirm('هل تريد الحذف فعلاً؟')) return;
|
|
229
|
+
// const id = (item as any)[this.idField];
|
|
230
|
+
// this.service.delete(id).subscribe(() => {
|
|
231
|
+
// this.loadPage(0, this.rows);
|
|
232
|
+
// });
|
|
233
|
+
// }
|
|
234
|
+
onDelete(item) {
|
|
235
|
+
const id = item[this.idField];
|
|
236
|
+
this.swalService.confirm('تأكيد الحذف', 'هل تريد حذف هذا السجل فعلاً؟', 'نعم، احذف', 'إلغاء').then((result) => {
|
|
237
|
+
if (result.isConfirmed) {
|
|
238
|
+
this.service.delete(id).subscribe({
|
|
239
|
+
next: () => {
|
|
240
|
+
this.loadPage(0, this.rows);
|
|
241
|
+
this.swalService.success('تم الحذف بنجاح');
|
|
242
|
+
},
|
|
243
|
+
error: (err) => {
|
|
244
|
+
this.loading = false;
|
|
245
|
+
const msg = err.error?.title ||
|
|
246
|
+
err.message ||
|
|
247
|
+
'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';
|
|
248
|
+
// this.errorMessage = msg;
|
|
249
|
+
// ❌ رسالة خطأ
|
|
250
|
+
this.swalService.error('فشل الحذف', msg);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
get columns() {
|
|
257
|
+
const flattenFields = (fields) => {
|
|
258
|
+
return fields.flatMap(field => {
|
|
259
|
+
// Check for nested group/panel
|
|
260
|
+
if (field.fieldGroup?.length) {
|
|
261
|
+
return flattenFields(field.fieldGroup);
|
|
262
|
+
}
|
|
263
|
+
// Skip fields with no props or table.hidden === true
|
|
264
|
+
if (!field.props || field.props['table']?.hidden === true) {
|
|
265
|
+
return [];
|
|
266
|
+
}
|
|
267
|
+
// Determine the column type: table.type > field.type > 'label-type'
|
|
268
|
+
// const tableType = field.props['table']?.type || field.type || 'label-type';
|
|
269
|
+
const tableType = field.props['table']?.type || 'label-type';
|
|
270
|
+
//
|
|
271
|
+
return [{
|
|
272
|
+
type: tableType,
|
|
273
|
+
key: field['key'], // always set key for table rendering
|
|
274
|
+
props: {
|
|
275
|
+
...field.props, // base props
|
|
276
|
+
...field.props['table']?.props // table-specific overrides
|
|
277
|
+
},
|
|
278
|
+
expressions: field.props['table']?.expressions
|
|
279
|
+
}];
|
|
280
|
+
});
|
|
281
|
+
};
|
|
282
|
+
return flattenFields(this.formFields);
|
|
283
|
+
}
|
|
284
|
+
get filters() {
|
|
285
|
+
const flattenForFilter = (fields) => {
|
|
286
|
+
return fields.flatMap(field => {
|
|
287
|
+
if (field.fieldGroup?.length) {
|
|
288
|
+
// Recursively handle nested panels/groups
|
|
289
|
+
return flattenForFilter(field.fieldGroup);
|
|
290
|
+
}
|
|
291
|
+
// Skip fields with no props or filter.hidden === true
|
|
292
|
+
if (!field.props || field.props['filter']?.hidden === true) {
|
|
293
|
+
return [];
|
|
294
|
+
}
|
|
295
|
+
return [field];
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
return flattenForFilter(this.formFields);
|
|
299
|
+
}
|
|
300
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BaseCrud, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
301
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.8", type: BaseCrud, isStandalone: true, ngImport: i0 });
|
|
302
|
+
}
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BaseCrud, decorators: [{
|
|
304
|
+
type: Directive
|
|
305
|
+
}] });
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Generated bundle index. Do not edit.
|
|
309
|
+
*/
|
|
310
|
+
|
|
311
|
+
export { BaseCrud, BaseCrudModule };
|
|
312
|
+
//# sourceMappingURL=elite.framework-ng.ui.core-base-crud.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-base-crud.mjs","sources":["../tmp-esm2022/base-crud/lib/base-crud-module.js","../tmp-esm2022/base-crud/lib/base-crud.js","../tmp-esm2022/base-crud/elite.framework-ng.ui.core-base-crud.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class BaseCrudModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9iYXNlLWNydWQvc3JjL2xpYi9iYXNlLWNydWQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sY0FBYzt1R0FBZCxjQUFjO3dHQUFkLGNBQWMsWUFGZixZQUFZO3dHQUVYLGNBQWMsWUFGZixZQUFZOzsyRkFFWCxjQUFjO2tCQUgxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VDcnVkTW9kdWxlIHt9XG4iXX0=","import { Directive, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { DeactivationReasonFormComponent } from '@elite.framework/ng.ui.core/deactivation-reason';\nimport * as i0 from \"@angular/core\";\nexport class BaseCrud {\n list = [];\n paginator = true;\n canLoad = true;\n loading = false;\n errorMsg = '';\n first = 0;\n rows = 10;\n totalRecords = 0;\n searchGlobal = '';\n sort;\n pageFilters = {};\n currentFilters = {};\n mode = '';\n scrollHeight = '400px';\n swalService = inject(SwalService);\n dialogRef;\n dialogVisible = false;\n drawerVisible = false;\n selectedItem = null;\n defaultModel = null;\n // selectedItem: T | any = {};\n isViewMode = false;\n isEditMode = false;\n displayMode = 'drawer';\n router = inject(Router);\n route = inject(ActivatedRoute);\n loadPage(pageIndex, pageSize) {\n if (this.canLoad) {\n this.loading = true;\n const filters = {\n maxResultCount: pageSize,\n skipCount: pageIndex,\n sorting: this.sort,\n ...this.currentFilters,\n ...this.pageFilters,\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\n };\n //\n this.service.getList(filters)\n .subscribe({\n next: (res) => {\n //\n this.list = res.items;\n this.totalRecords = res.totalCount;\n this.loading = false;\n },\n error: (err) => {\n this.errorMsg = err.error?.message || err.message || 'خطأ في التحميل';\n this.loading = false;\n }\n });\n }\n }\n onSearch(filters) {\n //\n if (filters && typeof filters === 'object' && !Array.isArray(filters)) {\n this.pageFilters = filters;\n }\n else {\n this.searchGlobal = filters;\n }\n this.loadPage(0, 10);\n }\n onPageChange(event) {\n // فك المتغيّرات مع قيمة افتراضية لفلاتر\n const { first = this.first, rows = this.rows, sort = this.sort, filters = {} } = event;\n this.first = first;\n this.rows = rows;\n this.sort = sort;\n // const pageIndex = Math.floor(first / rows);\n const skipCount = first;\n const pageIndex = skipCount;\n // الوصول للفلتر العام عبر الصيغة المربعة\n const globalValue = filters['global'];\n this.searchGlobal = typeof globalValue === 'string' ? globalValue : '';\n // فلترة خاصة بحقل واحد\n // const fieldFilters = { ...filters };\n // delete fieldFilters['global'];\n // this.currentFilters = fieldFilters as Partial<F>;\n this.loadPage(pageIndex, rows);\n }\n openEditor(item, mode) {\n this.mode = mode;\n this.selectedItem = item ?? this.defaultModel ?? {};\n this.isEditMode = mode === 'edit';\n this.isViewMode = mode === 'view';\n // resolve displayMode (string or map)\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[mode] ?? 'drawer';\n switch (modeConfig) {\n case 'drawer':\n this.drawerVisible = true;\n break;\n case 'dialog':\n this.dialogVisible = true;\n break;\n case 'route':\n {\n const id = item ? item[this.idField] : 'new';\n if (mode === 'add') {\n this.router.navigate([mode], { relativeTo: this.route });\n }\n else {\n this.router.navigate([id, mode], { relativeTo: this.route });\n }\n break;\n }\n }\n }\n visibleChange(value) {\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[this.mode] ?? 'drawer';\n if (modeConfig === 'dialog') {\n this.dialogVisible = value;\n }\n else if (modeConfig === 'drawer') {\n this.drawerVisible = value;\n }\n else {\n // route mode does not use drawer/dialog\n }\n }\n // onTableAction(event: { name: string; row: T | null }): void {\n // switch (event.name) {\n // case 'add': this.openDrawer(null,event.name); break;\n // case 'view': this.openDrawer(event.row!,event.name); break;\n // case 'edit': this.openDrawer(event.row!,event.name); break;\n // case 'delete': this.onDelete(event.row!);break;\n // case 'state': this.openDeactivationReason(event.row!);break;\n // }\n // }\n onTableAction(event) {\n switch (event.name) {\n case 'add':\n case 'edit':\n case 'view':\n this.openEditor(event.row, event.name);\n break;\n case 'delete':\n this.onDelete(event.row);\n break;\n case 'state':\n this.openDeactivationReason(event.row);\n break;\n }\n }\n openDrawer(item, mode) {\n this.mode = mode;\n // this.drawerVisible = !this.drawerVisible;\n if (item == null) {\n this.selectedItem = this.defaultModel || {};\n }\n else {\n this.selectedItem = item;\n }\n if (mode == 'edit') {\n this.drawerVisible = true;\n this.isEditMode = true;\n this.isViewMode = false;\n // this.isEditMode = item !=null ;\n }\n if (mode == 'add') {\n this.drawerVisible = true;\n this.isViewMode = false;\n this.isEditMode = false;\n }\n if (mode == 'view') {\n // this.drawerVisible = true;\n this.dialogVisible = true;\n this.isViewMode = true;\n this.isEditMode = false;\n }\n }\n openDeactivationReason(model) {\n this.selectedItem = model;\n if (this.selectedItem.isActive == true) {\n const ref = this.dialogService.open(DeactivationReasonFormComponent, {\n header: 'السبب (في حال تم إيقافه)',\n width: '30vw',\n data: { model: { ...model },\n fields: this.formFields,\n service: this.service,\n idField: this.idField },\n });\n ref.onClose.subscribe((result) => {\n if (result) {\n this.selectedItem.isActive = false;\n this.selectedItem.deactivationReason = result.deactivationReason;\n // Optionally: save model via API\n }\n });\n }\n else {\n this.selectedItem.isActive = true;\n this.selectedItem.deactivationReason = \"\";\n const id = this.selectedItem[this.idField];\n this.service.update(id, this.selectedItem).subscribe({\n next: () => { console.log(''); },\n error: (err) => {\n this.loading = false;\n }\n });\n }\n }\n // onDelete(item: any): void {\n // if (!confirm('هل تريد الحذف فعلاً؟')) return;\n // const id = (item as any)[this.idField];\n // this.service.delete(id).subscribe(() => {\n // this.loadPage(0, this.rows);\n // });\n // }\n onDelete(item) {\n const id = item[this.idField];\n this.swalService.confirm('تأكيد الحذف', 'هل تريد حذف هذا السجل فعلاً؟', 'نعم، احذف', 'إلغاء').then((result) => {\n if (result.isConfirmed) {\n this.service.delete(id).subscribe({\n next: () => {\n this.loadPage(0, this.rows);\n this.swalService.success('تم الحذف بنجاح');\n },\n error: (err) => {\n this.loading = false;\n const msg = err.error?.title ||\n err.message ||\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\n // this.errorMessage = msg;\n // ❌ رسالة خطأ\n this.swalService.error('فشل الحذف', msg);\n }\n });\n }\n });\n }\n get columns() {\n const flattenFields = (fields) => {\n return fields.flatMap(field => {\n // Check for nested group/panel\n if (field.fieldGroup?.length) {\n return flattenFields(field.fieldGroup);\n }\n // Skip fields with no props or table.hidden === true\n if (!field.props || field.props['table']?.hidden === true) {\n return [];\n }\n // Determine the column type: table.type > field.type > 'label-type'\n // const tableType = field.props['table']?.type || field.type || 'label-type';\n const tableType = field.props['table']?.type || 'label-type';\n //\n return [{\n type: tableType,\n key: field['key'], // always set key for table rendering\n props: {\n ...field.props, // base props\n ...field.props['table']?.props // table-specific overrides\n },\n expressions: field.props['table']?.expressions\n }];\n });\n };\n return flattenFields(this.formFields);\n }\n get filters() {\n const flattenForFilter = (fields) => {\n return fields.flatMap(field => {\n if (field.fieldGroup?.length) {\n // Recursively handle nested panels/groups\n return flattenForFilter(field.fieldGroup);\n }\n // Skip fields with no props or filter.hidden === true\n if (!field.props || field.props['filter']?.hidden === true) {\n return [];\n }\n return [field];\n });\n };\n return flattenForFilter(this.formFields);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrud, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.8\", type: BaseCrud, isStandalone: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrud, decorators: [{\n type: Directive\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvbGliL2Jhc2UtY3J1ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFHbEcsTUFBTSxPQUFnQixRQUFRO0lBQzVCLElBQUksR0FBc0IsRUFBRSxDQUFDO0lBQzdCLFNBQVMsR0FBVSxJQUFJLENBQUM7SUFDeEIsT0FBTyxHQUFVLElBQUksQ0FBQztJQUN0QixPQUFPLEdBQVUsS0FBSyxDQUFDO0lBQ3ZCLFFBQVEsR0FBVSxFQUFFLENBQUM7SUFDckIsS0FBSyxHQUFhLENBQUMsQ0FBQztJQUNwQixJQUFJLEdBQWMsRUFBRSxDQUFDO0lBQ3JCLFlBQVksR0FBTSxDQUFDLENBQUM7SUFDcEIsWUFBWSxHQUFNLEVBQUUsQ0FBQztJQUNyQixJQUFJLENBQVU7SUFDZCxXQUFXLEdBQWUsRUFBRSxDQUFDO0lBQzdCLGNBQWMsR0FBZSxFQUFFLENBQUM7SUFDaEMsSUFBSSxHQUFFLEVBQUUsQ0FBQztJQUNULFlBQVksR0FBRSxPQUFPLENBQUM7SUFDZCxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWhDLFNBQVMsQ0FBb0I7SUFhdkMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFlBQVksR0FBWSxJQUFJLENBQUM7SUFDN0IsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3Qiw4QkFBOEI7SUFDOUIs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Q0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBR0QsSUFBSSxPQUFPO1FBQ1AsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQTJCLEVBQXVCLEVBQUU7WUFDNUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQzdCLDBDQUEwQztvQkFDMUMsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBRUQsc0RBQXNEO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDM0QsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQTFYcUIsUUFBUTsyRkFBUixRQUFROzsyRkFBUixRQUFRO2tCQUQ3QixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiXHJcblxyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlLCBTd2FsU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbkRlZiwgUGFnaW5hdGVkUmVzdWx0IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IERlYWN0aXZhdGlvblJlYXNvbkZvcm1Db21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZGVhY3RpdmF0aW9uLXJlYXNvbic7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDcnVkPFQsIEYgPSBhbnk+ICB7XHJcbiAgbGlzdDogVFtdICAgICAgICAgICAgICAgPSBbXTtcclxuICBwYWdpbmF0b3IgICAgICAgID0gdHJ1ZTtcclxuICBjYW5Mb2FkICAgICAgICA9IHRydWU7XHJcbiAgbG9hZGluZyAgICAgICAgPSBmYWxzZTtcclxuICBlcnJvck1zZyAgICAgICAgPSAnJztcclxuICBmaXJzdCAgICAgICAgICAgPSAwO1xyXG4gIHJvd3MgICAgICAgICAgICA9IDEwO1xyXG4gIHRvdGFsUmVjb3JkcyAgICA9IDA7XHJcbiAgc2VhcmNoR2xvYmFsICAgID0gJyc7XHJcbiAgc29ydD86IHN0cmluZztcclxuICBwYWdlRmlsdGVyczogUGFydGlhbDxGPiA9IHt9O1xyXG4gIGN1cnJlbnRGaWx0ZXJzOiBQYXJ0aWFsPEY+ID0ge307XHJcbiAgbW9kZSA9Jyc7XHJcbiAgc2Nyb2xsSGVpZ2h0ID0nNDAwcHgnO1xyXG4gIHByaXZhdGUgc3dhbFNlcnZpY2UgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgZGlhbG9nUmVmITogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcblxyXG4gIC8vIGFic3RyYWN0IHNlcnZpY2U6IENydWRTZXJ2aWNlPFQsIEY+O1xyXG4gIGFic3RyYWN0IHNlcnZpY2U6IEJhc2VTZXJ2aWNlO1xyXG4gIGFic3RyYWN0IGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XHJcbiAgLy8gYWJzdHJhY3QgZGlhbG9nQ29tcG9uZW50OiBhbnk7XHJcbiAgLy8gYWJzdHJhY3QgY29sdW1uczogQ29sdW1uRGVmPFQ+W107XHJcbiAgYWJzdHJhY3QgYWN0aW9uczogQWN0aW9uRGVmPFQ+W107XHJcblxyXG4gIC8vIGZvciBnZW5lcmljIGRpYWxvZzpcclxuICBhYnN0cmFjdCBmb3JtRmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xyXG4gIGFic3RyYWN0IGlkRmllbGQ6IGtleW9mIFQ7XHJcbiAgZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGRyYXdlclZpc2libGUgPSBmYWxzZTtcclxuICBzZWxlY3RlZEl0ZW06IFQgfCBhbnkgPSBudWxsO1xyXG4gIGRlZmF1bHRNb2RlbDogVCB8IGFueSA9IG51bGw7XHJcbiAgLy8gc2VsZWN0ZWRJdGVtOiBUIHwgYW55ID0ge307XHJcbiAgaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gIGlzRWRpdE1vZGUgPSBmYWxzZTtcclxuXHJcblxyXG5cclxuICBkaXNwbGF5TW9kZTpcclxuICB8ICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnXHJcbiAgfCBQYXJ0aWFsPFJlY29yZDwnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JywgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZSc+PlxyXG4gID0gJ2RyYXdlcic7XHJcblxyXG4gIHByaXZhdGUgcm91dGVyPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcclxuXHJcbmxvYWRQYWdlKHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmNhbkxvYWQpe1xyXG5cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgZmlsdGVyczogUGFydGlhbDxGPiA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6cGFnZVNpemUsXHJcbiAgICAgIHNraXBDb3VudDpwYWdlSW5kZXgsXHJcbiAgICAgIHNvcnRpbmc6dGhpcy5zb3J0LFxyXG4gICAgLi4udGhpcy5jdXJyZW50RmlsdGVycyxcclxuICAgIC4uLnRoaXMucGFnZUZpbHRlcnMsXHJcbiAgICAuLi4odGhpcy5zZWFyY2hHbG9iYWwgPyB7IGZpbHRlcjogdGhpcy5zZWFyY2hHbG9iYWwgfSA6IHt9KSxcclxuICAgIH07XHJcbiAgICAvL1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldExpc3QoZmlsdGVycylcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogUGFnaW5hdGVkUmVzdWx0PFQ+KSA9PiB7XHJcbiAgICAgICAgICAvL1xyXG4gICAgICAgICAgdGhpcy5saXN0ICAgICAgICAgPSByZXMuaXRlbXM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcy50b3RhbENvdW50O1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nICAgICAgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1zZyAgICAgPSBlcnIuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UgfHwgJ9iu2LfYoyDZgdmKINin2YTYqtit2YXZitmEJztcclxuICAgICAgICAgIHRoaXMubG9hZGluZyAgICAgID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxub25TZWFyY2goZmlsdGVycz86IGFueSk6IHZvaWQge1xyXG4gIC8vXHJcbiAgaWYgKGZpbHRlcnMgJiYgdHlwZW9mIGZpbHRlcnMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XHJcbiAgICB0aGlzLnBhZ2VGaWx0ZXJzID0gZmlsdGVycztcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5zZWFyY2hHbG9iYWwgPSBmaWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5sb2FkUGFnZSgwLCAxMCk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbm9uUGFnZUNoYW5nZShldmVudDogeyBmaXJzdD86IG51bWJlcjsgcm93cz86IG51bWJlcjsgc29ydD86IHN0cmluZzsgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT4gfSk6IHZvaWQge1xyXG4gIC8vINmB2YMg2KfZhNmF2KrYutmK2ZHYsdin2Kog2YXYuSDZgtmK2YXYqSDYp9mB2KrYsdin2LbZitipINmE2YHZhNin2KrYsVxyXG4gIGNvbnN0IHtcclxuICAgIGZpcnN0ICAgPSB0aGlzLmZpcnN0LFxyXG4gICAgcm93cyAgICA9IHRoaXMucm93cyxcclxuICAgIHNvcnQgICAgPSB0aGlzLnNvcnQsXHJcbiAgICBmaWx0ZXJzID0ge31cclxuICB9ID0gZXZlbnQ7XHJcblxyXG4gIHRoaXMuZmlyc3QgPSBmaXJzdDtcclxuICB0aGlzLnJvd3MgID0gcm93cztcclxuICB0aGlzLnNvcnQgID0gc29ydDtcclxuXHJcbiAgLy8gY29uc3QgcGFnZUluZGV4ID0gTWF0aC5mbG9vcihmaXJzdCAvIHJvd3MpO1xyXG4gIGNvbnN0IHNraXBDb3VudCA9IGZpcnN0O1xyXG4gIGNvbnN0IHBhZ2VJbmRleCA9IHNraXBDb3VudDtcclxuXHJcbiAgLy8g2KfZhNmI2LXZiNmEINmE2YTZgdmE2KrYsSDYp9mE2LnYp9mFINi52KjYsSDYp9mE2LXZiti62Kkg2KfZhNmF2LHYqNi52KlcclxuICBjb25zdCBnbG9iYWxWYWx1ZSA9IGZpbHRlcnNbJ2dsb2JhbCddO1xyXG4gIHRoaXMuc2VhcmNoR2xvYmFsID0gdHlwZW9mIGdsb2JhbFZhbHVlID09PSAnc3RyaW5nJyA/IGdsb2JhbFZhbHVlIDogJyc7XHJcblxyXG4gIC8vINmB2YTYqtix2Kkg2K7Yp9i12Kkg2KjYrdmC2YQg2YjYp9it2K9cclxuICAvLyBjb25zdCBmaWVsZEZpbHRlcnMgPSB7IC4uLmZpbHRlcnMgfTtcclxuICAvLyBkZWxldGUgZmllbGRGaWx0ZXJzWydnbG9iYWwnXTtcclxuICAvLyB0aGlzLmN1cnJlbnRGaWx0ZXJzID0gZmllbGRGaWx0ZXJzIGFzIFBhcnRpYWw8Rj47XHJcblxyXG5cclxuXHJcbiAgdGhpcy5sb2FkUGFnZShwYWdlSW5kZXgsIHJvd3MpO1xyXG59XHJcblxyXG5cclxucHJvdGVjdGVkIG9wZW5FZGl0b3IoaXRlbTogVCB8IG51bGwsIG1vZGU6ICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnKTogdm9pZCB7XHJcbiAgdGhpcy5tb2RlID0gbW9kZTtcclxuICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW0gPz8gdGhpcy5kZWZhdWx0TW9kZWwgPz8ge307XHJcbiAgdGhpcy5pc0VkaXRNb2RlID0gbW9kZSA9PT0gJ2VkaXQnO1xyXG4gIHRoaXMuaXNWaWV3TW9kZSA9IG1vZGUgPT09ICd2aWV3JztcclxuXHJcbiAgLy8gcmVzb2x2ZSBkaXNwbGF5TW9kZSAoc3RyaW5nIG9yIG1hcClcclxuICBjb25zdCBtb2RlQ29uZmlnID0gdHlwZW9mIHRoaXMuZGlzcGxheU1vZGUgPT09ICdzdHJpbmcnXHJcbiAgICA/IHRoaXMuZGlzcGxheU1vZGVcclxuICAgIDogdGhpcy5kaXNwbGF5TW9kZVttb2RlXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgc3dpdGNoIChtb2RlQ29uZmlnKSB7XHJcbiAgICBjYXNlICdkcmF3ZXInOlxyXG4gICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuXHJcbiAgICBjYXNlICdkaWFsb2cnOlxyXG4gICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuXHJcbiAgICBjYXNlICdyb3V0ZSc6XHJcbiAgICAgIHtcclxuICAgICAgICBjb25zdCBpZCA9IGl0ZW0gPyAoaXRlbSBhcyBhbnkpW3RoaXMuaWRGaWVsZF0gOiAnbmV3JztcclxuICAgICAgaWYobW9kZSA9PT0gJ2FkZCcpe1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFttb2RlXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2lkLCBtb2RlXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcblxyXG52aXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgY29uc3QgbW9kZUNvbmZpZyA9IHR5cGVvZiB0aGlzLmRpc3BsYXlNb2RlID09PSAnc3RyaW5nJ1xyXG4gICAgPyB0aGlzLmRpc3BsYXlNb2RlXHJcbiAgICA6IHRoaXMuZGlzcGxheU1vZGVbdGhpcy5tb2RlIGFzICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgaWYgKG1vZGVDb25maWcgPT09ICdkaWFsb2cnKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB2YWx1ZTtcclxuICB9IGVsc2UgaWYgKG1vZGVDb25maWcgPT09ICdkcmF3ZXInKSB7XHJcbiAgICB0aGlzLmRyYXdlclZpc2libGUgPSB2YWx1ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gcm91dGUgbW9kZSBkb2VzIG5vdCB1c2UgZHJhd2VyL2RpYWxvZ1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIG9uVGFibGVBY3Rpb24oZXZlbnQ6IHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfCBudWxsIH0pOiB2b2lkIHtcclxuLy8gICAgIHN3aXRjaCAoZXZlbnQubmFtZSkge1xyXG4vLyAgICAgICBjYXNlICdhZGQnOiAgICB0aGlzLm9wZW5EcmF3ZXIobnVsbCxldmVudC5uYW1lKTsgICAgICAgICAgICAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ3ZpZXcnOiAgIHRoaXMub3BlbkRyYXdlcihldmVudC5yb3chLGV2ZW50Lm5hbWUpOyAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ2VkaXQnOiAgIHRoaXMub3BlbkRyYXdlcihldmVudC5yb3chLGV2ZW50Lm5hbWUpOyAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ2RlbGV0ZSc6IHRoaXMub25EZWxldGUoZXZlbnQucm93ISk7YnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ3N0YXRlJzogdGhpcy5vcGVuRGVhY3RpdmF0aW9uUmVhc29uKGV2ZW50LnJvdyEpO2JyZWFrO1xyXG4vLyAgICAgfVxyXG4vLyB9XHJcblxyXG5vblRhYmxlQWN0aW9uKGV2ZW50OiB7IG5hbWU6IHN0cmluZzsgcm93OiBUIHwgbnVsbCB9KTogdm9pZCB7XHJcbiAgc3dpdGNoIChldmVudC5uYW1lKSB7XHJcbiAgICBjYXNlICdhZGQnOlxyXG4gICAgY2FzZSAnZWRpdCc6XHJcbiAgICBjYXNlICd2aWV3JzpcclxuICAgICAgdGhpcy5vcGVuRWRpdG9yKGV2ZW50LnJvdywgZXZlbnQubmFtZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZGVsZXRlJzpcclxuICAgICAgdGhpcy5vbkRlbGV0ZShldmVudC5yb3chKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdzdGF0ZSc6XHJcbiAgICAgIHRoaXMub3BlbkRlYWN0aXZhdGlvblJlYXNvbihldmVudC5yb3chKTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG59XHJcblxyXG5cclxucHJvdGVjdGVkIG9wZW5EcmF3ZXIoaXRlbTogVCB8IG51bGwsbW9kZTpzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAgIHRoaXMubW9kZSA9IG1vZGU7XHJcblxyXG4gICAgICAvLyB0aGlzLmRyYXdlclZpc2libGUgPSAhdGhpcy5kcmF3ZXJWaXNpYmxlO1xyXG5cclxuXHJcbiAgICAgIGlmIChpdGVtID09IG51bGwpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLmRlZmF1bHRNb2RlbCB8fCB7fTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG1vZGUgPT0gJ2VkaXQnKXtcclxuICAgICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IGZhbHNlIDtcclxuICAgICAgICAvLyB0aGlzLmlzRWRpdE1vZGUgPSBpdGVtICE9bnVsbCA7XHJcbiAgICAgIH1cclxuICAgICAgaWYobW9kZSA9PSAnYWRkJyl7XHJcbiAgICAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2UgO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlIDtcclxuICAgICAgfVxyXG4gICAgICBpZihtb2RlID09ICd2aWV3Jyl7XHJcbiAgICAgICAgLy8gdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmlzVmlld01vZGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBmYWxzZSA7XHJcbiAgICAgIH1cclxufVxyXG5cclxuXHJcbm9wZW5EZWFjdGl2YXRpb25SZWFzb24obW9kZWw6IGFueSkge1xyXG5cclxuICB0aGlzLnNlbGVjdGVkSXRlbSA9IG1vZGVsO1xyXG4gIGlmKHRoaXMuc2VsZWN0ZWRJdGVtLmlzQWN0aXZlID09IHRydWUpe1xyXG5cclxuXHJcbiAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oRGVhY3RpdmF0aW9uUmVhc29uRm9ybUNvbXBvbmVudCwge1xyXG4gICAgaGVhZGVyOiAn2KfZhNiz2KjYqCAo2YHZiiDYrdin2YQg2KrZhSDYpdmK2YLYp9mB2YcpJyxcclxuICAgIHdpZHRoOiAnMzB2dycsXHJcbiAgICBkYXRhOiB7IG1vZGVsOiB7IC4uLm1vZGVsIH0sXHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1GaWVsZHMsXHJcbiAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxyXG4gICAgICAgIGlkRmllbGQ6IHRoaXMuaWRGaWVsZCB9LFxyXG4gIH0pO1xyXG5cclxuICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5kZWFjdGl2YXRpb25SZWFzb24gPSByZXN1bHQuZGVhY3RpdmF0aW9uUmVhc29uO1xyXG4gICAgICAvLyBPcHRpb25hbGx5OiBzYXZlIG1vZGVsIHZpYSBBUElcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5lbHNle1xyXG4gICB0aGlzLnNlbGVjdGVkSXRlbS5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgIHRoaXMuc2VsZWN0ZWRJdGVtLmRlYWN0aXZhdGlvblJlYXNvbiA9IFwiXCI7XHJcbiAgICBjb25zdCBpZCA9ICAodGhpcy5zZWxlY3RlZEl0ZW0gYXMgYW55KVt0aGlzLmlkRmllbGRdIDtcclxuICAgIHRoaXMuc2VydmljZS51cGRhdGUoaWQsIHRoaXMuc2VsZWN0ZWRJdGVtKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgIG5leHQ6ICgpID0+IHtjb25zb2xlLmxvZygnJyl9LFxyXG4gICAgICAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbn1cclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIG9uRGVsZXRlKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gIC8vICAgaWYgKCFjb25maXJtKCfZh9mEINiq2LHZitivINin2YTYrdiw2YEg2YHYudmE2KfZi9ifJykpIHJldHVybjtcclxuICAvLyAgIGNvbnN0IGlkID0gKGl0ZW0gYXMgYW55KVt0aGlzLmlkRmllbGRdO1xyXG4gIC8vICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZShpZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5sb2FkUGFnZSgwLCB0aGlzLnJvd3MpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcbm9uRGVsZXRlKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gIGNvbnN0IGlkID0gaXRlbVt0aGlzLmlkRmllbGRdO1xyXG5cclxuICB0aGlzLnN3YWxTZXJ2aWNlLmNvbmZpcm0oXHJcbiAgICAn2KrYo9mD2YrYryDYp9mE2K3YsNmBJyxcclxuICAgICfZh9mEINiq2LHZitivINit2LDZgSDZh9iw2Kcg2KfZhNiz2KzZhCDZgdi52YTYp9mL2J8nLFxyXG4gICAgJ9mG2LnZhdiMINin2K3YsNmBJyxcclxuICAgICfYpdmE2LrYp9ihJ1xyXG4gICkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkUGFnZSgwLCB0aGlzLnJvd3MpO1xyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5zdWNjZXNzKCfYqtmFINin2YTYrdiw2YEg2KjZhtis2KfYrScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgY29uc3QgbXNnID1cclxuICAgICAgICAgICAgZXJyLmVycm9yPy50aXRsZSB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAn2K3Yr9irINiu2LfYoyDYo9ir2YbYp9ihINin2YTYrdmB2LguINmK2LHYrNmJINin2YTZhdit2KfZiNmE2Kkg2YXYsdipINij2K7YsdmJLic7XHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5lcnJvck1lc3NhZ2UgPSBtc2c7XHJcblxyXG4gICAgICAgICAgLy8g4p2MINix2LPYp9mE2Kkg2K7Yt9ijXHJcbiAgICAgICAgICB0aGlzLnN3YWxTZXJ2aWNlLmVycm9yKCfZgdi02YQg2KfZhNit2LDZgScsIG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuXHJcblxyXG5nZXQgY29sdW1ucygpOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICAgIGNvbnN0IGZsYXR0ZW5GaWVsZHMgPSAoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogRm9ybWx5RmllbGRDb25maWdbXSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWVsZHMuZmxhdE1hcChmaWVsZCA9PiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgZm9yIG5lc3RlZCBncm91cC9wYW5lbFxyXG4gICAgICAgIGlmIChmaWVsZC5maWVsZEdyb3VwPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBmbGF0dGVuRmllbGRzKGZpZWxkLmZpZWxkR3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2tpcCBmaWVsZHMgd2l0aCBubyBwcm9wcyBvciB0YWJsZS5oaWRkZW4gPT09IHRydWVcclxuICAgICAgICBpZiAoIWZpZWxkLnByb3BzIHx8IGZpZWxkLnByb3BzWyd0YWJsZSddPy5oaWRkZW4gPT09IHRydWUpIHtcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERldGVybWluZSB0aGUgY29sdW1uIHR5cGU6IHRhYmxlLnR5cGUgPiBmaWVsZC50eXBlID4gJ2xhYmVsLXR5cGUnXHJcbiAgICAgICAgLy8gY29uc3QgdGFibGVUeXBlID0gZmllbGQucHJvcHNbJ3RhYmxlJ10/LnR5cGUgfHwgZmllbGQudHlwZSB8fCAnbGFiZWwtdHlwZSc7XHJcbiAgICAgICAgY29uc3QgdGFibGVUeXBlID0gZmllbGQucHJvcHNbJ3RhYmxlJ10/LnR5cGUgfHwgICdsYWJlbC10eXBlJztcclxuXHJcbiAgICAgICAgLy9cclxuXHJcbiAgICAgICAgcmV0dXJuIFt7XHJcbiAgICAgICAgICB0eXBlOiB0YWJsZVR5cGUsXHJcbiAgICAgICAgICBrZXk6IGZpZWxkWydrZXknXSwgLy8gYWx3YXlzIHNldCBrZXkgZm9yIHRhYmxlIHJlbmRlcmluZ1xyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgLi4uZmllbGQucHJvcHMsICAgICAgICAgIC8vIGJhc2UgcHJvcHNcclxuICAgICAgICAgICAgLi4uZmllbGQucHJvcHNbJ3RhYmxlJ10/LnByb3BzIC8vIHRhYmxlLXNwZWNpZmljIG92ZXJyaWRlc1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGV4cHJlc3Npb25zOiBmaWVsZC5wcm9wc1sndGFibGUnXT8uZXhwcmVzc2lvbnNcclxuICAgICAgICB9XTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBmbGF0dGVuRmllbGRzKHRoaXMuZm9ybUZpZWxkcyk7XHJcbn1cclxuXHJcblxyXG5nZXQgZmlsdGVycygpOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICAgIGNvbnN0IGZsYXR0ZW5Gb3JGaWx0ZXIgPSAoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogRm9ybWx5RmllbGRDb25maWdbXSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWVsZHMuZmxhdE1hcChmaWVsZCA9PiB7XHJcbiAgICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXA/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZCBwYW5lbHMvZ3JvdXBzXHJcbiAgICAgICAgICByZXR1cm4gZmxhdHRlbkZvckZpbHRlcihmaWVsZC5maWVsZEdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNraXAgZmllbGRzIHdpdGggbm8gcHJvcHMgb3IgZmlsdGVyLmhpZGRlbiA9PT0gdHJ1ZVxyXG4gICAgICAgIGlmICghZmllbGQucHJvcHMgfHwgZmllbGQucHJvcHNbJ2ZpbHRlciddPy5oaWRkZW4gPT09IHRydWUpIHtcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBbZmllbGRdO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGZsYXR0ZW5Gb3JGaWx0ZXIodGhpcy5mb3JtRmllbGRzKTtcclxufVxyXG5cclxufVxyXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYmFzZS1jcnVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { NgModule, Input, Component } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i2 from '@angular/router';
|
|
6
|
+
import { RouterModule } from '@angular/router';
|
|
7
|
+
|
|
8
|
+
class BreadcrumbModule {
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: BreadcrumbModule, imports: [CommonModule] });
|
|
11
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BreadcrumbModule, imports: [CommonModule] });
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BreadcrumbModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
imports: [CommonModule],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
|
|
20
|
+
class BreadcrumbComponent {
|
|
21
|
+
breadcrumb = [];
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.8", type: BreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", inputs: { breadcrumb: "breadcrumb" }, ngImport: i0, template: `
|
|
24
|
+
<nav class="overflow-x-auto">
|
|
25
|
+
<ul class="flex items-center text-white text-sm font-medium" role="list">
|
|
26
|
+
<li class="relative z-10">
|
|
27
|
+
<a
|
|
28
|
+
[routerLink]="['/']"
|
|
29
|
+
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"
|
|
30
|
+
style="clip-path: polygon(12px 0, 100% 0, 100% 100%, 12px 100%, 0% 50%)"
|
|
31
|
+
>
|
|
32
|
+
<i class="pi pi-home mr-2 rtl:ml-2 rtl:mr-0 text-base"></i>
|
|
33
|
+
</a>
|
|
34
|
+
</li>
|
|
35
|
+
<li
|
|
36
|
+
*ngFor="let item of breadcrumb; let i = index; let first = first; let last = last"
|
|
37
|
+
class="relative z-10"
|
|
38
|
+
>
|
|
39
|
+
|
|
40
|
+
<ng-container *ngIf="item.routerLink && !last; else textOnly">
|
|
41
|
+
<a
|
|
42
|
+
[routerLink]="item.routerLink"
|
|
43
|
+
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"
|
|
44
|
+
[ngClass]="{
|
|
45
|
+
'bg-primary-500': i % 2 === 0,
|
|
46
|
+
'bg-primary-600': i % 2 === 1,
|
|
47
|
+
'rounded-l-md pl-5': first,
|
|
48
|
+
'rounded-r-md pr-5': last
|
|
49
|
+
}"
|
|
50
|
+
style="clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)"
|
|
51
|
+
>
|
|
52
|
+
<i *ngIf="item.icon" [class]="item.icon + ' mr-2 text-base'"></i>
|
|
53
|
+
{{ item.label }}
|
|
54
|
+
</a>
|
|
55
|
+
</ng-container>
|
|
56
|
+
<ng-template #textOnly>
|
|
57
|
+
<span
|
|
58
|
+
class="flex items-center h-10 px-4 pr-6 text-white"
|
|
59
|
+
[ngClass]="{
|
|
60
|
+
'bg-primary-500': i % 2 === 0,
|
|
61
|
+
'bg-primary-600': i % 2 === 1,
|
|
62
|
+
'rounded-l-md pl-5': first,
|
|
63
|
+
'rounded-r-md pr-5': last
|
|
64
|
+
}"
|
|
65
|
+
style="clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)"
|
|
66
|
+
>
|
|
67
|
+
<i *ngIf="item.icon" [class]="item.icon + ' mr-2 text-base'"></i>
|
|
68
|
+
{{ item.label }}
|
|
69
|
+
</span>
|
|
70
|
+
</ng-template>
|
|
71
|
+
</li>
|
|
72
|
+
</ul>
|
|
73
|
+
</nav>
|
|
74
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{
|
|
79
|
+
selector: 'app-breadcrumb',
|
|
80
|
+
standalone: true,
|
|
81
|
+
imports: [CommonModule, RouterModule], // <--- أضف RouterModule هنا
|
|
82
|
+
template: `
|
|
83
|
+
<nav class="overflow-x-auto">
|
|
84
|
+
<ul class="flex items-center text-white text-sm font-medium" role="list">
|
|
85
|
+
<li class="relative z-10">
|
|
86
|
+
<a
|
|
87
|
+
[routerLink]="['/']"
|
|
88
|
+
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"
|
|
89
|
+
style="clip-path: polygon(12px 0, 100% 0, 100% 100%, 12px 100%, 0% 50%)"
|
|
90
|
+
>
|
|
91
|
+
<i class="pi pi-home mr-2 rtl:ml-2 rtl:mr-0 text-base"></i>
|
|
92
|
+
</a>
|
|
93
|
+
</li>
|
|
94
|
+
<li
|
|
95
|
+
*ngFor="let item of breadcrumb; let i = index; let first = first; let last = last"
|
|
96
|
+
class="relative z-10"
|
|
97
|
+
>
|
|
98
|
+
|
|
99
|
+
<ng-container *ngIf="item.routerLink && !last; else textOnly">
|
|
100
|
+
<a
|
|
101
|
+
[routerLink]="item.routerLink"
|
|
102
|
+
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"
|
|
103
|
+
[ngClass]="{
|
|
104
|
+
'bg-primary-500': i % 2 === 0,
|
|
105
|
+
'bg-primary-600': i % 2 === 1,
|
|
106
|
+
'rounded-l-md pl-5': first,
|
|
107
|
+
'rounded-r-md pr-5': last
|
|
108
|
+
}"
|
|
109
|
+
style="clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)"
|
|
110
|
+
>
|
|
111
|
+
<i *ngIf="item.icon" [class]="item.icon + ' mr-2 text-base'"></i>
|
|
112
|
+
{{ item.label }}
|
|
113
|
+
</a>
|
|
114
|
+
</ng-container>
|
|
115
|
+
<ng-template #textOnly>
|
|
116
|
+
<span
|
|
117
|
+
class="flex items-center h-10 px-4 pr-6 text-white"
|
|
118
|
+
[ngClass]="{
|
|
119
|
+
'bg-primary-500': i % 2 === 0,
|
|
120
|
+
'bg-primary-600': i % 2 === 1,
|
|
121
|
+
'rounded-l-md pl-5': first,
|
|
122
|
+
'rounded-r-md pr-5': last
|
|
123
|
+
}"
|
|
124
|
+
style="clip-path: polygon(100% 0, 12px 0, 0 50%, 12px 100%, 100% 100%, calc(100% - 12px) 50%)"
|
|
125
|
+
>
|
|
126
|
+
<i *ngIf="item.icon" [class]="item.icon + ' mr-2 text-base'"></i>
|
|
127
|
+
{{ item.label }}
|
|
128
|
+
</span>
|
|
129
|
+
</ng-template>
|
|
130
|
+
</li>
|
|
131
|
+
</ul>
|
|
132
|
+
</nav>
|
|
133
|
+
`,
|
|
134
|
+
}]
|
|
135
|
+
}], propDecorators: { breadcrumb: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}] } });
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Generated bundle index. Do not edit.
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
export { BreadcrumbComponent, BreadcrumbModule };
|
|
144
|
+
//# sourceMappingURL=elite.framework-ng.ui.core-breadcrumb.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-breadcrumb.mjs","sources":["../tmp-esm2022/breadcrumb/lib/breadcrumb-module.js","../tmp-esm2022/breadcrumb/lib/breadcrumb.js","../tmp-esm2022/breadcrumb/elite.framework-ng.ui.core-breadcrumb.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class BreadcrumbModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: BreadcrumbModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BreadcrumbModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BreadcrumbModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvYnJlYWRjcnVtYi9zcmMvbGliL2JyZWFkY3J1bWItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sZ0JBQWdCO3VHQUFoQixnQkFBZ0I7d0dBQWhCLGdCQUFnQixZQUZqQixZQUFZO3dHQUVYLGdCQUFnQixZQUZqQixZQUFZOzsyRkFFWCxnQkFBZ0I7a0JBSDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYk1vZHVsZSB7fVxuIl19","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router'; // <--- أضف هذا الاستيراد\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/router\";\nexport class BreadcrumbComponent {\n breadcrumb = [];\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: BreadcrumbComponent, isStandalone: true, selector: \"app-breadcrumb\", inputs: { breadcrumb: \"breadcrumb\" }, ngImport: i0, 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 `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i2.RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BreadcrumbComponent, decorators: [{\n type: Component,\n args: [{\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 }]\n }], propDecorators: { breadcrumb: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9icmVhZGNydW1iL3NyYy9saWIvYnJlYWRjcnVtYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDLENBQUMseUJBQXlCOzs7O0FBMkR6RSxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFVBQVUsR0FBcUIsRUFBRSxDQUFDO3VHQURoQyxtQkFBbUI7MkZBQW5CLG1CQUFtQixnSEFyRHBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsMkRBcERTLFlBQVksNlZBQUUsWUFBWTs7MkZBc0R6QixtQkFBbUI7a0JBekQvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQUUsNEJBQTRCO29CQUNuRSxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVDtpQkFDRjs4QkFFVSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJzsgLy8gPC0tLSDYo9i22YEg2YfYsNinINin2YTYp9iz2KrZitix2KfYr1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYnJlYWRjcnVtYicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZV0sIC8vIDwtLS0g2KPYttmBIFJvdXRlck1vZHVsZSDZh9mG2KdcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmF2IGNsYXNzPVwib3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICA8dWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXdoaXRlIHRleHQtc20gZm9udC1tZWRpdW1cIiByb2xlPVwibGlzdFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLyddXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaC0xMCBweC00IHByLTYgdGV4dC13aGl0ZSBiZy1wcmltYXJ5LTUwMCBob3ZlcjpiZy10ZWFsLTUwMCBhY3RpdmU6YmctdGVhbC02MDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwIHJvdW5kZWQtci1tZFwiXG4gICAgICAgICAgICBzdHlsZT1cImNsaXAtcGF0aDogcG9seWdvbigxMnB4IDAsIDEwMCUgMCwgMTAwJSAxMDAlLCAxMnB4IDEwMCUsIDAlIDUwJSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaG9tZSBtci0yIHJ0bDptbC0yIHJ0bDptci0wIHRleHQtYmFzZVwiPjwvaT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJyZWFkY3J1bWI7IGxldCBpID0gaW5kZXg7IGxldCBmaXJzdCA9IGZpcnN0OyBsZXQgbGFzdCA9IGxhc3RcIlxuICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgei0xMFwiXG4gICAgICAgID5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmsgJiYgIWxhc3Q7IGVsc2UgdGV4dE9ubHlcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaC0xMCBweC00IHByLTYgdGV4dC13aGl0ZSBiZy1wcmltYXJ5LTUwMCBob3ZlcjpiZy10ZWFsLTUwMCBhY3RpdmU6YmctdGVhbC02MDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdiZy1wcmltYXJ5LTUwMCc6IGkgJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICdiZy1wcmltYXJ5LTYwMCc6IGkgJSAyID09PSAxLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWwtbWQgcGwtNSc6IGZpcnN0LFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXItbWQgcHItNSc6IGxhc3RcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIHN0eWxlPVwiY2xpcC1wYXRoOiBwb2x5Z29uKDEwMCUgMCwgMTJweCAwLCAwIDUwJSwgMTJweCAxMDAlLCAxMDAlIDEwMCUsIGNhbGMoMTAwJSAtIDEycHgpIDUwJSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIFtjbGFzc109XCJpdGVtLmljb24gKyAnIG1yLTIgdGV4dC1iYXNlJ1wiPjwvaT5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGV4dE9ubHk+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGgtMTAgcHgtNCBwci02IHRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2JnLXByaW1hcnktNTAwJzogaSAlIDIgPT09IDAsXG4gICAgICAgICAgICAgICAgJ2JnLXByaW1hcnktNjAwJzogaSAlIDIgPT09IDEsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtbC1tZCBwbC01JzogZmlyc3QsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtci1tZCBwci01JzogbGFzdFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJjbGlwLXBhdGg6IHBvbHlnb24oMTAwJSAwLCAxMnB4IDAsIDAgNTAlLCAxMnB4IDEwMCUsIDEwMCUgMTAwJSwgY2FsYygxMDAlIC0gMTJweCkgNTAlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiaXRlbS5pY29uXCIgW2NsYXNzXT1cIml0ZW0uaWNvbiArICcgbXItMiB0ZXh0LWJhc2UnXCI+PC9pPlxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb21wb25lbnQge1xuICBASW5wdXQoKSBicmVhZGNydW1iOiBNZW51SXRlbVtdIHwgYW55ID0gW107XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9icmVhZGNydW1iL3NyYy9lbGl0ZS5mcmFtZXdvcmstbmcudWkuY29yZS1icmVhZGNydW1iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|