@ferhaps/easy-ui-lib 20.0.4 → 21.0.3
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
CHANGED
|
@@ -50,7 +50,7 @@ A feature-rich table component supporting:
|
|
|
50
50
|
export type SortState = 'none' | 'asc' | 'desc';
|
|
51
51
|
|
|
52
52
|
export type TableEvent<T = any> = {
|
|
53
|
-
action: 'rowClick' | 'rowSelect' | 'drag' | 'scrolled' | 'sort' | 'add' | string;
|
|
53
|
+
action: 'rowClick' | 'rowSelect' | 'drag' | 'scroll' | 'scrolled' | 'sort' | 'add' | string;
|
|
54
54
|
obj?: T;
|
|
55
55
|
prop?: keyof T;
|
|
56
56
|
index?: number;
|
|
@@ -32,10 +32,10 @@ class SnakeCaseParserPipe {
|
|
|
32
32
|
}
|
|
33
33
|
return String(value);
|
|
34
34
|
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
36
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SnakeCaseParserPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
36
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.2", ngImport: i0, type: SnakeCaseParserPipe, isStandalone: true, name: "snakeCaseParser" }); }
|
|
37
37
|
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SnakeCaseParserPipe, decorators: [{
|
|
39
39
|
type: Pipe,
|
|
40
40
|
args: [{
|
|
41
41
|
name: 'snakeCaseParser',
|
|
@@ -44,7 +44,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
44
44
|
|
|
45
45
|
class FieldsMatchValidatorDirective {
|
|
46
46
|
constructor() {
|
|
47
|
-
this.fieldToMatch = input.required(...(ngDevMode ?
|
|
47
|
+
this.fieldToMatch = input.required({ ...(ngDevMode ? { debugName: "fieldToMatch" } : {}) });
|
|
48
48
|
}
|
|
49
49
|
validate(control) {
|
|
50
50
|
const value = control.value;
|
|
@@ -60,8 +60,8 @@ class FieldsMatchValidatorDirective {
|
|
|
60
60
|
}
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
63
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
64
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: FieldsMatchValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
64
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.2", type: FieldsMatchValidatorDirective, isStandalone: true, selector: "[libFieldsMatchValidator]", inputs: { fieldToMatch: { classPropertyName: "fieldToMatch", publicName: "fieldToMatch", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
65
65
|
{
|
|
66
66
|
provide: NG_VALIDATORS,
|
|
67
67
|
useExisting: FieldsMatchValidatorDirective,
|
|
@@ -69,7 +69,7 @@ class FieldsMatchValidatorDirective {
|
|
|
69
69
|
},
|
|
70
70
|
], ngImport: i0 }); }
|
|
71
71
|
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: FieldsMatchValidatorDirective, decorators: [{
|
|
73
73
|
type: Directive,
|
|
74
74
|
args: [{
|
|
75
75
|
selector: '[libFieldsMatchValidator]',
|
|
@@ -81,7 +81,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
81
81
|
},
|
|
82
82
|
],
|
|
83
83
|
}]
|
|
84
|
-
}] });
|
|
84
|
+
}], propDecorators: { fieldToMatch: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldToMatch", required: true }] }] } });
|
|
85
85
|
|
|
86
86
|
class PhoneValidationDirective {
|
|
87
87
|
onInput(event) {
|
|
@@ -101,10 +101,10 @@ class PhoneValidationDirective {
|
|
|
101
101
|
event.preventDefault();
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
105
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: PhoneValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
105
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.2", type: PhoneValidationDirective, isStandalone: true, selector: "[libPhoneValidation]", host: { listeners: { "input": "onInput($event)", "keydown": "onKeyDown($event)" } }, ngImport: i0 }); }
|
|
106
106
|
}
|
|
107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: PhoneValidationDirective, decorators: [{
|
|
108
108
|
type: Directive,
|
|
109
109
|
args: [{
|
|
110
110
|
selector: '[libPhoneValidation]',
|
|
@@ -127,8 +127,8 @@ class PasswordValidatorDirective {
|
|
|
127
127
|
}
|
|
128
128
|
return null;
|
|
129
129
|
}
|
|
130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
131
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: PasswordValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
131
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.2", type: PasswordValidatorDirective, isStandalone: true, selector: "[libPasswordValidator]", providers: [
|
|
132
132
|
{
|
|
133
133
|
provide: NG_VALIDATORS,
|
|
134
134
|
useExisting: PasswordValidatorDirective,
|
|
@@ -136,7 +136,7 @@ class PasswordValidatorDirective {
|
|
|
136
136
|
}
|
|
137
137
|
], ngImport: i0 }); }
|
|
138
138
|
}
|
|
139
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: PasswordValidatorDirective, decorators: [{
|
|
140
140
|
type: Directive,
|
|
141
141
|
args: [{
|
|
142
142
|
selector: '[libPasswordValidator]',
|
|
@@ -152,15 +152,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
152
152
|
|
|
153
153
|
class DefaultDialogComponent {
|
|
154
154
|
constructor() {
|
|
155
|
-
this.height = input(...(ngDevMode ?
|
|
156
|
-
this.dialogTitle = input(...(ngDevMode ?
|
|
157
|
-
this.withBack = input(...(ngDevMode ?
|
|
155
|
+
this.height = input(undefined, { ...(ngDevMode ? { debugName: "height" } : {}) });
|
|
156
|
+
this.dialogTitle = input(undefined, { ...(ngDevMode ? { debugName: "dialogTitle" } : {}) });
|
|
157
|
+
this.withBack = input(undefined, { ...(ngDevMode ? { debugName: "withBack" } : {}) });
|
|
158
158
|
this.back = output();
|
|
159
159
|
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: DefaultDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: DefaultDialogComponent, isStandalone: true, selector: "lib-default-dialog", inputs: { temRef: { classPropertyName: "temRef", publicName: "temRef", isSignal: false, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, dialogTitle: { classPropertyName: "dialogTitle", publicName: "dialogTitle", isSignal: true, isRequired: false, transformFunction: null }, withBack: { classPropertyName: "withBack", publicName: "withBack", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { back: "back" }, ngImport: i0, template: "<div class=\"modal\" [style]=\"{ 'height': height() }\">\r\n <div class=\"dialog-title\">\r\n @if (withBack()) {\r\n <div class=\"back-arrow\" (click)=\"back.emit()\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n }\r\n\r\n <h4 class=\"title\">{{ dialogTitle() }}</h4>\r\n\r\n <div class=\"closer\" mat-dialog-close>\r\n <mat-icon>close</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <ng-content select=\".dialog-content\" />\r\n <ng-template #tempBody />\r\n <ng-container *ngTemplateOutlet=\"temRef ? temRef: tempBody\" />\r\n </div>\r\n</div>", styles: [".modal{display:flex;flex-direction:column}.dialog-title{padding-inline:2rem;padding-top:1rem;margin-bottom:1rem;position:relative;display:flex;font-size:20px;justify-content:center}.dialog-title .back-arrow{cursor:pointer;position:absolute;left:1rem}.dialog-title .title{font-weight:700;font-size:24px;margin:0!important}.dialog-title .closer{right:3%;position:absolute;cursor:pointer}.dialog-content{flex:1;min-height:0;overflow:hidden;padding-bottom:1rem;display:flex;flex-direction:column;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] }); }
|
|
162
162
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: DefaultDialogComponent, decorators: [{
|
|
164
164
|
type: Component,
|
|
165
165
|
args: [{ selector: 'lib-default-dialog', imports: [
|
|
166
166
|
CommonModule,
|
|
@@ -169,11 +169,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
169
169
|
], template: "<div class=\"modal\" [style]=\"{ 'height': height() }\">\r\n <div class=\"dialog-title\">\r\n @if (withBack()) {\r\n <div class=\"back-arrow\" (click)=\"back.emit()\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n }\r\n\r\n <h4 class=\"title\">{{ dialogTitle() }}</h4>\r\n\r\n <div class=\"closer\" mat-dialog-close>\r\n <mat-icon>close</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <ng-content select=\".dialog-content\" />\r\n <ng-template #tempBody />\r\n <ng-container *ngTemplateOutlet=\"temRef ? temRef: tempBody\" />\r\n </div>\r\n</div>", styles: [".modal{display:flex;flex-direction:column}.dialog-title{padding-inline:2rem;padding-top:1rem;margin-bottom:1rem;position:relative;display:flex;font-size:20px;justify-content:center}.dialog-title .back-arrow{cursor:pointer;position:absolute;left:1rem}.dialog-title .title{font-weight:700;font-size:24px;margin:0!important}.dialog-title .closer{right:3%;position:absolute;cursor:pointer}.dialog-content{flex:1;min-height:0;overflow:hidden;padding-bottom:1rem;display:flex;flex-direction:column;align-items:center}\n"] }]
|
|
170
170
|
}], propDecorators: { temRef: [{
|
|
171
171
|
type: Input
|
|
172
|
-
}] } });
|
|
172
|
+
}], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], dialogTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "dialogTitle", required: false }] }], withBack: [{ type: i0.Input, args: [{ isSignal: true, alias: "withBack", required: false }] }], back: [{ type: i0.Output, args: ["back"] }] } });
|
|
173
173
|
|
|
174
174
|
class ErrorDispalyComponent {
|
|
175
175
|
constructor() {
|
|
176
|
-
this.error = input.required(...(ngDevMode ?
|
|
176
|
+
this.error = input.required({ ...(ngDevMode ? { debugName: "error" } : {}) });
|
|
177
177
|
this.displayError = '';
|
|
178
178
|
}
|
|
179
179
|
ngOnInit() {
|
|
@@ -195,19 +195,19 @@ class ErrorDispalyComponent {
|
|
|
195
195
|
this.displayError = 'Unknown error';
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
199
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
198
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorDispalyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: ErrorDispalyComponent, isStandalone: true, selector: "lib-error-dispaly", inputs: { error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `<strong class="err-container">{{ displayError | snakeCaseParser }}</strong>`, isInline: true, styles: [".err-container{display:block;max-width:300px;font-size:20px;text-align:center;border:1px solid red;border-radius:5px;padding:.5rem 1.5rem;background-color:#ffe6e6;color:red;overflow-wrap:break-word}\n"], dependencies: [{ kind: "pipe", type: SnakeCaseParserPipe, name: "snakeCaseParser" }] }); }
|
|
200
200
|
}
|
|
201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorDispalyComponent, decorators: [{
|
|
202
202
|
type: Component,
|
|
203
203
|
args: [{ selector: 'lib-error-dispaly', imports: [
|
|
204
204
|
SnakeCaseParserPipe
|
|
205
205
|
], template: `<strong class="err-container">{{ displayError | snakeCaseParser }}</strong>`, styles: [".err-container{display:block;max-width:300px;font-size:20px;text-align:center;border:1px solid red;border-radius:5px;padding:.5rem 1.5rem;background-color:#ffe6e6;color:red;overflow-wrap:break-word}\n"] }]
|
|
206
|
-
}] });
|
|
206
|
+
}], propDecorators: { error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: true }] }] } });
|
|
207
207
|
|
|
208
208
|
class SearchBarComponent {
|
|
209
209
|
constructor() {
|
|
210
|
-
this.for = input.required(...(ngDevMode ?
|
|
210
|
+
this.for = input.required({ ...(ngDevMode ? { debugName: "for" } : {}) });
|
|
211
211
|
this.search = output();
|
|
212
212
|
this.searchForm = new FormGroup({
|
|
213
213
|
search: new FormControl('')
|
|
@@ -220,16 +220,16 @@ class SearchBarComponent {
|
|
|
220
220
|
this.search.emit(searchTerm);
|
|
221
221
|
});
|
|
222
222
|
}
|
|
223
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
224
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
223
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SearchBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
224
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: SearchBarComponent, isStandalone: true, selector: "lib-search-bar", inputs: { for: { classPropertyName: "for", publicName: "for", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { search: "search" }, ngImport: i0, template: `
|
|
225
225
|
<form class="search-bar" [formGroup]="searchForm">
|
|
226
226
|
<mat-icon>search</mat-icon>
|
|
227
227
|
<input class="search-input" type="search" name="field"
|
|
228
228
|
[placeholder]="'Search ' + for()" autocomplete="off" formControlName="search" />
|
|
229
229
|
</form>
|
|
230
|
-
`, isInline: true, styles: [".search-bar{width:270px;border:1px solid #A4A4A4;display:flex;align-items:center}.search-input{border:none;padding:7px 11px;height:100%;width:100%;background-color:transparent}mat-icon{margin-inline:8px}.search-input:focus{border:none;outline:none}@media
|
|
230
|
+
`, isInline: true, styles: [".search-bar{width:270px;border:1px solid #A4A4A4;display:flex;align-items:center}.search-input{border:none;padding:7px 11px;height:100%;width:100%;background-color:transparent}mat-icon{margin-inline:8px}.search-input:focus{border:none;outline:none}@media(max-width:1086px){.search-bar{width:170px}}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
231
231
|
}
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SearchBarComponent, decorators: [{
|
|
233
233
|
type: Component,
|
|
234
234
|
args: [{ selector: 'lib-search-bar', template: `
|
|
235
235
|
<form class="search-bar" [formGroup]="searchForm">
|
|
@@ -240,12 +240,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
240
240
|
`, imports: [
|
|
241
241
|
MatIconModule,
|
|
242
242
|
ReactiveFormsModule
|
|
243
|
-
], styles: [".search-bar{width:270px;border:1px solid #A4A4A4;display:flex;align-items:center}.search-input{border:none;padding:7px 11px;height:100%;width:100%;background-color:transparent}mat-icon{margin-inline:8px}.search-input:focus{border:none;outline:none}@media
|
|
244
|
-
}], ctorParameters: () => [] });
|
|
243
|
+
], styles: [".search-bar{width:270px;border:1px solid #A4A4A4;display:flex;align-items:center}.search-input{border:none;padding:7px 11px;height:100%;width:100%;background-color:transparent}mat-icon{margin-inline:8px}.search-input:focus{border:none;outline:none}@media(max-width:1086px){.search-bar{width:170px}}\n"] }]
|
|
244
|
+
}], ctorParameters: () => [], propDecorators: { for: [{ type: i0.Input, args: [{ isSignal: true, alias: "for", required: true }] }], search: [{ type: i0.Output, args: ["search"] }] } });
|
|
245
245
|
|
|
246
246
|
class TableSortHeaderComponent {
|
|
247
247
|
constructor() {
|
|
248
|
-
this.selected = input.required(...(ngDevMode ?
|
|
248
|
+
this.selected = input.required({ ...(ngDevMode ? { debugName: "selected" } : {}) });
|
|
249
249
|
this.sort = output();
|
|
250
250
|
this.sortState = 'none';
|
|
251
251
|
}
|
|
@@ -261,19 +261,19 @@ class TableSortHeaderComponent {
|
|
|
261
261
|
}
|
|
262
262
|
this.sort.emit(this.sortState);
|
|
263
263
|
}
|
|
264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
265
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TableSortHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: TableSortHeaderComponent, isStandalone: true, selector: "lib-table-sort-header", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { sort: "sort" }, ngImport: i0, template: "<div class=\"sorting-container\" (click)=\"onSortClick()\">\r\n <mat-icon\r\n [class.selected]=\"selected() && sortState != 'none'\"\r\n [class.rotated]=\"sortState == 'asc'\">\r\n sort\r\n </mat-icon>\r\n</div>", styles: [".sorting-container{display:flex;align-items:center}.sorting-container *{cursor:pointer}.sorting-container .selected{color:#31adff;background-color:#ebf7fc}.sorting-container .rotated{transform:rotate(180deg) scaleX(-1)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
266
266
|
}
|
|
267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TableSortHeaderComponent, decorators: [{
|
|
268
268
|
type: Component,
|
|
269
269
|
args: [{ selector: 'lib-table-sort-header', imports: [
|
|
270
270
|
MatIconModule,
|
|
271
271
|
], template: "<div class=\"sorting-container\" (click)=\"onSortClick()\">\r\n <mat-icon\r\n [class.selected]=\"selected() && sortState != 'none'\"\r\n [class.rotated]=\"sortState == 'asc'\">\r\n sort\r\n </mat-icon>\r\n</div>", styles: [".sorting-container{display:flex;align-items:center}.sorting-container *{cursor:pointer}.sorting-container .selected{color:#31adff;background-color:#ebf7fc}.sorting-container .rotated{transform:rotate(180deg) scaleX(-1)}\n"] }]
|
|
272
|
-
}] });
|
|
272
|
+
}], propDecorators: { selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: true }] }], sort: [{ type: i0.Output, args: ["sort"] }] } });
|
|
273
273
|
|
|
274
274
|
class TableComponent {
|
|
275
275
|
constructor() {
|
|
276
|
-
this.config = input.required(...(ngDevMode ?
|
|
276
|
+
this.config = input.required({ ...(ngDevMode ? { debugName: "config" } : {}) });
|
|
277
277
|
this.action = output();
|
|
278
278
|
this.scrollContainer = viewChild.required('scrollContainer');
|
|
279
279
|
this.selectedRowIndex = -1;
|
|
@@ -298,8 +298,9 @@ class TableComponent {
|
|
|
298
298
|
this.action.emit({ action: 'drag', obj: this.config().data[event.currentIndex], index: event.currentIndex });
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
|
-
onScroll() {
|
|
301
|
+
onScroll(e) {
|
|
302
302
|
const container = this.scrollContainer().nativeElement;
|
|
303
|
+
this.action.emit({ action: 'scroll', event: e });
|
|
303
304
|
if ((Math.ceil(container.scrollTop) + container.offsetHeight) >= container.scrollHeight) {
|
|
304
305
|
this.action.emit({ action: 'scrolled' });
|
|
305
306
|
}
|
|
@@ -355,10 +356,10 @@ class TableComponent {
|
|
|
355
356
|
sortByProp(prop, sortState) {
|
|
356
357
|
this.action.emit({ action: 'sort', prop, sortState });
|
|
357
358
|
}
|
|
358
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
359
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: TableComponent, isStandalone: true, selector: "lib-table", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { action: "action" }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flexer\">\r\n @if (config().title) {\r\n <div class=\"row-heading-labels mb05\">{{ config().title }}</div>\r\n }\r\n\r\n <ng-content select=\".upper-part\" />\r\n\r\n @if (config().withAdd) {\r\n <div class=\"flexer action pointer gap05 mb05\" (click)=\"action.emit({action: 'add'})\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <div>add</div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"scroll\" #scrollContainer (scroll)=\"onScroll()\" [class.with-checkboxes]=\"config().selectableRows === 'multiple'\">\r\n <table [class.with-options]=\"config().options?.length\">\r\n <thead>\r\n @if (config().tableHeadings.length > 0) {\r\n <tr>\r\n @if (config().selectableRows === 'multiple') {\r\n <th class=\"box-cell\">\r\n <mat-checkbox\r\n (change)=\"toggleSelectAll($event)\"\r\n [checked]=\"areAllRowsSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n }\r\n\r\n @for (heading of config().tableHeadings; track heading; let i = $index) {\r\n <th>\r\n <div class=\"flexer gap05\">\r\n {{ heading }}\r\n @if (config().sortable && !config().draggable) {\r\n <lib-table-sort-header\r\n [selected]=\"currentSortColumn === i\"\r\n (click)=\"currentSortColumn = i\"\r\n (sort)=\"sortByProp(config().dataProps[i], $event)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n\r\n @if (config().options?.length) {\r\n <th></th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-content select=\".custom-headers\" />\r\n }\r\n </thead>\r\n @if (config().draggable) {\r\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n cdkDrag cdkDragLockAxis=\"y\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td\r\n [class.dragCol]=\"cellIndex === 0\">\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\"\r\n [class.flexer]=\"cellIndex === 0\">\r\n @if (cellIndex === 0) {\r\n <mat-icon class=\"draggable\" cdkDragHandle>\r\n drag_indicator\r\n </mat-icon>\r\n }\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n } @else {\r\n <tbody>\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td>\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\">\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n </table>\r\n</div>\r\n", styles: [".scroll{overflow-y:auto;max-height:94%}table{width:100%;border-collapse:collapse;border-spacing:0px}table.with-options td{padding-block:3px!important}.flexer{display:flex;align-items:center}.action{color:#009ddc;font-weight:500;text-align:right;margin-left:auto}.pointer{cursor:pointer}.gap05{gap:.5rem}.mb05{margin-bottom:.5}.data{white-space:pre-wrap}.row-heading-labels{font-weight:700;font-size:20px}.selected-row td{background-color:#d3edf8}.hover-row{background-color:#ebf7fc}.red{color:red}@media (max-width: 1086px){table td,table th{padding:3px!important;width:auto!important}}.with-checkboxes td,.with-checkboxes th{padding-block:0!important}.with-checkboxes td:is(:first-child),.with-checkboxes th:is(:first-child){padding-inline:0!important}td,th{padding:.5rem 1rem;font-size:14px}th{background-color:#f6f6f6;text-align:left;position:sticky;top:0;z-index:2;border-top:2px solid #E5E4E7}td{border-bottom:2px solid #E5E4E7;border-top:2px solid #E5E4E7}.dots{width:fit-content}.draggable{cursor:grabbing}.dragCol{padding-left:0!important}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;font-size:1.5em;text-align:center;opacity:.8;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dragdrop-placeholder{background:#ccc;border:dotted 3px #999;min-height:30px;transition:transform .1s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i1$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i1$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: TableSortHeaderComponent, selector: "lib-table-sort-header", inputs: ["selected"], outputs: ["sort"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
359
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: TableComponent, isStandalone: true, selector: "lib-table", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { action: "action" }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flexer\">\r\n @if (config().title) {\r\n <div class=\"row-heading-labels mb05\">{{ config().title }}</div>\r\n }\r\n\r\n <ng-content select=\".upper-part\" />\r\n\r\n @if (config().withAdd) {\r\n <div class=\"flexer action pointer gap05 mb05\" (click)=\"action.emit({action: 'add'})\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <div>add</div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"scroll\" #scrollContainer (scroll)=\"onScroll($event)\" [class.with-checkboxes]=\"config().selectableRows === 'multiple'\">\r\n <table [class.with-options]=\"config().options?.length\">\r\n <thead>\r\n @if (config().tableHeadings.length > 0) {\r\n <tr>\r\n @if (config().selectableRows === 'multiple') {\r\n <th class=\"box-cell\">\r\n <mat-checkbox\r\n (change)=\"toggleSelectAll($event)\"\r\n [checked]=\"areAllRowsSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n }\r\n\r\n @for (heading of config().tableHeadings; track heading; let i = $index) {\r\n <th>\r\n <div class=\"flexer gap05\">\r\n {{ heading }}\r\n @if (config().sortable && !config().draggable) {\r\n <lib-table-sort-header\r\n [selected]=\"currentSortColumn === i\"\r\n (click)=\"currentSortColumn = i\"\r\n (sort)=\"sortByProp(config().dataProps[i], $event)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n\r\n @if (config().options?.length) {\r\n <th></th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-content select=\".custom-headers\" />\r\n }\r\n </thead>\r\n @if (config().draggable) {\r\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n cdkDrag cdkDragLockAxis=\"y\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td\r\n [class.dragCol]=\"cellIndex === 0\">\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\"\r\n [class.flexer]=\"cellIndex === 0\">\r\n @if (cellIndex === 0) {\r\n <mat-icon class=\"draggable\" cdkDragHandle>\r\n drag_indicator\r\n </mat-icon>\r\n }\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n } @else {\r\n <tbody>\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td>\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\">\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n </table>\r\n</div>\r\n", styles: [".scroll{overflow-y:auto;max-height:94%}table{width:100%;border-collapse:collapse;border-spacing:0px}table.with-options td{padding-block:3px!important}.flexer{display:flex;align-items:center}.action{color:#009ddc;font-weight:500;text-align:right;margin-left:auto}.pointer{cursor:pointer}.gap05{gap:.5rem}.mb05{margin-bottom:.5}.data{white-space:pre-wrap}.row-heading-labels{font-weight:700;font-size:20px}.selected-row td{background-color:#d3edf8}.hover-row{background-color:#ebf7fc}.red{color:red}@media(max-width:1086px){table td,table th{padding:3px!important;width:auto!important}}.with-checkboxes td,.with-checkboxes th{padding-block:0!important}.with-checkboxes td:is(:first-child),.with-checkboxes th:is(:first-child){padding-inline:0!important}td,th{padding:.5rem 1rem;font-size:14px}th{background-color:#f6f6f6;text-align:left;position:sticky;top:0;z-index:2;border-top:2px solid #E5E4E7}td{border-bottom:2px solid #E5E4E7;border-top:2px solid #E5E4E7}.dots{width:fit-content}.draggable{cursor:grabbing}.dragCol{padding-left:0!important}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;font-size:1.5em;text-align:center;opacity:.8;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dragdrop-placeholder{background:#ccc;border:dotted 3px #999;min-height:30px;transition:transform .1s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i1$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i1$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: TableSortHeaderComponent, selector: "lib-table-sort-header", inputs: ["selected"], outputs: ["sort"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
360
361
|
}
|
|
361
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
362
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TableComponent, decorators: [{
|
|
362
363
|
type: Component,
|
|
363
364
|
args: [{ selector: 'lib-table', imports: [
|
|
364
365
|
MatMenuModule,
|
|
@@ -367,8 +368,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
367
368
|
TableSortHeaderComponent,
|
|
368
369
|
DragDropModule,
|
|
369
370
|
MatCheckboxModule
|
|
370
|
-
], template: "<div class=\"flexer\">\r\n @if (config().title) {\r\n <div class=\"row-heading-labels mb05\">{{ config().title }}</div>\r\n }\r\n\r\n <ng-content select=\".upper-part\" />\r\n\r\n @if (config().withAdd) {\r\n <div class=\"flexer action pointer gap05 mb05\" (click)=\"action.emit({action: 'add'})\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <div>add</div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"scroll\" #scrollContainer (scroll)=\"onScroll()\" [class.with-checkboxes]=\"config().selectableRows === 'multiple'\">\r\n <table [class.with-options]=\"config().options?.length\">\r\n <thead>\r\n @if (config().tableHeadings.length > 0) {\r\n <tr>\r\n @if (config().selectableRows === 'multiple') {\r\n <th class=\"box-cell\">\r\n <mat-checkbox\r\n (change)=\"toggleSelectAll($event)\"\r\n [checked]=\"areAllRowsSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n }\r\n\r\n @for (heading of config().tableHeadings; track heading; let i = $index) {\r\n <th>\r\n <div class=\"flexer gap05\">\r\n {{ heading }}\r\n @if (config().sortable && !config().draggable) {\r\n <lib-table-sort-header\r\n [selected]=\"currentSortColumn === i\"\r\n (click)=\"currentSortColumn = i\"\r\n (sort)=\"sortByProp(config().dataProps[i], $event)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n\r\n @if (config().options?.length) {\r\n <th></th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-content select=\".custom-headers\" />\r\n }\r\n </thead>\r\n @if (config().draggable) {\r\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n cdkDrag cdkDragLockAxis=\"y\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td\r\n [class.dragCol]=\"cellIndex === 0\">\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\"\r\n [class.flexer]=\"cellIndex === 0\">\r\n @if (cellIndex === 0) {\r\n <mat-icon class=\"draggable\" cdkDragHandle>\r\n drag_indicator\r\n </mat-icon>\r\n }\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n } @else {\r\n <tbody>\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td>\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\">\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n </table>\r\n</div>\r\n", styles: [".scroll{overflow-y:auto;max-height:94%}table{width:100%;border-collapse:collapse;border-spacing:0px}table.with-options td{padding-block:3px!important}.flexer{display:flex;align-items:center}.action{color:#009ddc;font-weight:500;text-align:right;margin-left:auto}.pointer{cursor:pointer}.gap05{gap:.5rem}.mb05{margin-bottom:.5}.data{white-space:pre-wrap}.row-heading-labels{font-weight:700;font-size:20px}.selected-row td{background-color:#d3edf8}.hover-row{background-color:#ebf7fc}.red{color:red}@media
|
|
371
|
-
}] });
|
|
371
|
+
], template: "<div class=\"flexer\">\r\n @if (config().title) {\r\n <div class=\"row-heading-labels mb05\">{{ config().title }}</div>\r\n }\r\n\r\n <ng-content select=\".upper-part\" />\r\n\r\n @if (config().withAdd) {\r\n <div class=\"flexer action pointer gap05 mb05\" (click)=\"action.emit({action: 'add'})\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <div>add</div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"scroll\" #scrollContainer (scroll)=\"onScroll($event)\" [class.with-checkboxes]=\"config().selectableRows === 'multiple'\">\r\n <table [class.with-options]=\"config().options?.length\">\r\n <thead>\r\n @if (config().tableHeadings.length > 0) {\r\n <tr>\r\n @if (config().selectableRows === 'multiple') {\r\n <th class=\"box-cell\">\r\n <mat-checkbox\r\n (change)=\"toggleSelectAll($event)\"\r\n [checked]=\"areAllRowsSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n }\r\n\r\n @for (heading of config().tableHeadings; track heading; let i = $index) {\r\n <th>\r\n <div class=\"flexer gap05\">\r\n {{ heading }}\r\n @if (config().sortable && !config().draggable) {\r\n <lib-table-sort-header\r\n [selected]=\"currentSortColumn === i\"\r\n (click)=\"currentSortColumn = i\"\r\n (sort)=\"sortByProp(config().dataProps[i], $event)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n\r\n @if (config().options?.length) {\r\n <th></th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-content select=\".custom-headers\" />\r\n }\r\n </thead>\r\n @if (config().draggable) {\r\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n cdkDrag cdkDragLockAxis=\"y\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td\r\n [class.dragCol]=\"cellIndex === 0\">\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\"\r\n [class.flexer]=\"cellIndex === 0\">\r\n @if (cellIndex === 0) {\r\n <mat-icon class=\"draggable\" cdkDragHandle>\r\n drag_indicator\r\n </mat-icon>\r\n }\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n } @else {\r\n <tbody>\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td>\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\">\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n </table>\r\n</div>\r\n", styles: [".scroll{overflow-y:auto;max-height:94%}table{width:100%;border-collapse:collapse;border-spacing:0px}table.with-options td{padding-block:3px!important}.flexer{display:flex;align-items:center}.action{color:#009ddc;font-weight:500;text-align:right;margin-left:auto}.pointer{cursor:pointer}.gap05{gap:.5rem}.mb05{margin-bottom:.5}.data{white-space:pre-wrap}.row-heading-labels{font-weight:700;font-size:20px}.selected-row td{background-color:#d3edf8}.hover-row{background-color:#ebf7fc}.red{color:red}@media(max-width:1086px){table td,table th{padding:3px!important;width:auto!important}}.with-checkboxes td,.with-checkboxes th{padding-block:0!important}.with-checkboxes td:is(:first-child),.with-checkboxes th:is(:first-child){padding-inline:0!important}td,th{padding:.5rem 1rem;font-size:14px}th{background-color:#f6f6f6;text-align:left;position:sticky;top:0;z-index:2;border-top:2px solid #E5E4E7}td{border-bottom:2px solid #E5E4E7;border-top:2px solid #E5E4E7}.dots{width:fit-content}.draggable{cursor:grabbing}.dragCol{padding-left:0!important}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;font-size:1.5em;text-align:center;opacity:.8;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dragdrop-placeholder{background:#ccc;border:dotted 3px #999;min-height:30px;transition:transform .1s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
372
|
+
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], action: [{ type: i0.Output, args: ["action"] }], scrollContainer: [{ type: i0.ViewChild, args: ['scrollContainer', { isSignal: true }] }] } });
|
|
372
373
|
|
|
373
374
|
class LoaderService {
|
|
374
375
|
constructor() {
|
|
@@ -381,10 +382,10 @@ class LoaderService {
|
|
|
381
382
|
isLoading() {
|
|
382
383
|
return this.loadingSubject.getValue();
|
|
383
384
|
}
|
|
384
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
385
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
385
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: LoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
386
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: LoaderService, providedIn: 'root' }); }
|
|
386
387
|
}
|
|
387
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
388
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: LoaderService, decorators: [{
|
|
388
389
|
type: Injectable,
|
|
389
390
|
args: [{
|
|
390
391
|
providedIn: 'root'
|
|
@@ -395,10 +396,10 @@ class GlobalLoaderComponent {
|
|
|
395
396
|
constructor() {
|
|
396
397
|
this.loaderService = inject(LoaderService);
|
|
397
398
|
}
|
|
398
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
399
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
399
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: GlobalLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
400
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: GlobalLoaderComponent, isStandalone: true, selector: "lib-global-loader", ngImport: i0, template: "@if (loaderService.loading$ | async) {\r\n <div class=\"loader\">\r\n <mat-spinner />\r\n </div>\r\n}", styles: [".loader{display:flex;justify-content:center;align-items:center;height:100%;width:100%;position:fixed;top:0;left:0;background-color:#0003;z-index:9999}\n"], dependencies: [{ kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
400
401
|
}
|
|
401
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: GlobalLoaderComponent, decorators: [{
|
|
402
403
|
type: Component,
|
|
403
404
|
args: [{ selector: 'lib-global-loader', imports: [
|
|
404
405
|
AsyncPipe,
|
|
@@ -414,10 +415,10 @@ class ErrorService {
|
|
|
414
415
|
sendError(error) {
|
|
415
416
|
this.errorSubject.next(error);
|
|
416
417
|
}
|
|
417
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
418
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
418
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
419
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorService, providedIn: 'root' }); }
|
|
419
420
|
}
|
|
420
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
421
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorService, decorators: [{
|
|
421
422
|
type: Injectable,
|
|
422
423
|
args: [{
|
|
423
424
|
providedIn: 'root'
|
|
@@ -528,10 +529,10 @@ class ErrorPopupComponent {
|
|
|
528
529
|
this.error = error;
|
|
529
530
|
this.httpStatusCodes = HTTP_STATUS_CODES;
|
|
530
531
|
}
|
|
531
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
532
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
532
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorPopupComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
533
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: ErrorPopupComponent, isStandalone: true, selector: "lib-error-popup", ngImport: i0, template: "<lib-default-dialog [dialogTitle]=\"'\u0410n error has occurred'\">\r\n <div class=\"dialog-content\">\r\n <div class=\"status-info\">\r\n <div>{{ error.status }}</div>\r\n @if (error.status) {\r\n <div>{{ httpStatusCodes[error.status] }}</div>\r\n }\r\n </div>\r\n <div class=\"error-info\">\r\n <lib-error-dispaly [error]=\"error\" />\r\n </div>\r\n </div>\r\n</lib-default-dialog>", styles: [".dialog-content{display:flex;flex-direction:column;align-items:center;padding-inline:1rem}.dialog-content .status-info{display:flex;margin-bottom:.5rem;font-weight:600;font-size:18px;gap:.5rem}.dialog-content .error-info{display:grid;place-items:center}\n"], dependencies: [{ kind: "component", type: DefaultDialogComponent, selector: "lib-default-dialog", inputs: ["temRef", "height", "dialogTitle", "withBack"], outputs: ["back"] }, { kind: "component", type: ErrorDispalyComponent, selector: "lib-error-dispaly", inputs: ["error"] }] }); }
|
|
533
534
|
}
|
|
534
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
535
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorPopupComponent, decorators: [{
|
|
535
536
|
type: Component,
|
|
536
537
|
args: [{ selector: 'lib-error-popup', imports: [
|
|
537
538
|
DefaultDialogComponent,
|
|
@@ -564,10 +565,10 @@ class ErrorHandlerComponent {
|
|
|
564
565
|
ngOnDestroy() {
|
|
565
566
|
this.errSubscriptions.unsubscribe();
|
|
566
567
|
}
|
|
567
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
568
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
568
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorHandlerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
569
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.2", type: ErrorHandlerComponent, isStandalone: true, selector: "lib-error-handler", ngImport: i0, template: "", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }] }); }
|
|
569
570
|
}
|
|
570
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
571
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ErrorHandlerComponent, decorators: [{
|
|
571
572
|
type: Component,
|
|
572
573
|
args: [{ selector: 'lib-error-handler', imports: [
|
|
573
574
|
MatDialogModule
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ferhaps-easy-ui-lib.mjs","sources":["../../../projects/ui-lib/src/lib/pipes/snake-case-parser.pipe.ts","../../../projects/ui-lib/src/lib/directives/fields-match-validator.directive.ts","../../../projects/ui-lib/src/lib/directives/phone-validation.directive.ts","../../../projects/ui-lib/src/lib/directives/password-validator.directive.ts","../../../projects/ui-lib/src/lib/components/default-dialog/default-dialog.component.ts","../../../projects/ui-lib/src/lib/components/default-dialog/default-dialog.component.html","../../../projects/ui-lib/src/lib/components/error-dispaly.component.ts","../../../projects/ui-lib/src/lib/components/search-bar.component.ts","../../../projects/ui-lib/src/lib/components/table-sort-header/table-sort-header.component.ts","../../../projects/ui-lib/src/lib/components/table-sort-header/table-sort-header.component.html","../../../projects/ui-lib/src/lib/components/table/table.component.ts","../../../projects/ui-lib/src/lib/components/table/table.component.html","../../../projects/ui-lib/src/lib/services/loader.service.ts","../../../projects/ui-lib/src/lib/components/global-loader/global-loader.component.ts","../../../projects/ui-lib/src/lib/components/global-loader/global-loader.component.html","../../../projects/ui-lib/src/lib/services/error.service.ts","../../../projects/ui-lib/src/lib/utils/utils.ts","../../../projects/ui-lib/src/lib/components/error-handler/error-popup/error-popup.component.ts","../../../projects/ui-lib/src/lib/components/error-handler/error-popup/error-popup.component.html","../../../projects/ui-lib/src/lib/components/error-handler/error-handler.component.ts","../../../projects/ui-lib/src/lib/components/error-handler/error-handler.component.html","../../../projects/ui-lib/src/public-api.ts","../../../projects/ui-lib/src/ferhaps-easy-ui-lib.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'snakeCaseParser',\r\n})\r\nexport class SnakeCaseParserPipe implements PipeTransform {\r\n public transform(value: unknown): string {\r\n if (typeof value === 'string') {\r\n let temp = value.replaceAll('_', ' ');\r\n temp = temp.charAt(0).toUpperCase() + temp.slice(1).toLowerCase();\r\n return temp;\r\n }\r\n\r\n return String(value);\r\n }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[libFieldsMatchValidator]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: FieldsMatchValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FieldsMatchValidatorDirective implements Validator {\r\n public fieldToMatch = input.required<string>();\r\n\r\n public validate(control: AbstractControl): { [key: string]: any } | null {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const matchingControl = control.root.get(this.fieldToMatch());\r\n if (!matchingControl) {\r\n return null;\r\n }\r\n\r\n if (value !== matchingControl.value) {\r\n return { mismatch: true };\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libPhoneValidation]',\r\n})\r\nexport class PhoneValidationDirective {\r\n @HostListener('input', ['$event']) public onInput(event: InputEvent) {\r\n const input = event.target as HTMLInputElement;\r\n \r\n if (!input.value.includes('+')) {\r\n input.value = `+${input.value}`;\r\n }\r\n \r\n // Only allow digits and plus sign\r\n const regex = /^[0-9+]*$/;\r\n if (!regex.test(input.value)) {\r\n input.value = input.value.replace(/[^0-9+]/g, '');\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event']) public onKeyDown(event: KeyboardEvent): void {\r\n const inputValue = (event.target as HTMLInputElement).value;\r\n if (event.key === 'Backspace' && inputValue === '+') {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[libPasswordValidator]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: PasswordValidatorDirective,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class PasswordValidatorDirective implements Validator {\r\n public validate(control: AbstractControl): ValidationErrors | null {\r\n const password = control.value;\r\n\r\n // At least one uppercase letter, one lowercase letter, one digit, one special character, and minimum eight characters long\r\n const pattern = /^(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#\\$%\\^&\\*])(?=.*\\d).{8,}$/\r\n\r\n if (password && !pattern.test(password)) {\r\n return { passwordInvalid: true };\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Component, Input, input, output, TemplateRef } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-default-dialog',\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatDialogModule\r\n ],\r\n templateUrl: './default-dialog.component.html',\r\n styleUrls: ['./default-dialog.component.scss']\r\n})\r\nexport class DefaultDialogComponent {\r\n @Input() temRef!: TemplateRef<any>;\r\n \r\n public height = input<string>();\r\n public dialogTitle = input<string>();\r\n public withBack = input<boolean>();\r\n\r\n protected back = output<void>();\r\n}\r\n","<div class=\"modal\" [style]=\"{ 'height': height() }\">\r\n <div class=\"dialog-title\">\r\n @if (withBack()) {\r\n <div class=\"back-arrow\" (click)=\"back.emit()\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n }\r\n\r\n <h4 class=\"title\">{{ dialogTitle() }}</h4>\r\n\r\n <div class=\"closer\" mat-dialog-close>\r\n <mat-icon>close</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <ng-content select=\".dialog-content\" />\r\n <ng-template #tempBody />\r\n <ng-container *ngTemplateOutlet=\"temRef ? temRef: tempBody\" />\r\n </div>\r\n</div>","import { Component, input, OnInit } from '@angular/core';\r\n\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { SnakeCaseParserPipe } from '../pipes/snake-case-parser.pipe';\r\nimport { SystemError } from '../utils/types';\r\n\r\n@Component({\r\n selector: 'lib-error-dispaly',\r\n imports: [\r\n SnakeCaseParserPipe\r\n ],\r\n template: `<strong class=\"err-container\">{{ displayError | snakeCaseParser }}</strong>`,\r\n styles: [`\r\n .err-container {\r\n display: block;\r\n max-width: 300px;\r\n font-size: 20px;\r\n text-align: center;\r\n border: 1px solid red;\r\n border-radius: 5px;\r\n padding: 0.5rem 1.5rem;\r\n background-color: #ffe6e6;\r\n color: #ff0000;\r\n overflow-wrap: break-word;\r\n }\r\n`]\r\n})\r\nexport class ErrorDispalyComponent implements OnInit {\r\n public error = input.required<SystemError>();\r\n\r\n protected displayError: string = '';\r\n\r\n public ngOnInit(): void {\r\n if (this.error() instanceof HttpErrorResponse) {\r\n if (typeof (this.error() as HttpErrorResponse).error === 'string') {\r\n this.displayError = (this.error() as HttpErrorResponse).error;\r\n } else if (this.error && (this.error() as HttpErrorResponse)?.error?.message) {\r\n this.displayError = (this.error() as HttpErrorResponse).error.message;\r\n } else {\r\n this.displayError = 'Unknown error';\r\n }\r\n } else if (typeof this.error() === 'string') {\r\n this.displayError = (this.error() as string);\r\n } else {\r\n this.displayError = 'Unknown error';\r\n }\r\n }\r\n}\r\n","import { Component, output, input } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-search-bar',\r\n template: `\r\n <form class=\"search-bar\" [formGroup]=\"searchForm\">\r\n <mat-icon>search</mat-icon>\r\n <input class=\"search-input\" type=\"search\" name=\"field\"\r\n [placeholder]=\"'Search ' + for()\" autocomplete=\"off\" formControlName=\"search\" />\r\n </form>\r\n`,\r\n styles: [`\r\n .search-bar {\r\n width: 270px;\r\n border: 1px solid #A4A4A4;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .search-input {\r\n border: none;\r\n padding: 7px 11px;\r\n height: 100%;\r\n width: 100%;\r\n background-color: transparent;\r\n }\r\n\r\n mat-icon {\r\n margin-inline: 8px;\r\n }\r\n\r\n .search-input:focus {\r\n border: none;\r\n outline: none;\r\n }\r\n\r\n @media (max-width: 1086px) {\r\n .search-bar {\r\n width: 170px;\r\n }\r\n }\r\n`],\r\n imports: [\r\n MatIconModule,\r\n ReactiveFormsModule\r\n ]\r\n})\r\nexport class SearchBarComponent {\r\n public for = input.required<string>();\r\n\r\n protected search = output<string | Event>();\r\n\r\n protected searchForm: FormGroup = new FormGroup({\r\n search: new FormControl('')\r\n });\r\n\r\n constructor() {\r\n this.searchForm.get('search')?.valueChanges.\r\n pipe(\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n ).subscribe((searchTerm: string | Event) => {\r\n if (typeof searchTerm === 'string') {\r\n searchTerm = searchTerm.trim();\r\n }\r\n \r\n this.search.emit(searchTerm);\r\n });\r\n }\r\n}","import { Component, input, output } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type SortState = 'none' | 'asc' | 'desc';\r\n\r\n@Component({\r\n selector: 'lib-table-sort-header',\r\n imports: [\r\n MatIconModule,\r\n ],\r\n templateUrl: './table-sort-header.component.html',\r\n styleUrls: ['./table-sort-header.component.scss']\r\n})\r\nexport class TableSortHeaderComponent {\r\n public selected = input.required<boolean>();\r\n public sort = output<SortState>();\r\n\r\n protected sortState: SortState = 'none';\r\n\r\n protected onSortClick(): void {\r\n if (this.sortState === 'none') {\r\n this.sortState = 'desc';\r\n } else if (this.sortState === 'desc') {\r\n this.sortState = 'asc';\r\n } else {\r\n this.sortState = 'none';\r\n }\r\n\r\n this.sort.emit(this.sortState);\r\n }\r\n}\r\n","<div class=\"sorting-container\" (click)=\"onSortClick()\">\r\n <mat-icon\r\n [class.selected]=\"selected() && sortState != 'none'\"\r\n [class.rotated]=\"sortState == 'asc'\">\r\n sort\r\n </mat-icon>\r\n</div>","import { Component, ElementRef, input, output, viewChild } from '@angular/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SortState, TableSortHeaderComponent } from '../table-sort-header/table-sort-header.component';\r\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\r\n\r\nexport type TableEvent<T = any> = {\r\n action: 'rowClick' | 'rowSelect' | 'drag' | 'scrolled' | 'sort' | 'add' | string;\r\n obj?: T;\r\n prop?: keyof T;\r\n index?: number;\r\n selected?: boolean;\r\n selectedRows?: number[];\r\n sortState?: SortState;\r\n event?: Event;\r\n};\r\n\r\nexport type Config<T = any> = {\r\n data: T[];\r\n title: string;\r\n dataProps: (keyof T)[];\r\n tableHeadings: string[];\r\n options?: string[];\r\n withAdd?: boolean;\r\n selectableRows?: 'single' | 'multiple';\r\n sortable?: boolean;\r\n draggable?: boolean;\r\n classRules?: ClassRule<T>[];\r\n};\r\n\r\nexport type ClassRule<T = any> = {\r\n className: string;\r\n condition: (obj: T, prop: keyof T) => boolean;\r\n};\r\n\r\n@Component({\r\n selector: 'lib-table',\r\n templateUrl: 'table.component.html',\r\n styleUrls: ['table.component.scss'],\r\n imports: [\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TableSortHeaderComponent,\r\n DragDropModule,\r\n MatCheckboxModule\r\n ]\r\n})\r\nexport class TableComponent<T = any> {\r\n public config = input.required<Config<T>>();\r\n\r\n protected action = output<TableEvent<T>>();\r\n\r\n public scrollContainer = viewChild.required<ElementRef<HTMLDivElement>>('scrollContainer');\r\n\r\n public selectedRowIndex: number = -1;\r\n public selectedIndices: Set<number> = new Set<number>();\r\n protected hoverRowIndex: number = -1;\r\n protected currentSortColumn: number = -1;\r\n\r\n protected getClass(obj: T, prop: keyof T): string {\r\n if (!this.config().classRules) return '';\r\n\r\n const classes: string[] = [];\r\n for (let rule of (this.config().classRules as ClassRule<T>[])) {\r\n if (rule.condition(obj, prop)) {\r\n classes.push(rule.className);\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n protected drop(event: CdkDragDrop<T[]>) {\r\n if (this.config().draggable) {\r\n moveItemInArray(this.config().data, event.previousIndex, event.currentIndex);\r\n this.action.emit({ action: 'drag', obj: this.config().data[event.currentIndex], index: event.currentIndex });\r\n }\r\n }\r\n\r\n protected onScroll() {\r\n const container = this.scrollContainer().nativeElement;\r\n if ((Math.ceil(container.scrollTop) + container.offsetHeight) >= container.scrollHeight) {\r\n this.action.emit({ action: 'scrolled' });\r\n }\r\n }\r\n\r\n protected onRowClick(event: Event, obj: T, index: number): void {\r\n this.selectedRowIndex = index === this.selectedRowIndex ? -1 : index;\r\n this.action.emit({\r\n action: 'rowClick',\r\n obj,\r\n index,\r\n selected: this.selectedRowIndex === index || this.selectedIndices.has(index),\r\n event\r\n });\r\n }\r\n\r\n protected selectOption(оption: string, obj: T, index: number): void {\r\n this.action.emit({\r\n action: оption.toLowerCase(),\r\n obj,\r\n index,\r\n selected: this.selectedRowIndex === index || this.selectedIndices.has(index)\r\n });\r\n }\r\n\r\n protected areAllRowsSelected(): boolean {\r\n return this.selectedIndices.size === this.config().data.length;\r\n }\r\n\r\n protected toggleSelectAll(event: MatCheckboxChange): void {\r\n if (event.checked) {\r\n this.config().data.forEach((_, index) => this.selectedIndices.add(index));\r\n } else {\r\n this.selectedIndices.clear();\r\n }\r\n\r\n this.action.emit({\r\n action: 'rowSelect',\r\n selectedRows: [...this.selectedIndices]\r\n });\r\n }\r\n\r\n protected toggleRowSelection(index: number): void {\r\n if (this.config().selectableRows === 'multiple') {\r\n if (this.selectedIndices.has(index)) {\r\n this.selectedIndices.delete(index);\r\n } else {\r\n this.selectedIndices.add(index);\r\n }\r\n \r\n this.action.emit({\r\n action: 'rowSelect',\r\n index,\r\n selectedRows: [...this.selectedIndices]\r\n });\r\n }\r\n }\r\n\r\n protected sortByProp(prop: keyof T, sortState: SortState): void {\r\n this.action.emit({ action: 'sort', prop, sortState });\r\n }\r\n}\r\n","<div class=\"flexer\">\r\n @if (config().title) {\r\n <div class=\"row-heading-labels mb05\">{{ config().title }}</div>\r\n }\r\n\r\n <ng-content select=\".upper-part\" />\r\n\r\n @if (config().withAdd) {\r\n <div class=\"flexer action pointer gap05 mb05\" (click)=\"action.emit({action: 'add'})\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <div>add</div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"scroll\" #scrollContainer (scroll)=\"onScroll()\" [class.with-checkboxes]=\"config().selectableRows === 'multiple'\">\r\n <table [class.with-options]=\"config().options?.length\">\r\n <thead>\r\n @if (config().tableHeadings.length > 0) {\r\n <tr>\r\n @if (config().selectableRows === 'multiple') {\r\n <th class=\"box-cell\">\r\n <mat-checkbox\r\n (change)=\"toggleSelectAll($event)\"\r\n [checked]=\"areAllRowsSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n }\r\n\r\n @for (heading of config().tableHeadings; track heading; let i = $index) {\r\n <th>\r\n <div class=\"flexer gap05\">\r\n {{ heading }}\r\n @if (config().sortable && !config().draggable) {\r\n <lib-table-sort-header\r\n [selected]=\"currentSortColumn === i\"\r\n (click)=\"currentSortColumn = i\"\r\n (sort)=\"sortByProp(config().dataProps[i], $event)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n\r\n @if (config().options?.length) {\r\n <th></th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-content select=\".custom-headers\" />\r\n }\r\n </thead>\r\n @if (config().draggable) {\r\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n cdkDrag cdkDragLockAxis=\"y\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td\r\n [class.dragCol]=\"cellIndex === 0\">\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\"\r\n [class.flexer]=\"cellIndex === 0\">\r\n @if (cellIndex === 0) {\r\n <mat-icon class=\"draggable\" cdkDragHandle>\r\n drag_indicator\r\n </mat-icon>\r\n }\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n } @else {\r\n <tbody>\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td>\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\">\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n </table>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n private loadingSubject = new BehaviorSubject<boolean>(false);\r\n public loading$ = this.loadingSubject.asObservable();\r\n\r\n public setLoading(loadingState: boolean) {\r\n this.loadingSubject.next(loadingState);\r\n }\r\n\r\n public isLoading(): boolean {\r\n return this.loadingSubject.getValue();\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-global-loader',\r\n imports: [\r\n AsyncPipe,\r\n MatProgressSpinnerModule\r\n ],\r\n templateUrl: './global-loader.component.html',\r\n styleUrl: './global-loader.component.scss'\r\n})\r\nexport class GlobalLoaderComponent {\r\n protected loaderService = inject(LoaderService);\r\n}\r\n","@if (loaderService.loading$ | async) {\r\n <div class=\"loader\">\r\n <mat-spinner />\r\n </div>\r\n}","import { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorService {\r\n private errorSubject = new Subject<HttpErrorResponse>();\r\n public error$ = this.errorSubject.asObservable();\r\n\r\n public sendError(error: HttpErrorResponse) {\r\n this.errorSubject.next(error);\r\n }\r\n}\r\n","export const HTTP_STATUS_CODES: Record<number | string, string> = {\r\n 100: 'Continue',\r\n 101: 'Switching Protocols',\r\n 102: 'Processing',\r\n 103: 'Early Hints',\r\n 200: 'OK',\r\n 201: 'Created',\r\n 202: 'Accepted',\r\n 203: 'Non-Authoritative Information',\r\n 204: 'No Content',\r\n 205: 'Reset Content',\r\n 206: 'Partial Content',\r\n 207: 'Multi-Status',\r\n 208: 'Already Reported',\r\n 226: 'IM Used',\r\n 300: 'Multiple Choices',\r\n 301: 'Moved Permanently',\r\n 302: 'Found',\r\n 303: 'See Other',\r\n 304: 'Not Modified',\r\n 305: 'Use Proxy',\r\n 306: '(Unused)',\r\n 307: 'Temporary Redirect',\r\n 308: 'Permanent Redirect',\r\n 400: 'Bad Request',\r\n 401: 'Unauthorized',\r\n 402: 'Payment Required',\r\n 403: 'Forbidden',\r\n 404: 'Not Found',\r\n 405: 'Method Not Allowed',\r\n 406: 'Not Acceptable',\r\n 407: 'Proxy Authentication Required',\r\n 408: 'Request Timeout',\r\n 409: 'Conflict',\r\n 410: 'Gone',\r\n 411: 'Length Required',\r\n 412: 'Precondition Failed',\r\n 413: 'Payload Too Large',\r\n 414: 'URI Too Long',\r\n 415: 'Unsupported Media Type',\r\n 416: 'Range Not Satisfiable',\r\n 417: 'Expectation Failed',\r\n 418: \"I'm a teapot\",\r\n 421: 'Misdirected Request',\r\n 422: 'Unprocessable Entity',\r\n 423: 'Locked',\r\n 424: 'Failed Dependency',\r\n 425: 'Too Early',\r\n 426: 'Upgrade Required',\r\n 428: 'Precondition Required',\r\n 429: 'Too Many Requests',\r\n 431: 'Request Header Fields Too Large',\r\n 451: 'Unavailable For Legal Reasons',\r\n 500: 'Internal Server Error',\r\n 501: 'Not Implemented',\r\n 502: 'Bad Gateway',\r\n 503: 'Service Unavailable',\r\n 504: 'Gateway Timeout',\r\n 505: 'HTTP Version Not Supported',\r\n 506: 'Variant Also Negotiates',\r\n 507: 'Insufficient Storage',\r\n 508: 'Loop Detected',\r\n 510: 'Not Extended',\r\n 511: 'Network Authentication Required'\r\n};\r\n\r\nexport const JSON_HTTP_OPTIONS: Object = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Accept-language': 'bg',\r\n },\r\n responseType: 'json'\r\n};\r\n\r\nexport const STRING_HTTP_OPTIONS: Object = {\r\n responseType: 'text'\r\n};\r\n\r\nexport const BLOB_HTTP_OPTIONS: Object = {\r\n headers: {\r\n 'Content-type': 'application/octet-stream',\r\n 'Accept-language': 'bg',\r\n },\r\n responseType: 'blob',\r\n};\r\n\r\nexport const SKIP_ERROR_OPTIONS: Object = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Accept-language': 'bg',\r\n 'X-Skip-Error': 'true',\r\n },\r\n responseType: 'json',\r\n};\r\n\r\nexport const JSON_OPTIONS_WITH_GLOBAL_LOADER: Object = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Accept-language': 'bg',\r\n 'X-Global-Loader': 'true',\r\n },\r\n responseType: 'json'\r\n};\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { DefaultDialogComponent } from '../../default-dialog/default-dialog.component';\r\nimport { ErrorDispalyComponent } from '../../error-dispaly.component';\r\nimport { HTTP_STATUS_CODES } from '../../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-error-popup',\r\n imports: [\r\n DefaultDialogComponent,\r\n ErrorDispalyComponent\r\n ],\r\n templateUrl: './error-popup.component.html',\r\n styleUrls: ['./error-popup.component.scss']\r\n})\r\nexport class ErrorPopupComponent {\r\n protected httpStatusCodes = HTTP_STATUS_CODES;\r\n \r\n constructor(@Inject(MAT_DIALOG_DATA) public error: HttpErrorResponse) { }\r\n}\r\n","<lib-default-dialog [dialogTitle]=\"'Аn error has occurred'\">\r\n <div class=\"dialog-content\">\r\n <div class=\"status-info\">\r\n <div>{{ error.status }}</div>\r\n @if (error.status) {\r\n <div>{{ httpStatusCodes[error.status] }}</div>\r\n }\r\n </div>\r\n <div class=\"error-info\">\r\n <lib-error-dispaly [error]=\"error\" />\r\n </div>\r\n </div>\r\n</lib-default-dialog>","import { OnDestroy, inject } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Component } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\r\nimport { ErrorPopupComponent } from './error-popup/error-popup.component';\r\nimport { NoopScrollStrategy } from '@angular/cdk/overlay';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'lib-error-handler',\r\n templateUrl: 'error-handler.component.html',\r\n styleUrls: ['error-handler.component.scss'],\r\n imports: [\r\n MatDialogModule\r\n ]\r\n})\r\nexport class ErrorHandlerComponent implements OnDestroy {\r\n private errSubscriptions = new Subscription();\r\n private errorService = inject(ErrorService);\r\n private dialog = inject(MatDialog);\r\n\r\n constructor() {\r\n this.errSubscriptions.add(\r\n this.errorService.error$.subscribe((err: HttpErrorResponse) => {\r\n console.log(err);\r\n this.showPopup(err);\r\n })\r\n );\r\n }\r\n\r\n private showPopup(error: HttpErrorResponse): void {\r\n this.dialog.closeAll();\r\n this.dialog.open(ErrorPopupComponent, {\r\n data: error,\r\n width: '400px',\r\n autoFocus: false,\r\n scrollStrategy: new NoopScrollStrategy(),\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.errSubscriptions.unsubscribe();\r\n }\r\n}\r\n","","/*\r\n * Public API Surface of ui-lib\r\n */\r\n\r\nexport * from './lib/pipes/snake-case-parser.pipe';\r\nexport * from './lib/directives/fields-match-validator.directive';\r\nexport * from './lib/directives/phone-validation.directive';\r\nexport * from './lib/directives/password-validator.directive';\r\nexport * from './lib/components/default-dialog/default-dialog.component';\r\nexport * from './lib/components/error-dispaly.component';\r\nexport * from './lib/components/search-bar.component';\r\nexport * from './lib/utils/types';\r\nexport * from './lib/components/table-sort-header/table-sort-header.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/global-loader/global-loader.component';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/error.service';\r\nexport * from './lib/components/error-handler/error-handler.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;MAKa,mBAAmB,CAAA;AACvB,IAAA,SAAS,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACjE,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;8GATW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,iBAAiB;AACxB,iBAAA;;;MCSY,6BAA6B,CAAA;AAV1C,IAAA,WAAA,GAAA;AAWS,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAAU;AAoB/C,IAAA;AAlBQ,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QAE3B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7D,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AAEA,QAAA,OAAO,IAAI;IACb;8GApBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAR7B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,6BAA6B;AAC1C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAVzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAA,6BAA+B;AAC1C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;MCPY,wBAAwB,CAAA;AACO,IAAA,OAAO,CAAC,KAAiB,EAAA;AACjE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAE9C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC9B,KAAK,CAAC,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,EAAE;QACjC;;QAGA,MAAM,KAAK,GAAG,WAAW;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACnD;IACF;AAE4C,IAAA,SAAS,CAAC,KAAoB,EAAA;AACxE,QAAA,MAAM,UAAU,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QAC3D,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,UAAU,KAAK,GAAG,EAAE;YACnD,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;8GApBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;8BAE2C,OAAO,EAAA,CAAA;sBAAhD,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAcW,SAAS,EAAA,CAAA;sBAApD,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCPxB,0BAA0B,CAAA;AAC9B,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK;;QAG9B,MAAM,OAAO,GAAG,0DAA0D;QAE1E,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACvC,YAAA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE;QAClC;AAEA,QAAA,OAAO,IAAI;IACb;8GAZW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,SAAA,EAR1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,0BAA0B;AACvC,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAVtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAA,0BAA4B;AACvC,4BAAA,KAAK,EAAE;AACR;AACF;AACF,iBAAA;;;MCGY,sBAAsB,CAAA;AAVnC,IAAA,WAAA,GAAA;QAaS,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACxB,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC7B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QAExB,IAAA,CAAA,IAAI,GAAG,MAAM,EAAQ;AAChC,IAAA;8GARY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,unBCfnC,goBAoBM,EAAA,MAAA,EAAA,CAAA,mgBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,qLACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKN,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,YAAY;wBACZ,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,goBAAA,EAAA,MAAA,EAAA,CAAA,mgBAAA,CAAA,EAAA;8BAKQ,MAAM,EAAA,CAAA;sBAAd;;;MEWU,qBAAqB,CAAA;AArBlC,IAAA,WAAA,GAAA;AAsBS,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;QAElC,IAAA,CAAA,YAAY,GAAW,EAAE;AAiBpC,IAAA;IAfQ,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,iBAAiB,EAAE;YAC7C,IAAI,OAAQ,IAAI,CAAC,KAAK,EAAwB,CAAC,KAAK,KAAK,QAAQ,EAAE;gBACjE,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,KAAK,EAAwB,CAAC,KAAK;YAC/D;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC,KAAK,EAAwB,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC5E,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,KAAK,EAAwB,CAAC,KAAK,CAAC,OAAO;YACvE;iBAAO;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,eAAe;YACrC;QACF;aAAO,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,QAAQ,EAAE;AAC3C,YAAA,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,KAAK,EAAa;QAC9C;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,eAAe;QACrC;IACF;8GAnBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBtB,CAAA,2EAAA,CAA6E,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFrF,mBAAmB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAkBV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EACpB;wBACP;AACD,qBAAA,EAAA,QAAA,EACS,CAAA,2EAAA,CAA6E,EAAA,MAAA,EAAA,CAAA,0MAAA,CAAA,EAAA;;;MCuC5E,kBAAkB,CAAA;AAS7B,IAAA,WAAA,GAAA;AARO,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,8CAAU;QAE3B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAkB;QAEjC,IAAA,CAAA,UAAU,GAAc,IAAI,SAAS,CAAC;AAC9C,YAAA,MAAM,EAAE,IAAI,WAAW,CAAC,EAAE;AAC3B,SAAA,CAAC;QAGA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY;AACzC,YAAA,IAAI,CACF,YAAY,CAAC,IAAI,CAAC,EAClB,oBAAoB,EAAE,CACvB,CAAC,SAAS,CAAC,CAAC,UAA0B,KAAI;AACzC,YAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,gBAAA,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE;YAChC;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9B,QAAA,CAAC,CAAC;IACN;8GArBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3CnB,CAAA;;;;;;CAMX,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAiCG,aAAa,qLACb,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA7C9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,QAAA,EAChB,CAAA;;;;;;CAMX,EAAA,OAAA,EAgCU;wBACP,aAAa;wBACb;AACD,qBAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA;;;MCnCU,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;AASS,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAW;QACpC,IAAA,CAAA,IAAI,GAAG,MAAM,EAAa;QAEvB,IAAA,CAAA,SAAS,GAAc,MAAM;AAaxC,IAAA;IAXW,WAAW,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM;QACzB;AAAO,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM;QACzB;QAEA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAChC;8GAhBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbrC,gOAMM,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEF,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKJ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB;wBACP,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,gOAAA,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA;;;MEyCU,cAAc,CAAA;AAb3B,IAAA,WAAA,GAAA;AAcS,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAa;QAEjC,IAAA,CAAA,MAAM,GAAG,MAAM,EAAiB;AAEnC,QAAA,IAAA,CAAA,eAAe,GAAG,SAAS,CAAC,QAAQ,CAA6B,iBAAiB,CAAC;QAEnF,IAAA,CAAA,gBAAgB,GAAW,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,eAAe,GAAgB,IAAI,GAAG,EAAU;QAC7C,IAAA,CAAA,aAAa,GAAW,CAAC,CAAC;QAC1B,IAAA,CAAA,iBAAiB,GAAW,CAAC,CAAC;AAqFzC,IAAA;IAnFW,QAAQ,CAAC,GAAM,EAAE,IAAa,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU;AAAE,YAAA,OAAO,EAAE;QAExC,MAAM,OAAO,GAAa,EAAE;QAC5B,KAAK,IAAI,IAAI,IAAK,IAAI,CAAC,MAAM,EAAE,CAAC,UAA6B,EAAE;YAC7D,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AAC7B,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9B;QACF;AAEA,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B;AAEU,IAAA,IAAI,CAAC,KAAuB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE;AAC3B,YAAA,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;AAC5E,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9G;IACF;IAEU,QAAQ,GAAA;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,EAAE;YACvF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC1C;IACF;AAEU,IAAA,UAAU,CAAC,KAAY,EAAE,GAAM,EAAE,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,KAAK,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,KAAK;AACpE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,MAAM,EAAE,UAAU;YAClB,GAAG;YACH,KAAK;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5E;AACD,SAAA,CAAC;IACJ;AAEU,IAAA,YAAY,CAAC,MAAc,EAAE,GAAM,EAAE,KAAa,EAAA;AAC1D,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,GAAG;YACH,KAAK;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK;AAC5E,SAAA,CAAC;IACJ;IAEU,kBAAkB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM;IAChE;AAEU,IAAA,eAAe,CAAC,KAAwB,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3E;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe;AACvC,SAAA,CAAC;IACJ;AAEU,IAAA,kBAAkB,CAAC,KAAa,EAAA;QACxC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,cAAc,KAAK,UAAU,EAAE;YAC/C,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;YACjC;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,MAAM,EAAE,WAAW;gBACnB,KAAK;AACL,gBAAA,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe;AACvC,aAAA,CAAC;QACJ;IACF;IAEU,UAAU,CAAC,IAAa,EAAE,SAAoB,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACvD;8GA9FW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClD3B,q0MA6JA,EAAA,MAAA,EAAA,CAAA,i1CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnHI,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,cAAc,moCACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGR,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EAGZ;wBACP,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,wBAAwB;wBACxB,cAAc;wBACd;AACD,qBAAA,EAAA,QAAA,EAAA,q0MAAA,EAAA,MAAA,EAAA,CAAA,i1CAAA,CAAA,EAAA;;;ME1CU,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AASrD,IAAA;AAPQ,IAAA,UAAU,CAAC,YAAqB,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;IACxC;IAEO,SAAS,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IACvC;8GAVW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCSY,qBAAqB,CAAA;AATlC,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdlC,4GAIC,EAAA,MAAA,EAAA,CAAA,0JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKG,wBAAwB,gOADxB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAMA,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EACpB;wBACP,SAAS;wBACT;AACD,qBAAA,EAAA,QAAA,EAAA,4GAAA,EAAA,MAAA,EAAA,CAAA,0JAAA,CAAA,EAAA;;;MEHU,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAqB;AAChD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAKjD,IAAA;AAHQ,IAAA,SAAS,CAAC,KAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;8GANW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACNM,MAAM,iBAAiB,GAAoC;AAChE,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,GAAG,EAAE,+BAA+B;AACpC,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,GAAG,EAAE,iBAAiB;AACtB,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,GAAG,EAAE,oBAAoB;AACzB,IAAA,GAAG,EAAE,oBAAoB;AACzB,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,oBAAoB;AACzB,IAAA,GAAG,EAAE,gBAAgB;AACrB,IAAA,GAAG,EAAE,+BAA+B;AACpC,IAAA,GAAG,EAAE,iBAAiB;AACtB,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,iBAAiB;AACtB,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,GAAG,EAAE,wBAAwB;AAC7B,IAAA,GAAG,EAAE,uBAAuB;AAC5B,IAAA,GAAG,EAAE,oBAAoB;AACzB,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAE,sBAAsB;AAC3B,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,GAAG,EAAE,uBAAuB;AAC5B,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,iCAAiC;AACtC,IAAA,GAAG,EAAE,+BAA+B;AACpC,IAAA,GAAG,EAAE,uBAAuB;AAC5B,IAAA,GAAG,EAAE,iBAAiB;AACtB,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAE,iBAAiB;AACtB,IAAA,GAAG,EAAE,4BAA4B;AACjC,IAAA,GAAG,EAAE,yBAAyB;AAC9B,IAAA,GAAG,EAAE,sBAAsB;AAC3B,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,GAAG,EAAE;CACN;AAEM,MAAM,iBAAiB,GAAW;AACvC,IAAA,OAAO,EAAE;AACP,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,iBAAiB,EAAE,IAAI;AACxB,KAAA;AACD,IAAA,YAAY,EAAE;CACf;AAEM,MAAM,mBAAmB,GAAW;AACzC,IAAA,YAAY,EAAE;CACf;AAEM,MAAM,iBAAiB,GAAW;AACvC,IAAA,OAAO,EAAE;AACP,QAAA,cAAc,EAAE,0BAA0B;AAC1C,QAAA,iBAAiB,EAAE,IAAI;AACxB,KAAA;AACD,IAAA,YAAY,EAAE,MAAM;CACrB;AAEM,MAAM,kBAAkB,GAAW;AACxC,IAAA,OAAO,EAAE;AACP,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,cAAc,EAAE,MAAM;AACvB,KAAA;AACD,IAAA,YAAY,EAAE,MAAM;CACrB;AAEM,MAAM,+BAA+B,GAAW;AACrD,IAAA,OAAO,EAAE;AACP,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,iBAAiB,EAAE,MAAM;AAC1B,KAAA;AACD,IAAA,YAAY,EAAE;CACf;;MCtFY,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAA4C,KAAwB,EAAA;QAAxB,IAAA,CAAA,KAAK,GAAL,KAAK;QAFvC,IAAA,CAAA,eAAe,GAAG,iBAAiB;IAE2B;AAH7D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAGV,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAHxB,IAAA,SAAA,IAAA,CAAA,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,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBhC,0aAYqB,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFjB,sBAAsB,2IACtB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKZ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB;wBACP,sBAAsB;wBACtB;AACD,qBAAA,EAAA,QAAA,EAAA,0aAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA;;0BAOY,MAAM;2BAAC,eAAe;;;MEFxB,qBAAqB,CAAA;AAKhC,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAGhC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAsB,KAAI;AAC5D,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QACrB,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,SAAS,CAAC,KAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACpC,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,IAAI,kBAAkB,EAAE;AACzC,SAAA,CAAC;IACJ;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;IACrC;8GA1BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBlC,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDcI,eAAe,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGN,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EAGpB;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA;;;AEfH;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ferhaps-easy-ui-lib.mjs","sources":["../../../projects/ui-lib/src/lib/pipes/snake-case-parser.pipe.ts","../../../projects/ui-lib/src/lib/directives/fields-match-validator.directive.ts","../../../projects/ui-lib/src/lib/directives/phone-validation.directive.ts","../../../projects/ui-lib/src/lib/directives/password-validator.directive.ts","../../../projects/ui-lib/src/lib/components/default-dialog/default-dialog.component.ts","../../../projects/ui-lib/src/lib/components/default-dialog/default-dialog.component.html","../../../projects/ui-lib/src/lib/components/error-dispaly.component.ts","../../../projects/ui-lib/src/lib/components/search-bar.component.ts","../../../projects/ui-lib/src/lib/components/table-sort-header/table-sort-header.component.ts","../../../projects/ui-lib/src/lib/components/table-sort-header/table-sort-header.component.html","../../../projects/ui-lib/src/lib/components/table/table.component.ts","../../../projects/ui-lib/src/lib/components/table/table.component.html","../../../projects/ui-lib/src/lib/services/loader.service.ts","../../../projects/ui-lib/src/lib/components/global-loader/global-loader.component.ts","../../../projects/ui-lib/src/lib/components/global-loader/global-loader.component.html","../../../projects/ui-lib/src/lib/services/error.service.ts","../../../projects/ui-lib/src/lib/utils/utils.ts","../../../projects/ui-lib/src/lib/components/error-handler/error-popup/error-popup.component.ts","../../../projects/ui-lib/src/lib/components/error-handler/error-popup/error-popup.component.html","../../../projects/ui-lib/src/lib/components/error-handler/error-handler.component.ts","../../../projects/ui-lib/src/lib/components/error-handler/error-handler.component.html","../../../projects/ui-lib/src/public-api.ts","../../../projects/ui-lib/src/ferhaps-easy-ui-lib.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'snakeCaseParser',\r\n})\r\nexport class SnakeCaseParserPipe implements PipeTransform {\r\n public transform(value: unknown): string {\r\n if (typeof value === 'string') {\r\n let temp = value.replaceAll('_', ' ');\r\n temp = temp.charAt(0).toUpperCase() + temp.slice(1).toLowerCase();\r\n return temp;\r\n }\r\n\r\n return String(value);\r\n }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[libFieldsMatchValidator]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: FieldsMatchValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FieldsMatchValidatorDirective implements Validator {\r\n public fieldToMatch = input.required<string>();\r\n\r\n public validate(control: AbstractControl): { [key: string]: any } | null {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const matchingControl = control.root.get(this.fieldToMatch());\r\n if (!matchingControl) {\r\n return null;\r\n }\r\n\r\n if (value !== matchingControl.value) {\r\n return { mismatch: true };\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libPhoneValidation]',\r\n})\r\nexport class PhoneValidationDirective {\r\n @HostListener('input', ['$event']) public onInput(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n \r\n if (!input.value.includes('+')) {\r\n input.value = `+${input.value}`;\r\n }\r\n \r\n // Only allow digits and plus sign\r\n const regex = /^[0-9+]*$/;\r\n if (!regex.test(input.value)) {\r\n input.value = input.value.replace(/[^0-9+]/g, '');\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event']) public onKeyDown(event: KeyboardEvent): void {\r\n const inputValue = (event.target as HTMLInputElement).value;\r\n if (event.key === 'Backspace' && inputValue === '+') {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[libPasswordValidator]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: PasswordValidatorDirective,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class PasswordValidatorDirective implements Validator {\r\n public validate(control: AbstractControl): ValidationErrors | null {\r\n const password = control.value;\r\n\r\n // At least one uppercase letter, one lowercase letter, one digit, one special character, and minimum eight characters long\r\n const pattern = /^(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#\\$%\\^&\\*])(?=.*\\d).{8,}$/\r\n\r\n if (password && !pattern.test(password)) {\r\n return { passwordInvalid: true };\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Component, Input, input, output, TemplateRef } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-default-dialog',\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatDialogModule\r\n ],\r\n templateUrl: './default-dialog.component.html',\r\n styleUrls: ['./default-dialog.component.scss']\r\n})\r\nexport class DefaultDialogComponent {\r\n @Input() temRef!: TemplateRef<any>;\r\n \r\n public height = input<string>();\r\n public dialogTitle = input<string>();\r\n public withBack = input<boolean>();\r\n\r\n protected back = output<void>();\r\n}\r\n","<div class=\"modal\" [style]=\"{ 'height': height() }\">\r\n <div class=\"dialog-title\">\r\n @if (withBack()) {\r\n <div class=\"back-arrow\" (click)=\"back.emit()\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n }\r\n\r\n <h4 class=\"title\">{{ dialogTitle() }}</h4>\r\n\r\n <div class=\"closer\" mat-dialog-close>\r\n <mat-icon>close</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <ng-content select=\".dialog-content\" />\r\n <ng-template #tempBody />\r\n <ng-container *ngTemplateOutlet=\"temRef ? temRef: tempBody\" />\r\n </div>\r\n</div>","import { Component, input, OnInit } from '@angular/core';\r\n\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { SnakeCaseParserPipe } from '../pipes/snake-case-parser.pipe';\r\nimport { SystemError } from '../utils/types';\r\n\r\n@Component({\r\n selector: 'lib-error-dispaly',\r\n imports: [\r\n SnakeCaseParserPipe\r\n ],\r\n template: `<strong class=\"err-container\">{{ displayError | snakeCaseParser }}</strong>`,\r\n styles: [`\r\n .err-container {\r\n display: block;\r\n max-width: 300px;\r\n font-size: 20px;\r\n text-align: center;\r\n border: 1px solid red;\r\n border-radius: 5px;\r\n padding: 0.5rem 1.5rem;\r\n background-color: #ffe6e6;\r\n color: #ff0000;\r\n overflow-wrap: break-word;\r\n }\r\n`]\r\n})\r\nexport class ErrorDispalyComponent implements OnInit {\r\n public error = input.required<SystemError>();\r\n\r\n protected displayError: string = '';\r\n\r\n public ngOnInit(): void {\r\n if (this.error() instanceof HttpErrorResponse) {\r\n if (typeof (this.error() as HttpErrorResponse).error === 'string') {\r\n this.displayError = (this.error() as HttpErrorResponse).error;\r\n } else if (this.error && (this.error() as HttpErrorResponse)?.error?.message) {\r\n this.displayError = (this.error() as HttpErrorResponse).error.message;\r\n } else {\r\n this.displayError = 'Unknown error';\r\n }\r\n } else if (typeof this.error() === 'string') {\r\n this.displayError = (this.error() as string);\r\n } else {\r\n this.displayError = 'Unknown error';\r\n }\r\n }\r\n}\r\n","import { Component, output, input } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-search-bar',\r\n template: `\r\n <form class=\"search-bar\" [formGroup]=\"searchForm\">\r\n <mat-icon>search</mat-icon>\r\n <input class=\"search-input\" type=\"search\" name=\"field\"\r\n [placeholder]=\"'Search ' + for()\" autocomplete=\"off\" formControlName=\"search\" />\r\n </form>\r\n`,\r\n styles: [`\r\n .search-bar {\r\n width: 270px;\r\n border: 1px solid #A4A4A4;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .search-input {\r\n border: none;\r\n padding: 7px 11px;\r\n height: 100%;\r\n width: 100%;\r\n background-color: transparent;\r\n }\r\n\r\n mat-icon {\r\n margin-inline: 8px;\r\n }\r\n\r\n .search-input:focus {\r\n border: none;\r\n outline: none;\r\n }\r\n\r\n @media (max-width: 1086px) {\r\n .search-bar {\r\n width: 170px;\r\n }\r\n }\r\n`],\r\n imports: [\r\n MatIconModule,\r\n ReactiveFormsModule\r\n ]\r\n})\r\nexport class SearchBarComponent {\r\n public for = input.required<string>();\r\n\r\n protected search = output<string | Event>();\r\n\r\n protected searchForm: FormGroup = new FormGroup({\r\n search: new FormControl('')\r\n });\r\n\r\n constructor() {\r\n this.searchForm.get('search')?.valueChanges.\r\n pipe(\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n ).subscribe((searchTerm: string | Event) => {\r\n if (typeof searchTerm === 'string') {\r\n searchTerm = searchTerm.trim();\r\n }\r\n \r\n this.search.emit(searchTerm);\r\n });\r\n }\r\n}","import { Component, input, output } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type SortState = 'none' | 'asc' | 'desc';\r\n\r\n@Component({\r\n selector: 'lib-table-sort-header',\r\n imports: [\r\n MatIconModule,\r\n ],\r\n templateUrl: './table-sort-header.component.html',\r\n styleUrls: ['./table-sort-header.component.scss']\r\n})\r\nexport class TableSortHeaderComponent {\r\n public selected = input.required<boolean>();\r\n public sort = output<SortState>();\r\n\r\n protected sortState: SortState = 'none';\r\n\r\n protected onSortClick(): void {\r\n if (this.sortState === 'none') {\r\n this.sortState = 'desc';\r\n } else if (this.sortState === 'desc') {\r\n this.sortState = 'asc';\r\n } else {\r\n this.sortState = 'none';\r\n }\r\n\r\n this.sort.emit(this.sortState);\r\n }\r\n}\r\n","<div class=\"sorting-container\" (click)=\"onSortClick()\">\r\n <mat-icon\r\n [class.selected]=\"selected() && sortState != 'none'\"\r\n [class.rotated]=\"sortState == 'asc'\">\r\n sort\r\n </mat-icon>\r\n</div>","import { Component, ElementRef, input, output, viewChild } from '@angular/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SortState, TableSortHeaderComponent } from '../table-sort-header/table-sort-header.component';\r\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\r\n\r\nexport type TableEvent<T = any> = {\r\n action: 'rowClick' | 'rowSelect' | 'drag' | 'scrolled' | 'sort' | 'add' | string;\r\n obj?: T;\r\n prop?: keyof T;\r\n index?: number;\r\n selected?: boolean;\r\n selectedRows?: number[];\r\n sortState?: SortState;\r\n event?: Event;\r\n};\r\n\r\nexport type Config<T = any> = {\r\n data: T[];\r\n title: string;\r\n dataProps: (keyof T)[];\r\n tableHeadings: string[];\r\n options?: string[];\r\n withAdd?: boolean;\r\n selectableRows?: 'single' | 'multiple';\r\n sortable?: boolean;\r\n draggable?: boolean;\r\n classRules?: ClassRule<T>[];\r\n};\r\n\r\nexport type ClassRule<T = any> = {\r\n className: string;\r\n condition: (obj: T, prop: keyof T) => boolean;\r\n};\r\n\r\n@Component({\r\n selector: 'lib-table',\r\n templateUrl: 'table.component.html',\r\n styleUrls: ['table.component.scss'],\r\n imports: [\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TableSortHeaderComponent,\r\n DragDropModule,\r\n MatCheckboxModule\r\n ]\r\n})\r\nexport class TableComponent<T = any> {\r\n public config = input.required<Config<T>>();\r\n\r\n protected action = output<TableEvent<T>>();\r\n\r\n protected scrollContainer = viewChild.required<ElementRef<HTMLDivElement>>('scrollContainer');\r\n\r\n public selectedRowIndex: number = -1;\r\n public selectedIndices: Set<number> = new Set<number>();\r\n protected hoverRowIndex: number = -1;\r\n protected currentSortColumn: number = -1;\r\n\r\n protected getClass(obj: T, prop: keyof T): string {\r\n if (!this.config().classRules) return '';\r\n\r\n const classes: string[] = [];\r\n for (let rule of (this.config().classRules as ClassRule<T>[])) {\r\n if (rule.condition(obj, prop)) {\r\n classes.push(rule.className);\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n protected drop(event: CdkDragDrop<T[]>) {\r\n if (this.config().draggable) {\r\n moveItemInArray(this.config().data, event.previousIndex, event.currentIndex);\r\n this.action.emit({ action: 'drag', obj: this.config().data[event.currentIndex], index: event.currentIndex });\r\n }\r\n }\r\n\r\n protected onScroll(e: Event): void {\r\n const container = this.scrollContainer().nativeElement;\r\n this.action.emit({ action: 'scroll', event: e });\r\n if ((Math.ceil(container.scrollTop) + container.offsetHeight) >= container.scrollHeight) {\r\n this.action.emit({ action: 'scrolled' });\r\n }\r\n }\r\n\r\n protected onRowClick(event: Event, obj: T, index: number): void {\r\n this.selectedRowIndex = index === this.selectedRowIndex ? -1 : index;\r\n this.action.emit({\r\n action: 'rowClick',\r\n obj,\r\n index,\r\n selected: this.selectedRowIndex === index || this.selectedIndices.has(index),\r\n event\r\n });\r\n }\r\n\r\n protected selectOption(оption: string, obj: T, index: number): void {\r\n this.action.emit({\r\n action: оption.toLowerCase(),\r\n obj,\r\n index,\r\n selected: this.selectedRowIndex === index || this.selectedIndices.has(index)\r\n });\r\n }\r\n\r\n protected areAllRowsSelected(): boolean {\r\n return this.selectedIndices.size === this.config().data.length;\r\n }\r\n\r\n protected toggleSelectAll(event: MatCheckboxChange): void {\r\n if (event.checked) {\r\n this.config().data.forEach((_, index) => this.selectedIndices.add(index));\r\n } else {\r\n this.selectedIndices.clear();\r\n }\r\n\r\n this.action.emit({\r\n action: 'rowSelect',\r\n selectedRows: [...this.selectedIndices]\r\n });\r\n }\r\n\r\n protected toggleRowSelection(index: number): void {\r\n if (this.config().selectableRows === 'multiple') {\r\n if (this.selectedIndices.has(index)) {\r\n this.selectedIndices.delete(index);\r\n } else {\r\n this.selectedIndices.add(index);\r\n }\r\n \r\n this.action.emit({\r\n action: 'rowSelect',\r\n index,\r\n selectedRows: [...this.selectedIndices]\r\n });\r\n }\r\n }\r\n\r\n protected sortByProp(prop: keyof T, sortState: SortState): void {\r\n this.action.emit({ action: 'sort', prop, sortState });\r\n }\r\n}\r\n","<div class=\"flexer\">\r\n @if (config().title) {\r\n <div class=\"row-heading-labels mb05\">{{ config().title }}</div>\r\n }\r\n\r\n <ng-content select=\".upper-part\" />\r\n\r\n @if (config().withAdd) {\r\n <div class=\"flexer action pointer gap05 mb05\" (click)=\"action.emit({action: 'add'})\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <div>add</div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"scroll\" #scrollContainer (scroll)=\"onScroll($event)\" [class.with-checkboxes]=\"config().selectableRows === 'multiple'\">\r\n <table [class.with-options]=\"config().options?.length\">\r\n <thead>\r\n @if (config().tableHeadings.length > 0) {\r\n <tr>\r\n @if (config().selectableRows === 'multiple') {\r\n <th class=\"box-cell\">\r\n <mat-checkbox\r\n (change)=\"toggleSelectAll($event)\"\r\n [checked]=\"areAllRowsSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n }\r\n\r\n @for (heading of config().tableHeadings; track heading; let i = $index) {\r\n <th>\r\n <div class=\"flexer gap05\">\r\n {{ heading }}\r\n @if (config().sortable && !config().draggable) {\r\n <lib-table-sort-header\r\n [selected]=\"currentSortColumn === i\"\r\n (click)=\"currentSortColumn = i\"\r\n (sort)=\"sortByProp(config().dataProps[i], $event)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n\r\n @if (config().options?.length) {\r\n <th></th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-content select=\".custom-headers\" />\r\n }\r\n </thead>\r\n @if (config().draggable) {\r\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n cdkDrag cdkDragLockAxis=\"y\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td\r\n [class.dragCol]=\"cellIndex === 0\">\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\"\r\n [class.flexer]=\"cellIndex === 0\">\r\n @if (cellIndex === 0) {\r\n <mat-icon class=\"draggable\" cdkDragHandle>\r\n drag_indicator\r\n </mat-icon>\r\n }\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n } @else {\r\n <tbody>\r\n @for (obj of config().data; let i = $index; track i;) {\r\n <tr\r\n (mouseover)=\"hoverRowIndex = i\"\r\n (mouseleave)=\"hoverRowIndex = -1\"\r\n [class.pointer]=\"config().selectableRows\"\r\n [class.hover-row]=\"hoverRowIndex == i\"\r\n [class.selected-row]=\"(config().selectableRows === 'single' && selectedRowIndex == i) ||\r\n (config().selectableRows === 'multiple' && selectedIndices.has(i))\"\r\n (click)=\"onRowClick($event, obj, i)\">\r\n @if (config().selectableRows === 'multiple') {\r\n <td>\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n [checked]=\"selectedIndices.has(i)\"\r\n (change)=\"toggleRowSelection(i)\">\r\n </mat-checkbox>\r\n </td>\r\n }\r\n\r\n @for (prop of config().dataProps; track prop; let cellIndex = $index) {\r\n <td>\r\n <div class=\"data\" [classList]=\"getClass(obj, prop)\">\r\n {{ obj[prop] || '-' }}\r\n </div>\r\n </td>\r\n }\r\n @if (config().options?.length) {\r\n <td class=\"right-align\" (click)=\"$event.stopPropagation()\">\r\n <button mat-icon-button class=\"pointer dots right\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n @for (option of config().options; track option) {\r\n <div\r\n mat-menu-item (click)=\"selectOption(option, obj, i)\"\r\n [class.red]=\"option == 'Remove' || option == 'Delete'\">\r\n {{ option }}\r\n </div>\r\n }\r\n </mat-menu>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n </table>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n private loadingSubject = new BehaviorSubject<boolean>(false);\r\n public loading$ = this.loadingSubject.asObservable();\r\n\r\n public setLoading(loadingState: boolean) {\r\n this.loadingSubject.next(loadingState);\r\n }\r\n\r\n public isLoading(): boolean {\r\n return this.loadingSubject.getValue();\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-global-loader',\r\n imports: [\r\n AsyncPipe,\r\n MatProgressSpinnerModule\r\n ],\r\n templateUrl: './global-loader.component.html',\r\n styleUrl: './global-loader.component.scss'\r\n})\r\nexport class GlobalLoaderComponent {\r\n protected loaderService = inject(LoaderService);\r\n}\r\n","@if (loaderService.loading$ | async) {\r\n <div class=\"loader\">\r\n <mat-spinner />\r\n </div>\r\n}","import { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorService {\r\n private errorSubject = new Subject<HttpErrorResponse>();\r\n public error$ = this.errorSubject.asObservable();\r\n\r\n public sendError(error: HttpErrorResponse) {\r\n this.errorSubject.next(error);\r\n }\r\n}\r\n","export const HTTP_STATUS_CODES: Record<number | string, string> = {\r\n 100: 'Continue',\r\n 101: 'Switching Protocols',\r\n 102: 'Processing',\r\n 103: 'Early Hints',\r\n 200: 'OK',\r\n 201: 'Created',\r\n 202: 'Accepted',\r\n 203: 'Non-Authoritative Information',\r\n 204: 'No Content',\r\n 205: 'Reset Content',\r\n 206: 'Partial Content',\r\n 207: 'Multi-Status',\r\n 208: 'Already Reported',\r\n 226: 'IM Used',\r\n 300: 'Multiple Choices',\r\n 301: 'Moved Permanently',\r\n 302: 'Found',\r\n 303: 'See Other',\r\n 304: 'Not Modified',\r\n 305: 'Use Proxy',\r\n 306: '(Unused)',\r\n 307: 'Temporary Redirect',\r\n 308: 'Permanent Redirect',\r\n 400: 'Bad Request',\r\n 401: 'Unauthorized',\r\n 402: 'Payment Required',\r\n 403: 'Forbidden',\r\n 404: 'Not Found',\r\n 405: 'Method Not Allowed',\r\n 406: 'Not Acceptable',\r\n 407: 'Proxy Authentication Required',\r\n 408: 'Request Timeout',\r\n 409: 'Conflict',\r\n 410: 'Gone',\r\n 411: 'Length Required',\r\n 412: 'Precondition Failed',\r\n 413: 'Payload Too Large',\r\n 414: 'URI Too Long',\r\n 415: 'Unsupported Media Type',\r\n 416: 'Range Not Satisfiable',\r\n 417: 'Expectation Failed',\r\n 418: \"I'm a teapot\",\r\n 421: 'Misdirected Request',\r\n 422: 'Unprocessable Entity',\r\n 423: 'Locked',\r\n 424: 'Failed Dependency',\r\n 425: 'Too Early',\r\n 426: 'Upgrade Required',\r\n 428: 'Precondition Required',\r\n 429: 'Too Many Requests',\r\n 431: 'Request Header Fields Too Large',\r\n 451: 'Unavailable For Legal Reasons',\r\n 500: 'Internal Server Error',\r\n 501: 'Not Implemented',\r\n 502: 'Bad Gateway',\r\n 503: 'Service Unavailable',\r\n 504: 'Gateway Timeout',\r\n 505: 'HTTP Version Not Supported',\r\n 506: 'Variant Also Negotiates',\r\n 507: 'Insufficient Storage',\r\n 508: 'Loop Detected',\r\n 510: 'Not Extended',\r\n 511: 'Network Authentication Required'\r\n};\r\n\r\nexport const JSON_HTTP_OPTIONS: Object = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Accept-language': 'bg',\r\n },\r\n responseType: 'json'\r\n};\r\n\r\nexport const STRING_HTTP_OPTIONS: Object = {\r\n responseType: 'text'\r\n};\r\n\r\nexport const BLOB_HTTP_OPTIONS: Object = {\r\n headers: {\r\n 'Content-type': 'application/octet-stream',\r\n 'Accept-language': 'bg',\r\n },\r\n responseType: 'blob',\r\n};\r\n\r\nexport const SKIP_ERROR_OPTIONS: Object = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Accept-language': 'bg',\r\n 'X-Skip-Error': 'true',\r\n },\r\n responseType: 'json',\r\n};\r\n\r\nexport const JSON_OPTIONS_WITH_GLOBAL_LOADER: Object = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Accept-language': 'bg',\r\n 'X-Global-Loader': 'true',\r\n },\r\n responseType: 'json'\r\n};\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { DefaultDialogComponent } from '../../default-dialog/default-dialog.component';\r\nimport { ErrorDispalyComponent } from '../../error-dispaly.component';\r\nimport { HTTP_STATUS_CODES } from '../../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-error-popup',\r\n imports: [\r\n DefaultDialogComponent,\r\n ErrorDispalyComponent\r\n ],\r\n templateUrl: './error-popup.component.html',\r\n styleUrls: ['./error-popup.component.scss']\r\n})\r\nexport class ErrorPopupComponent {\r\n protected httpStatusCodes = HTTP_STATUS_CODES;\r\n \r\n constructor(@Inject(MAT_DIALOG_DATA) public error: HttpErrorResponse) { }\r\n}\r\n","<lib-default-dialog [dialogTitle]=\"'Аn error has occurred'\">\r\n <div class=\"dialog-content\">\r\n <div class=\"status-info\">\r\n <div>{{ error.status }}</div>\r\n @if (error.status) {\r\n <div>{{ httpStatusCodes[error.status] }}</div>\r\n }\r\n </div>\r\n <div class=\"error-info\">\r\n <lib-error-dispaly [error]=\"error\" />\r\n </div>\r\n </div>\r\n</lib-default-dialog>","import { OnDestroy, inject } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Component } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\r\nimport { ErrorPopupComponent } from './error-popup/error-popup.component';\r\nimport { NoopScrollStrategy } from '@angular/cdk/overlay';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'lib-error-handler',\r\n templateUrl: 'error-handler.component.html',\r\n styleUrls: ['error-handler.component.scss'],\r\n imports: [\r\n MatDialogModule\r\n ]\r\n})\r\nexport class ErrorHandlerComponent implements OnDestroy {\r\n private errSubscriptions = new Subscription();\r\n private errorService = inject(ErrorService);\r\n private dialog = inject(MatDialog);\r\n\r\n constructor() {\r\n this.errSubscriptions.add(\r\n this.errorService.error$.subscribe((err: HttpErrorResponse) => {\r\n console.log(err);\r\n this.showPopup(err);\r\n })\r\n );\r\n }\r\n\r\n private showPopup(error: HttpErrorResponse): void {\r\n this.dialog.closeAll();\r\n this.dialog.open(ErrorPopupComponent, {\r\n data: error,\r\n width: '400px',\r\n autoFocus: false,\r\n scrollStrategy: new NoopScrollStrategy(),\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.errSubscriptions.unsubscribe();\r\n }\r\n}\r\n","","/*\r\n * Public API Surface of ui-lib\r\n */\r\n\r\nexport * from './lib/pipes/snake-case-parser.pipe';\r\nexport * from './lib/directives/fields-match-validator.directive';\r\nexport * from './lib/directives/phone-validation.directive';\r\nexport * from './lib/directives/password-validator.directive';\r\nexport * from './lib/components/default-dialog/default-dialog.component';\r\nexport * from './lib/components/error-dispaly.component';\r\nexport * from './lib/components/search-bar.component';\r\nexport * from './lib/utils/types';\r\nexport * from './lib/components/table-sort-header/table-sort-header.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/global-loader/global-loader.component';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/error.service';\r\nexport * from './lib/components/error-handler/error-handler.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ferhaps/easy-ui-lib",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "21.0.3",
|
|
4
4
|
"description": "Angular UI components, directives and pipes library with Angular Material",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -21,23 +21,23 @@
|
|
|
21
21
|
"url": "https://github.com/Ferhaps/angular-ui-library"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@angular/common": "^
|
|
25
|
-
"@angular/core": "^
|
|
26
|
-
"@angular/material": "^
|
|
27
|
-
"@angular/cdk": "^
|
|
24
|
+
"@angular/common": "^21.0.2",
|
|
25
|
+
"@angular/core": "^21.0.2",
|
|
26
|
+
"@angular/material": "^21.0.2",
|
|
27
|
+
"@angular/cdk": "^21.0.2"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"tslib": "^2.3.0"
|
|
31
31
|
},
|
|
32
32
|
"sideEffects": false,
|
|
33
33
|
"module": "fesm2022/ferhaps-easy-ui-lib.mjs",
|
|
34
|
-
"typings": "
|
|
34
|
+
"typings": "types/ferhaps-easy-ui-lib.d.ts",
|
|
35
35
|
"exports": {
|
|
36
36
|
"./package.json": {
|
|
37
37
|
"default": "./package.json"
|
|
38
38
|
},
|
|
39
39
|
".": {
|
|
40
|
-
"types": "./
|
|
40
|
+
"types": "./types/ferhaps-easy-ui-lib.d.ts",
|
|
41
41
|
"default": "./fesm2022/ferhaps-easy-ui-lib.mjs"
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -22,7 +22,7 @@ declare class FieldsMatchValidatorDirective implements Validator {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
declare class PhoneValidationDirective {
|
|
25
|
-
onInput(event:
|
|
25
|
+
onInput(event: Event): void;
|
|
26
26
|
onKeyDown(event: KeyboardEvent): void;
|
|
27
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<PhoneValidationDirective, never>;
|
|
28
28
|
static ɵdir: i0.ɵɵDirectiveDeclaration<PhoneValidationDirective, "[libPhoneValidation]", never, {}, {}, never, never, true, never>;
|
|
@@ -102,14 +102,14 @@ type ClassRule<T = any> = {
|
|
|
102
102
|
declare class TableComponent<T = any> {
|
|
103
103
|
config: i0.InputSignal<Config<T>>;
|
|
104
104
|
protected action: i0.OutputEmitterRef<TableEvent<T>>;
|
|
105
|
-
scrollContainer: i0.Signal<ElementRef<HTMLDivElement>>;
|
|
105
|
+
protected scrollContainer: i0.Signal<ElementRef<HTMLDivElement>>;
|
|
106
106
|
selectedRowIndex: number;
|
|
107
107
|
selectedIndices: Set<number>;
|
|
108
108
|
protected hoverRowIndex: number;
|
|
109
109
|
protected currentSortColumn: number;
|
|
110
110
|
protected getClass(obj: T, prop: keyof T): string;
|
|
111
111
|
protected drop(event: CdkDragDrop<T[]>): void;
|
|
112
|
-
protected onScroll(): void;
|
|
112
|
+
protected onScroll(e: Event): void;
|
|
113
113
|
protected onRowClick(event: Event, obj: T, index: number): void;
|
|
114
114
|
protected selectOption(оption: string, obj: T, index: number): void;
|
|
115
115
|
protected areAllRowsSelected(): boolean;
|