keevo-components 1.8.34 → 1.8.36
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +24 -24
- package/esm2022/keevo-components.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-button.mjs +36 -36
- package/esm2022/lib/api/base-components/base-component-chart.mjs +92 -92
- package/esm2022/lib/api/base-components/base-component-crud-form.mjs +298 -298
- package/esm2022/lib/api/base-components/base-component-crud-list.mjs +78 -78
- package/esm2022/lib/api/base-components/base-component-crud.mjs +65 -65
- package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +31 -31
- package/esm2022/lib/api/base-components/base-component-dropdown.mjs +169 -169
- package/esm2022/lib/api/base-components/base-component-input.mjs +94 -94
- package/esm2022/lib/api/base-components/base-component-multi-select.mjs +130 -130
- package/esm2022/lib/api/base-components/base-component.mjs +51 -51
- package/esm2022/lib/api/components/chart/chart.config.mjs +2 -2
- package/esm2022/lib/api/components/chart/chart.model.mjs +2 -2
- package/esm2022/lib/api/components/chart/orchart.config.mjs +2 -2
- package/esm2022/lib/api/components/chart/orchart.item.mjs +2 -2
- package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +2 -2
- package/esm2022/lib/api/components/error/error.component.mjs +26 -26
- package/esm2022/lib/api/components/error/kverror.module.mjs +35 -35
- package/esm2022/lib/api/components/table/action-item.mjs +2 -2
- package/esm2022/lib/api/components/table/kv-menuitem.mjs +3 -3
- package/esm2022/lib/api/components/table/table-dropdown-control.mjs +2 -2
- package/esm2022/lib/api/components/table/table.config.column.mjs +2 -2
- package/esm2022/lib/api/components/table/table.config.mjs +2 -2
- package/esm2022/lib/api/components/table/table.paginate.mjs +9 -9
- package/esm2022/lib/api/components/table/tabledit.config.mjs +2 -2
- package/esm2022/lib/api/components/table/tableedit.config.column.mjs +2 -2
- package/esm2022/lib/api/helpers/component-providers.mjs +16 -16
- package/esm2022/lib/api/helpers/keevo-validators.mjs +72 -72
- package/esm2022/lib/api/helpers/translate-primeng.mjs +23 -23
- package/esm2022/lib/api/models/menu/menu.model.mjs +2 -2
- package/esm2022/lib/api/models/menu/menucompleto.model.mjs +2 -2
- package/esm2022/lib/api/models/menu/sistemamenu.model.mjs +2 -2
- package/esm2022/lib/api/modules/primeng.module.mjs +251 -251
- package/esm2022/lib/api/services/base.api.service.mjs +74 -74
- package/esm2022/lib/api/services/breadcrumbs.service.mjs +57 -57
- package/esm2022/lib/api/services/component.service.mjs +27 -27
- package/esm2022/lib/api/services/form.service.mjs +85 -85
- package/esm2022/lib/api/services/imagens.service.mjs +28 -28
- package/esm2022/lib/api/services/notification.service.mjs +67 -67
- package/esm2022/lib/api/services/object.service.mjs +39 -39
- package/esm2022/lib/avatar/avatar.component.mjs +78 -78
- package/esm2022/lib/avatar/kv-avatar.module.mjs +32 -32
- package/esm2022/lib/buttons/button-personalize/button-personalize.component.mjs +17 -17
- package/esm2022/lib/buttons/button-popup/button-popup.component.mjs +31 -31
- package/esm2022/lib/buttons/button-secondary/button-secondary.component.mjs +17 -17
- package/esm2022/lib/buttons/button-success/button-success.component.mjs +17 -17
- package/esm2022/lib/buttons/kvbutton.module.mjs +39 -39
- package/esm2022/lib/carousel/carousel.component.mjs +92 -92
- package/esm2022/lib/carousel/kv-carousel.module.mjs +28 -28
- package/esm2022/lib/chart/chart.component.mjs +145 -145
- package/esm2022/lib/chart/kvchart.module.mjs +32 -32
- package/esm2022/lib/directives/template/template.directive.mjs +24 -24
- package/esm2022/lib/inputs/check/check.component.mjs +26 -26
- package/esm2022/lib/inputs/dropdown/dropdown.component.mjs +37 -37
- package/esm2022/lib/inputs/editor/editor.component.mjs +88 -88
- package/esm2022/lib/inputs/input-calendar/input-calendar.component.mjs +89 -89
- package/esm2022/lib/inputs/input-mask/input-mask.component.mjs +29 -29
- package/esm2022/lib/inputs/input-number/input-number.component.mjs +59 -59
- package/esm2022/lib/inputs/input-password/input-password.component.mjs +33 -33
- package/esm2022/lib/inputs/input-text/input-text.component.mjs +21 -21
- package/esm2022/lib/inputs/input-text-checkbox/input-text-checkbox.component.mjs +41 -41
- package/esm2022/lib/inputs/input-textarea/input-textarea.component.mjs +43 -43
- package/esm2022/lib/inputs/input-time/input-time.component.mjs +24 -24
- package/esm2022/lib/inputs/kvinputs.module.mjs +108 -108
- package/esm2022/lib/inputs/multi-select/multi-select.component.mjs +44 -44
- package/esm2022/lib/inputs/radio-group/radio-group.component.mjs +53 -53
- package/esm2022/lib/inputs/switch/switch.component.mjs +34 -34
- package/esm2022/lib/keevo-components.module.mjs +144 -144
- package/esm2022/lib/label/label.component.mjs +14 -14
- package/esm2022/lib/label/label.module.mjs +23 -23
- package/esm2022/lib/loader/kvloader.module.mjs +28 -28
- package/esm2022/lib/loader/loader.component.mjs +17 -17
- package/esm2022/lib/loader/loader.service.mjs +29 -29
- package/esm2022/lib/login/kvlogin.module.mjs +47 -47
- package/esm2022/lib/login/login.component.mjs +52 -52
- package/esm2022/lib/menu/kvmenu.module.mjs +47 -43
- package/esm2022/lib/menu/menu.component.mjs +188 -215
- package/esm2022/lib/modal/kv-modal.module.mjs +31 -31
- package/esm2022/lib/modal/modal.component.mjs +67 -60
- package/esm2022/lib/orgchart/orgchart.component.mjs +100 -100
- package/esm2022/lib/orgchart/orgchart.module.mjs +24 -24
- package/esm2022/lib/page-form/kv-page-form.module.mjs +38 -38
- package/esm2022/lib/page-form/page-form.component.mjs +147 -147
- package/esm2022/lib/picklist/kvpicklist.module.mjs +32 -32
- package/esm2022/lib/picklist/picklist.component.mjs +48 -48
- package/esm2022/lib/pipes/codigofile.pipe.mjs +19 -19
- package/esm2022/lib/pipes/cpfcnpj.pipe.mjs +25 -25
- package/esm2022/lib/pipes/pipes.module.mjs +34 -34
- package/esm2022/lib/pipes/telefone.pipe.mjs +45 -45
- package/esm2022/lib/progress-bar/kv-progress-bar.module.mjs +28 -28
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +58 -58
- package/esm2022/lib/table/kvtable.module.mjs +36 -36
- package/esm2022/lib/table/table.component.mjs +554 -554
- package/esm2022/lib/table-edit/table-edit.component.mjs +564 -502
- package/esm2022/lib/table-edit/table-edit.module.mjs +31 -31
- package/esm2022/lib/tree-table/kv-treetable.component.mjs +371 -371
- package/esm2022/lib/tree-table/kv-treetable.module.mjs +32 -32
- package/esm2022/lib/tree-view/kvtree-view.module.mjs +28 -28
- package/esm2022/lib/tree-view/tree-view.component.mjs +30 -30
- package/esm2022/lib/treetable/treetable.component.mjs +215 -215
- package/esm2022/lib/treetable/treetable.module.mjs +28 -28
- package/esm2022/lib/workspace/kvworkspace.module.mjs +51 -51
- package/esm2022/lib/workspace/workspace.component.mjs +178 -178
- package/esm2022/public-api.mjs +165 -165
- package/fesm2022/keevo-components.mjs +5744 -5697
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/api/base-components/base-component-button.d.ts +14 -14
- package/lib/api/base-components/base-component-chart.d.ts +40 -40
- package/lib/api/base-components/base-component-crud-form.d.ts +145 -145
- package/lib/api/base-components/base-component-crud-list.d.ts +63 -63
- package/lib/api/base-components/base-component-crud.d.ts +36 -36
- package/lib/api/base-components/base-component-dropdown-external.d.ts +15 -15
- package/lib/api/base-components/base-component-dropdown.d.ts +44 -44
- package/lib/api/base-components/base-component-input.d.ts +31 -31
- package/lib/api/base-components/base-component-multi-select.d.ts +35 -35
- package/lib/api/base-components/base-component.d.ts +22 -22
- package/lib/api/components/chart/chart.config.d.ts +11 -11
- package/lib/api/components/chart/chart.model.d.ts +9 -9
- package/lib/api/components/chart/orchart.config.d.ts +35 -35
- package/lib/api/components/chart/orchart.item.d.ts +26 -26
- package/lib/api/components/dropdown/filtro.combo.d.ts +4 -4
- package/lib/api/components/error/error.component.d.ts +12 -12
- package/lib/api/components/error/kverror.module.d.ts +10 -10
- package/lib/api/components/table/action-item.d.ts +9 -8
- package/lib/api/components/table/kv-menuitem.d.ts +10 -10
- package/lib/api/components/table/table-dropdown-control.d.ts +6 -6
- package/lib/api/components/table/table.config.column.d.ts +25 -25
- package/lib/api/components/table/table.config.d.ts +19 -19
- package/lib/api/components/table/table.paginate.d.ts +6 -6
- package/lib/api/components/table/tabledit.config.d.ts +8 -6
- package/lib/api/components/table/tableedit.config.column.d.ts +9 -9
- package/lib/api/helpers/component-providers.d.ts +2 -2
- package/lib/api/helpers/keevo-validators.d.ts +11 -11
- package/lib/api/helpers/translate-primeng.d.ts +4 -4
- package/lib/api/models/menu/menu.model.d.ts +10 -10
- package/lib/api/models/menu/menucompleto.model.d.ts +6 -6
- package/lib/api/models/menu/sistemamenu.model.d.ts +8 -8
- package/lib/api/modules/primeng.module.d.ts +61 -61
- package/lib/api/services/base.api.service.d.ts +25 -25
- package/lib/api/services/breadcrumbs.service.d.ts +16 -16
- package/lib/api/services/component.service.d.ts +11 -11
- package/lib/api/services/form.service.d.ts +28 -28
- package/lib/api/services/imagens.service.d.ts +10 -10
- package/lib/api/services/notification.service.d.ts +25 -25
- package/lib/api/services/object.service.d.ts +9 -9
- package/lib/avatar/avatar.component.d.ts +22 -22
- package/lib/avatar/kv-avatar.module.d.ts +10 -10
- package/lib/buttons/button-personalize/button-personalize.component.d.ts +7 -7
- package/lib/buttons/button-popup/button-popup.component.d.ts +13 -13
- package/lib/buttons/button-secondary/button-secondary.component.d.ts +7 -7
- package/lib/buttons/button-success/button-success.component.d.ts +7 -7
- package/lib/buttons/kvbutton.module.d.ts +11 -11
- package/lib/carousel/carousel.component.d.ts +16 -16
- package/lib/carousel/kv-carousel.module.d.ts +9 -9
- package/lib/chart/chart.component.d.ts +56 -56
- package/lib/chart/kvchart.module.d.ts +10 -10
- package/lib/directives/template/template.directive.d.ts +11 -11
- package/lib/inputs/check/check.component.d.ts +11 -11
- package/lib/inputs/dropdown/dropdown.component.d.ts +14 -14
- package/lib/inputs/editor/editor.component.d.ts +36 -36
- package/lib/inputs/input-calendar/input-calendar.component.d.ts +27 -27
- package/lib/inputs/input-mask/input-mask.component.d.ts +12 -12
- package/lib/inputs/input-number/input-number.component.d.ts +19 -19
- package/lib/inputs/input-password/input-password.component.d.ts +13 -13
- package/lib/inputs/input-text/input-text.component.d.ts +9 -9
- package/lib/inputs/input-text-checkbox/input-text-checkbox.component.d.ts +16 -16
- package/lib/inputs/input-textarea/input-textarea.component.d.ts +16 -16
- package/lib/inputs/input-time/input-time.component.d.ts +10 -10
- package/lib/inputs/kvinputs.module.d.ts +25 -25
- package/lib/inputs/multi-select/multi-select.component.d.ts +15 -15
- package/lib/inputs/radio-group/radio-group.component.d.ts +18 -18
- package/lib/inputs/switch/switch.component.d.ts +14 -14
- package/lib/keevo-components.module.d.ts +25 -25
- package/lib/label/label.component.d.ts +7 -7
- package/lib/label/label.module.d.ts +8 -8
- package/lib/loader/kvloader.module.d.ts +9 -9
- package/lib/loader/loader.component.d.ts +8 -8
- package/lib/loader/loader.service.d.ts +10 -10
- package/lib/login/kvlogin.module.d.ts +13 -13
- package/lib/login/login.component.d.ts +30 -30
- package/lib/menu/kvmenu.module.d.ts +13 -12
- package/lib/menu/menu.component.d.ts +61 -73
- package/lib/modal/kv-modal.module.d.ts +10 -10
- package/lib/modal/modal.component.d.ts +20 -19
- package/lib/orgchart/orgchart.component.d.ts +27 -27
- package/lib/orgchart/orgchart.module.d.ts +9 -9
- package/lib/page-form/kv-page-form.module.d.ts +11 -11
- package/lib/page-form/page-form.component.d.ts +70 -70
- package/lib/picklist/kvpicklist.module.d.ts +10 -10
- package/lib/picklist/picklist.component.d.ts +20 -20
- package/lib/pipes/codigofile.pipe.d.ts +7 -7
- package/lib/pipes/cpfcnpj.pipe.d.ts +7 -7
- package/lib/pipes/pipes.module.d.ts +10 -10
- package/lib/pipes/telefone.pipe.d.ts +7 -7
- package/lib/progress-bar/kv-progress-bar.module.d.ts +9 -9
- package/lib/progress-bar/progress-bar.component.d.ts +67 -67
- package/lib/table/kvtable.module.d.ts +11 -11
- package/lib/table/table.component.d.ts +113 -113
- package/lib/table-edit/table-edit.component.d.ts +116 -109
- package/lib/table-edit/table-edit.module.d.ts +11 -11
- package/lib/tree-table/kv-treetable.component.d.ts +85 -85
- package/lib/tree-table/kv-treetable.module.d.ts +11 -11
- package/lib/tree-view/kvtree-view.module.d.ts +9 -9
- package/lib/tree-view/tree-view.component.d.ts +14 -14
- package/lib/treetable/treetable.component.d.ts +42 -42
- package/lib/treetable/treetable.module.d.ts +9 -9
- package/lib/workspace/kvworkspace.module.d.ts +14 -14
- package/lib/workspace/workspace.component.d.ts +46 -46
- package/package.json +1 -1
- package/public-api.d.ts +161 -161
@@ -1,169 +1,169 @@
|
|
1
|
-
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
2
|
-
import { debounceTime, of } from 'rxjs';
|
3
|
-
import { BaseComponentInput } from './base-component-input';
|
4
|
-
import { ObjectService } from '../services/object.service';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "../services/component.service";
|
7
|
-
import * as i2 from "primeng/dynamicdialog";
|
8
|
-
export class BaseComponentDropDown extends BaseComponentInput {
|
9
|
-
constructor(componentService, dialogService) {
|
10
|
-
super(componentService);
|
11
|
-
this.dialogService = dialogService;
|
12
|
-
this.filter = true;
|
13
|
-
this.lazy = false;
|
14
|
-
this.showAddButton = false;
|
15
|
-
this.showClear = true;
|
16
|
-
this.onAddClick = new EventEmitter();
|
17
|
-
this.onClick = new EventEmitter();
|
18
|
-
this.onLoadCombo = new EventEmitter();
|
19
|
-
this.onSelectionChange = new EventEmitter();
|
20
|
-
this.onSelectionValue = new EventEmitter();
|
21
|
-
this.requestComplete = new EventEmitter();
|
22
|
-
this.registerOnTouched(() => { });
|
23
|
-
}
|
24
|
-
ngOnInit() {
|
25
|
-
super.ngOnInit();
|
26
|
-
this.setPlaceHolder('Selecione um valor');
|
27
|
-
if (!this.lazy)
|
28
|
-
this.carregarCombo();
|
29
|
-
}
|
30
|
-
addClick(event) {
|
31
|
-
this.onAddClick.emit(event);
|
32
|
-
}
|
33
|
-
carregarCombo(filtro) {
|
34
|
-
if (filtro) {
|
35
|
-
this.carregarComboObs(this.listarCombo(filtro));
|
36
|
-
}
|
37
|
-
else {
|
38
|
-
this.carregarComboObs(this.listar());
|
39
|
-
}
|
40
|
-
}
|
41
|
-
carregarComboObs(obs) {
|
42
|
-
if (obs) {
|
43
|
-
obs
|
44
|
-
.pipe(debounceTime(450))
|
45
|
-
.subscribe({
|
46
|
-
next: (data) => {
|
47
|
-
this.options = data;
|
48
|
-
this.filteredOptions = data;
|
49
|
-
this.requestComplete.emit(true);
|
50
|
-
},
|
51
|
-
error: (error) => {
|
52
|
-
console.log(error);
|
53
|
-
},
|
54
|
-
});
|
55
|
-
}
|
56
|
-
}
|
57
|
-
filterOptions(field, value) {
|
58
|
-
if (this.options) {
|
59
|
-
let lista = ObjectService.filterObject(this.options, field, value);
|
60
|
-
if (lista?.length > 0) {
|
61
|
-
of(lista).subscribe((opts) => {
|
62
|
-
this.filteredOptions = opts;
|
63
|
-
});
|
64
|
-
}
|
65
|
-
else
|
66
|
-
this.filteredOptions = [];
|
67
|
-
}
|
68
|
-
}
|
69
|
-
listar() { }
|
70
|
-
listarCombo(value) { }
|
71
|
-
openDialog(componentType, width, height) {
|
72
|
-
const ref = this.dialogService.open(componentType, {
|
73
|
-
width: width || '70%',
|
74
|
-
height: height,
|
75
|
-
closable: false,
|
76
|
-
maximizable: true,
|
77
|
-
data: { popup: true },
|
78
|
-
});
|
79
|
-
ref.onClose.subscribe((id) => {
|
80
|
-
if (id) {
|
81
|
-
this.listar().subscribe((data) => {
|
82
|
-
this.options = data;
|
83
|
-
this.filteredOptions = data;
|
84
|
-
if (id)
|
85
|
-
this.formControl?.setValue(id);
|
86
|
-
});
|
87
|
-
}
|
88
|
-
});
|
89
|
-
}
|
90
|
-
onInputChange(event) {
|
91
|
-
this.onSelectionValue.emit(event);
|
92
|
-
if (this.formControl) {
|
93
|
-
const controlName = this.getName(this.formControl);
|
94
|
-
if (controlName) {
|
95
|
-
let currentItem = ObjectService.findObject(this.options, controlName, event.value);
|
96
|
-
this.onSelectionChange.emit(currentItem);
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
onInputClick(event) {
|
101
|
-
this.onClick.emit(event);
|
102
|
-
}
|
103
|
-
onInputFilter(event) {
|
104
|
-
if (event) {
|
105
|
-
if (event.filter) {
|
106
|
-
if (event.filter.length > 2) {
|
107
|
-
let fil = { termoPesquisa: event.filter };
|
108
|
-
this.carregarCombo(fil);
|
109
|
-
this.onLoadCombo.emit(fil);
|
110
|
-
}
|
111
|
-
}
|
112
|
-
}
|
113
|
-
}
|
114
|
-
writeValue(value) {
|
115
|
-
if (this.lazy && value) {
|
116
|
-
let fil = { id: value };
|
117
|
-
this.carregarCombo(fil);
|
118
|
-
this.onLoadCombo.emit(fil);
|
119
|
-
}
|
120
|
-
this.value = value;
|
121
|
-
}
|
122
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentDropDown, deps: [{ token: i1.ComponentService }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseComponentDropDown, selector: "ng-component", inputs: { filteredOptions: "filteredOptions", options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", group: "group", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", filter: "filter", lazy: "lazy", showAddButton: "showAddButton", showClear: "showClear", widthField: "widthField" }, outputs: { onAddClick: "onAddClick", onClick: "onClick", onLoadCombo: "onLoadCombo", onSelectionChange: "onSelectionChange", onSelectionValue: "onSelectionValue", requestComplete: "requestComplete" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
124
|
-
}
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentDropDown, decorators: [{
|
126
|
-
type: Component,
|
127
|
-
args: [{
|
128
|
-
template: '',
|
129
|
-
}]
|
130
|
-
}], ctorParameters: function () { return [{ type: i1.ComponentService }, { type: i2.DialogService }]; }, propDecorators: { filteredOptions: [{
|
131
|
-
type: Input
|
132
|
-
}], options: [{
|
133
|
-
type: Input
|
134
|
-
}], optionLabel: [{
|
135
|
-
type: Input
|
136
|
-
}], optionValue: [{
|
137
|
-
type: Input
|
138
|
-
}], optionDisabled: [{
|
139
|
-
type: Input
|
140
|
-
}], group: [{
|
141
|
-
type: Input
|
142
|
-
}], optionGroupLabel: [{
|
143
|
-
type: Input
|
144
|
-
}], optionGroupChildren: [{
|
145
|
-
type: Input
|
146
|
-
}], filter: [{
|
147
|
-
type: Input
|
148
|
-
}], lazy: [{
|
149
|
-
type: Input
|
150
|
-
}], showAddButton: [{
|
151
|
-
type: Input
|
152
|
-
}], showClear: [{
|
153
|
-
type: Input
|
154
|
-
}], widthField: [{
|
155
|
-
type: Input
|
156
|
-
}], onAddClick: [{
|
157
|
-
type: Output
|
158
|
-
}], onClick: [{
|
159
|
-
type: Output
|
160
|
-
}], onLoadCombo: [{
|
161
|
-
type: Output
|
162
|
-
}], onSelectionChange: [{
|
163
|
-
type: Output
|
164
|
-
}], onSelectionValue: [{
|
165
|
-
type: Output
|
166
|
-
}], requestComplete: [{
|
167
|
-
type: Output
|
168
|
-
}] } });
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1kcm9wZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU0zRCxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLGtCQUF1QjtJQTBCekUsWUFDRSxnQkFBa0MsRUFDMUIsYUFBNEI7UUFFcEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGaEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFoQjdCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV0QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBR3pCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBT2hFLElBQUksQ0FBQyxpQkFBaUIsQ0FB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QUN0QixJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQWlCLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7K0dBcEptQixxQkFBcUI7bUdBQXJCLHFCQUFxQixzb0JBRi9CLEVBQUU7OzRGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjttSUFHVSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFR5cGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudElucHV0IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudC1pbnB1dCc7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbHRyb0NvbWJvIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kcm9wZG93bi9maWx0cm8uY29tYm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudERyb3BEb3duIGV4dGVuZHMgQmFzZUNvbXBvbmVudElucHV0PGFueT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXJlZE9wdGlvbnMhOiBhbnlbXTtcclxuICBASW5wdXQoKSBvcHRpb25zITogYW55W107XHJcbiAgQElucHV0KCkgb3B0aW9uTGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uVmFsdWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uRGlzYWJsZWQhOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGdyb3VwITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvcHRpb25Hcm91cExhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbkdyb3VwQ2hpbGRyZW4hOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbGF6eTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0NsZWFyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB3aWR0aEZpZWxkPzogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KCkgb25BZGRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkxvYWRDb21ibzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25WYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlcXVlc3RDb21wbGV0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyT25Ub3VjaGVkKCgpID0+IHsgfSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLnNldFBsYWNlSG9sZGVyKCdTZWxlY2lvbmUgdW0gdmFsb3InKTtcclxuXHJcbiAgICBpZiAoIXRoaXMubGF6eSkgdGhpcy5jYXJyZWdhckNvbWJvKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYWRkQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQWRkQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FycmVnYXJDb21ibyhmaWx0cm8/OiBmaWx0cm9Db21ibyk6IHZvaWQge1xyXG4gICAgaWYgKGZpbHRybykge1xyXG4gICAgICB0aGlzLmNhcnJlZ2FyQ29tYm9PYnModGhpcy5saXN0YXJDb21ibyhmaWx0cm8pKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnJlZ2FyQ29tYm9PYnModGhpcy5saXN0YXIoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FycmVnYXJDb21ib09icyhvYnM6IE9ic2VydmFibGU8YW55Pikge1xyXG4gICAgaWYgKG9icykge1xyXG4gICAgICBvYnNcclxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNDUwKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RDb21wbGV0ZS5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlck9wdGlvbnMoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgbGlzdGEgPSBPYmplY3RTZXJ2aWNlLmZpbHRlck9iamVjdCh0aGlzLm9wdGlvbnMsIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgIGlmIChsaXN0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9mKGxpc3RhKS5zdWJzY3JpYmUoKG9wdHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IG9wdHM7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RhcigpOiBhbnkgeyB9XHJcbiAgcHJvdGVjdGVkIGxpc3RhckNvbWJvKHZhbHVlOiBhbnkpOiBhbnkgeyB9XHJcblxyXG4gIHByb3RlY3RlZCBvcGVuRGlhbG9nKFxyXG4gICAgY29tcG9uZW50VHlwZTogVHlwZTxhbnk+LFxyXG4gICAgd2lkdGg/OiBzdHJpbmcsXHJcbiAgICBoZWlnaHQ/OiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKGNvbXBvbmVudFR5cGUsIHtcclxuICAgICAgd2lkdGg6IHdpZHRoIHx8ICc3MCUnLFxyXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcclxuICAgICAgY2xvc2FibGU6IGZhbHNlLFxyXG4gICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgZGF0YTogeyBwb3B1cDogdHJ1ZSB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChpZDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpZCkge1xyXG4gICAgICAgIHRoaXMubGlzdGFyKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAoaWQpIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKGlkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25JbnB1dENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0aW9uVmFsdWUuZW1pdChldmVudCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmdldE5hbWUodGhpcy5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbCk7XHJcbiAgICAgIGlmIChjb250cm9sTmFtZSkge1xyXG4gICAgICAgIGxldCBjdXJyZW50SXRlbSA9IE9iamVjdFNlcnZpY2UuZmluZE9iamVjdChcclxuICAgICAgICAgIHRoaXMub3B0aW9ucyxcclxuICAgICAgICAgIGNvbnRyb2xOYW1lLFxyXG4gICAgICAgICAgZXZlbnQudmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChjdXJyZW50SXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXRDbGljayhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0RmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBpZiAoZXZlbnQuZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmZpbHRlci5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICBsZXQgZmlsID0geyB0ZXJtb1Blc3F1aXNhOiBldmVudC5maWx0ZXIgfSBhcyBmaWx0cm9Db21ibztcclxuICAgICAgICAgIHRoaXMuY2FycmVnYXJDb21ibyhmaWwpO1xyXG4gICAgICAgICAgdGhpcy5vbkxvYWRDb21iby5lbWl0KGZpbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxhenkgJiYgdmFsdWUpIHtcclxuICAgICAgbGV0IGZpbCA9IHsgaWQ6IHZhbHVlIH0gYXMgZmlsdHJvQ29tYm87XHJcbiAgICAgIHRoaXMuY2FycmVnYXJDb21ibyhmaWwpO1xyXG4gICAgICB0aGlzLm9uTG9hZENvbWJvLmVtaXQoZmlsKTtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcbn1cclxuIl19
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
2
|
+
import { debounceTime, of } from 'rxjs';
|
3
|
+
import { BaseComponentInput } from './base-component-input';
|
4
|
+
import { ObjectService } from '../services/object.service';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "../services/component.service";
|
7
|
+
import * as i2 from "primeng/dynamicdialog";
|
8
|
+
export class BaseComponentDropDown extends BaseComponentInput {
|
9
|
+
constructor(componentService, dialogService) {
|
10
|
+
super(componentService);
|
11
|
+
this.dialogService = dialogService;
|
12
|
+
this.filter = true;
|
13
|
+
this.lazy = false;
|
14
|
+
this.showAddButton = false;
|
15
|
+
this.showClear = true;
|
16
|
+
this.onAddClick = new EventEmitter();
|
17
|
+
this.onClick = new EventEmitter();
|
18
|
+
this.onLoadCombo = new EventEmitter();
|
19
|
+
this.onSelectionChange = new EventEmitter();
|
20
|
+
this.onSelectionValue = new EventEmitter();
|
21
|
+
this.requestComplete = new EventEmitter();
|
22
|
+
this.registerOnTouched(() => { });
|
23
|
+
}
|
24
|
+
ngOnInit() {
|
25
|
+
super.ngOnInit();
|
26
|
+
this.setPlaceHolder('Selecione um valor');
|
27
|
+
if (!this.lazy)
|
28
|
+
this.carregarCombo();
|
29
|
+
}
|
30
|
+
addClick(event) {
|
31
|
+
this.onAddClick.emit(event);
|
32
|
+
}
|
33
|
+
carregarCombo(filtro) {
|
34
|
+
if (filtro) {
|
35
|
+
this.carregarComboObs(this.listarCombo(filtro));
|
36
|
+
}
|
37
|
+
else {
|
38
|
+
this.carregarComboObs(this.listar());
|
39
|
+
}
|
40
|
+
}
|
41
|
+
carregarComboObs(obs) {
|
42
|
+
if (obs) {
|
43
|
+
obs
|
44
|
+
.pipe(debounceTime(450))
|
45
|
+
.subscribe({
|
46
|
+
next: (data) => {
|
47
|
+
this.options = data;
|
48
|
+
this.filteredOptions = data;
|
49
|
+
this.requestComplete.emit(true);
|
50
|
+
},
|
51
|
+
error: (error) => {
|
52
|
+
console.log(error);
|
53
|
+
},
|
54
|
+
});
|
55
|
+
}
|
56
|
+
}
|
57
|
+
filterOptions(field, value) {
|
58
|
+
if (this.options) {
|
59
|
+
let lista = ObjectService.filterObject(this.options, field, value);
|
60
|
+
if (lista?.length > 0) {
|
61
|
+
of(lista).subscribe((opts) => {
|
62
|
+
this.filteredOptions = opts;
|
63
|
+
});
|
64
|
+
}
|
65
|
+
else
|
66
|
+
this.filteredOptions = [];
|
67
|
+
}
|
68
|
+
}
|
69
|
+
listar() { }
|
70
|
+
listarCombo(value) { }
|
71
|
+
openDialog(componentType, width, height) {
|
72
|
+
const ref = this.dialogService.open(componentType, {
|
73
|
+
width: width || '70%',
|
74
|
+
height: height,
|
75
|
+
closable: false,
|
76
|
+
maximizable: true,
|
77
|
+
data: { popup: true },
|
78
|
+
});
|
79
|
+
ref.onClose.subscribe((id) => {
|
80
|
+
if (id) {
|
81
|
+
this.listar().subscribe((data) => {
|
82
|
+
this.options = data;
|
83
|
+
this.filteredOptions = data;
|
84
|
+
if (id)
|
85
|
+
this.formControl?.setValue(id);
|
86
|
+
});
|
87
|
+
}
|
88
|
+
});
|
89
|
+
}
|
90
|
+
onInputChange(event) {
|
91
|
+
this.onSelectionValue.emit(event);
|
92
|
+
if (this.formControl) {
|
93
|
+
const controlName = this.getName(this.formControl);
|
94
|
+
if (controlName) {
|
95
|
+
let currentItem = ObjectService.findObject(this.options, controlName, event.value);
|
96
|
+
this.onSelectionChange.emit(currentItem);
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
onInputClick(event) {
|
101
|
+
this.onClick.emit(event);
|
102
|
+
}
|
103
|
+
onInputFilter(event) {
|
104
|
+
if (event) {
|
105
|
+
if (event.filter) {
|
106
|
+
if (event.filter.length > 2) {
|
107
|
+
let fil = { termoPesquisa: event.filter };
|
108
|
+
this.carregarCombo(fil);
|
109
|
+
this.onLoadCombo.emit(fil);
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
writeValue(value) {
|
115
|
+
if (this.lazy && value) {
|
116
|
+
let fil = { id: value };
|
117
|
+
this.carregarCombo(fil);
|
118
|
+
this.onLoadCombo.emit(fil);
|
119
|
+
}
|
120
|
+
this.value = value;
|
121
|
+
}
|
122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentDropDown, deps: [{ token: i1.ComponentService }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseComponentDropDown, selector: "ng-component", inputs: { filteredOptions: "filteredOptions", options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", group: "group", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", filter: "filter", lazy: "lazy", showAddButton: "showAddButton", showClear: "showClear", widthField: "widthField" }, outputs: { onAddClick: "onAddClick", onClick: "onClick", onLoadCombo: "onLoadCombo", onSelectionChange: "onSelectionChange", onSelectionValue: "onSelectionValue", requestComplete: "requestComplete" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
124
|
+
}
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentDropDown, decorators: [{
|
126
|
+
type: Component,
|
127
|
+
args: [{
|
128
|
+
template: '',
|
129
|
+
}]
|
130
|
+
}], ctorParameters: function () { return [{ type: i1.ComponentService }, { type: i2.DialogService }]; }, propDecorators: { filteredOptions: [{
|
131
|
+
type: Input
|
132
|
+
}], options: [{
|
133
|
+
type: Input
|
134
|
+
}], optionLabel: [{
|
135
|
+
type: Input
|
136
|
+
}], optionValue: [{
|
137
|
+
type: Input
|
138
|
+
}], optionDisabled: [{
|
139
|
+
type: Input
|
140
|
+
}], group: [{
|
141
|
+
type: Input
|
142
|
+
}], optionGroupLabel: [{
|
143
|
+
type: Input
|
144
|
+
}], optionGroupChildren: [{
|
145
|
+
type: Input
|
146
|
+
}], filter: [{
|
147
|
+
type: Input
|
148
|
+
}], lazy: [{
|
149
|
+
type: Input
|
150
|
+
}], showAddButton: [{
|
151
|
+
type: Input
|
152
|
+
}], showClear: [{
|
153
|
+
type: Input
|
154
|
+
}], widthField: [{
|
155
|
+
type: Input
|
156
|
+
}], onAddClick: [{
|
157
|
+
type: Output
|
158
|
+
}], onClick: [{
|
159
|
+
type: Output
|
160
|
+
}], onLoadCombo: [{
|
161
|
+
type: Output
|
162
|
+
}], onSelectionChange: [{
|
163
|
+
type: Output
|
164
|
+
}], onSelectionValue: [{
|
165
|
+
type: Output
|
166
|
+
}], requestComplete: [{
|
167
|
+
type: Output
|
168
|
+
}] } });
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1kcm9wZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU0zRCxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLGtCQUF1QjtJQTBCekUsWUFDRSxnQkFBa0MsRUFDMUIsYUFBNEI7UUFFcEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGaEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFoQjdCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV0QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBR3pCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBT2hFLElBQUksQ0FBQyxpQkFBaUIsQ0FB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QUN0QixJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQWlCLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7K0dBcEptQixxQkFBcUI7bUdBQXJCLHFCQUFxQixzb0JBRi9CLEVBQUU7OzRGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjttSUFHVSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRlYm91bmNlVGltZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudElucHV0IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudC1pbnB1dCc7XG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29iamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRyb0NvbWJvIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kcm9wZG93bi9maWx0cm8uY29tYm8nO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50RHJvcERvd24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50SW5wdXQ8YW55PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgZmlsdGVyZWRPcHRpb25zITogYW55W107XG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBhbnlbXTtcbiAgQElucHV0KCkgb3B0aW9uTGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvblZhbHVlITogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZCE6IHN0cmluZztcblxuICBASW5wdXQoKSBncm91cCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9wdGlvbkdyb3VwTGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbkdyb3VwQ2hpbGRyZW4hOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgZmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbGF6eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0NsZWFyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgd2lkdGhGaWVsZD86IHN0cmluZztcblxuICBAT3V0cHV0KCkgb25BZGRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uTG9hZENvbWJvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVxdWVzdENvbXBsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcbiAgICB0aGlzLnJlZ2lzdGVyT25Ub3VjaGVkKCgpID0+IHsgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc2V0UGxhY2VIb2xkZXIoJ1NlbGVjaW9uZSB1bSB2YWxvcicpO1xuXG4gICAgaWYgKCF0aGlzLmxhenkpIHRoaXMuY2FycmVnYXJDb21ibygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZENsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25BZGRDbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjYXJyZWdhckNvbWJvKGZpbHRybz86IGZpbHRyb0NvbWJvKTogdm9pZCB7XG4gICAgaWYgKGZpbHRybykge1xuICAgICAgdGhpcy5jYXJyZWdhckNvbWJvT2JzKHRoaXMubGlzdGFyQ29tYm8oZmlsdHJvKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5jYXJyZWdhckNvbWJvT2JzKHRoaXMubGlzdGFyKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjYXJyZWdhckNvbWJvT2JzKG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgaWYgKG9icykge1xuICAgICAgb2JzXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg0NTApKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBkYXRhO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBkYXRhO1xuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0Q29tcGxldGUuZW1pdCh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJPcHRpb25zKGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICBsZXQgbGlzdGEgPSBPYmplY3RTZXJ2aWNlLmZpbHRlck9iamVjdCh0aGlzLm9wdGlvbnMsIGZpZWxkLCB2YWx1ZSk7XG4gICAgICBpZiAobGlzdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgb2YobGlzdGEpLnN1YnNjcmliZSgob3B0czogYW55W10pID0+IHtcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IG9wdHM7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGxpc3RhcigpOiBhbnkgeyB9XG4gIHByb3RlY3RlZCBsaXN0YXJDb21ibyh2YWx1ZTogYW55KTogYW55IHsgfVxuXG4gIHByb3RlY3RlZCBvcGVuRGlhbG9nKFxuICAgIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PixcbiAgICB3aWR0aD86IHN0cmluZyxcbiAgICBoZWlnaHQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oY29tcG9uZW50VHlwZSwge1xuICAgICAgd2lkdGg6IHdpZHRoIHx8ICc3MCUnLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBjbG9zYWJsZTogZmFsc2UsXG4gICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcbiAgICAgIGRhdGE6IHsgcG9wdXA6IHRydWUgfSxcbiAgICB9KTtcblxuICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgoaWQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHRoaXMubGlzdGFyKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBkYXRhO1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gZGF0YTtcbiAgICAgICAgICBpZiAoaWQpIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKGlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25JbnB1dENoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5vblNlbGVjdGlvblZhbHVlLmVtaXQoZXZlbnQpO1xuXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5nZXROYW1lKHRoaXMuZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wpO1xuICAgICAgaWYgKGNvbnRyb2xOYW1lKSB7XG4gICAgICAgIGxldCBjdXJyZW50SXRlbSA9IE9iamVjdFNlcnZpY2UuZmluZE9iamVjdChcbiAgICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgY29udHJvbE5hbWUsXG4gICAgICAgICAgZXZlbnQudmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KGN1cnJlbnRJdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uSW5wdXRGaWx0ZXIoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmZpbHRlcikge1xuICAgICAgICBpZiAoZXZlbnQuZmlsdGVyLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICBsZXQgZmlsID0geyB0ZXJtb1Blc3F1aXNhOiBldmVudC5maWx0ZXIgfSBhcyBmaWx0cm9Db21ibztcbiAgICAgICAgICB0aGlzLmNhcnJlZ2FyQ29tYm8oZmlsKTtcbiAgICAgICAgICB0aGlzLm9uTG9hZENvbWJvLmVtaXQoZmlsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxhenkgJiYgdmFsdWUpIHtcbiAgICAgIGxldCBmaWwgPSB7IGlkOiB2YWx1ZSB9IGFzIGZpbHRyb0NvbWJvO1xuICAgICAgdGhpcy5jYXJyZWdhckNvbWJvKGZpbCk7XG4gICAgICB0aGlzLm9uTG9hZENvbWJvLmVtaXQoZmlsKTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG4iXX0=
|
@@ -1,94 +1,94 @@
|
|
1
|
-
import { Component, ContentChildren, EventEmitter, Input, Output, ViewChildren } from "@angular/core";
|
2
|
-
import { BaseComponent } from './base-component';
|
3
|
-
import { ErrorComponent } from '../components/error/error.component';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "../services/component.service";
|
6
|
-
export class BaseComponentInput extends BaseComponent {
|
7
|
-
constructor(componentService) {
|
8
|
-
super();
|
9
|
-
this.componentService = componentService;
|
10
|
-
this.hasError = false;
|
11
|
-
this.placeholder = '';
|
12
|
-
this.onBlur = new EventEmitter();
|
13
|
-
this.onInput = new EventEmitter();
|
14
|
-
this.onClose = new EventEmitter();
|
15
|
-
}
|
16
|
-
get baseInputClass() {
|
17
|
-
return `${this.hasError ? 'ng-invalid ng-dirty' : ''} !important`;
|
18
|
-
}
|
19
|
-
erroMessage() {
|
20
|
-
if (!this.formControl?.errors)
|
21
|
-
return;
|
22
|
-
let message = '';
|
23
|
-
if (this.formControl.errors) {
|
24
|
-
const objErrors = this.formControl.errors;
|
25
|
-
if (objErrors.erroMessage)
|
26
|
-
message = objErrors.erroMessage;
|
27
|
-
}
|
28
|
-
return message;
|
29
|
-
}
|
30
|
-
getName(control) {
|
31
|
-
return Object.entries(control.parent?.controls ?? []).find(([_, value]) => value === control)?.[0] ?? null;
|
32
|
-
}
|
33
|
-
hasControlError() {
|
34
|
-
if (!this.formControl)
|
35
|
-
return false;
|
36
|
-
return (this.formControl.dirty || this.formControl.touched) && this.formControl.errors !== null;
|
37
|
-
}
|
38
|
-
ngAfterViewInit() {
|
39
|
-
this.viewErrors.forEach(c => {
|
40
|
-
c.emitError.subscribe(res => {
|
41
|
-
this.hasError = res;
|
42
|
-
this.componentService.changeDetectorRef.detectChanges();
|
43
|
-
});
|
44
|
-
});
|
45
|
-
}
|
46
|
-
ngAfterContentInit() {
|
47
|
-
this.contentErrors.forEach(c => {
|
48
|
-
c.emitError.subscribe(res => {
|
49
|
-
this.hasError = res;
|
50
|
-
});
|
51
|
-
});
|
52
|
-
}
|
53
|
-
ngOnInit() {
|
54
|
-
this.formControl = this.componentService.getFormControl();
|
55
|
-
}
|
56
|
-
onInputBlur(event) {
|
57
|
-
if (this.onTouched)
|
58
|
-
this.onTouched();
|
59
|
-
this.onBlur.emit(event);
|
60
|
-
}
|
61
|
-
onInputClose(event) {
|
62
|
-
this.onClose.emit(event);
|
63
|
-
}
|
64
|
-
onInputInput(event) {
|
65
|
-
this.onInput.emit(event);
|
66
|
-
}
|
67
|
-
setPlaceHolder(p) {
|
68
|
-
if (!this.placeholder)
|
69
|
-
this.placeholder = p;
|
70
|
-
}
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentInput, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
72
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseComponentInput, selector: "ng-component", inputs: { placeholder: "placeholder" }, outputs: { onBlur: "onBlur", onInput: "onInput", onClose: "onClose" }, queries: [{ propertyName: "contentErrors", predicate: ErrorComponent }], viewQueries: [{ propertyName: "viewErrors", predicate: ErrorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
73
|
-
}
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentInput, decorators: [{
|
75
|
-
type: Component,
|
76
|
-
args: [{
|
77
|
-
template: '',
|
78
|
-
}]
|
79
|
-
}], ctorParameters: function () { return [{ type: i1.ComponentService }]; }, propDecorators: { placeholder: [{
|
80
|
-
type: Input
|
81
|
-
}], onBlur: [{
|
82
|
-
type: Output
|
83
|
-
}], onInput: [{
|
84
|
-
type: Output
|
85
|
-
}], onClose: [{
|
86
|
-
type: Output
|
87
|
-
}], viewErrors: [{
|
88
|
-
type: ViewChildren,
|
89
|
-
args: [ErrorComponent]
|
90
|
-
}], contentErrors: [{
|
91
|
-
type: ContentChildren,
|
92
|
-
args: [ErrorComponent]
|
93
|
-
}] } });
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
import { Component, ContentChildren, EventEmitter, Input, Output, ViewChildren } from "@angular/core";
|
2
|
+
import { BaseComponent } from './base-component';
|
3
|
+
import { ErrorComponent } from '../components/error/error.component';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "../services/component.service";
|
6
|
+
export class BaseComponentInput extends BaseComponent {
|
7
|
+
constructor(componentService) {
|
8
|
+
super();
|
9
|
+
this.componentService = componentService;
|
10
|
+
this.hasError = false;
|
11
|
+
this.placeholder = '';
|
12
|
+
this.onBlur = new EventEmitter();
|
13
|
+
this.onInput = new EventEmitter();
|
14
|
+
this.onClose = new EventEmitter();
|
15
|
+
}
|
16
|
+
get baseInputClass() {
|
17
|
+
return `${this.hasError ? 'ng-invalid ng-dirty' : ''} !important`;
|
18
|
+
}
|
19
|
+
erroMessage() {
|
20
|
+
if (!this.formControl?.errors)
|
21
|
+
return;
|
22
|
+
let message = '';
|
23
|
+
if (this.formControl.errors) {
|
24
|
+
const objErrors = this.formControl.errors;
|
25
|
+
if (objErrors.erroMessage)
|
26
|
+
message = objErrors.erroMessage;
|
27
|
+
}
|
28
|
+
return message;
|
29
|
+
}
|
30
|
+
getName(control) {
|
31
|
+
return Object.entries(control.parent?.controls ?? []).find(([_, value]) => value === control)?.[0] ?? null;
|
32
|
+
}
|
33
|
+
hasControlError() {
|
34
|
+
if (!this.formControl)
|
35
|
+
return false;
|
36
|
+
return (this.formControl.dirty || this.formControl.touched) && this.formControl.errors !== null;
|
37
|
+
}
|
38
|
+
ngAfterViewInit() {
|
39
|
+
this.viewErrors.forEach(c => {
|
40
|
+
c.emitError.subscribe(res => {
|
41
|
+
this.hasError = res;
|
42
|
+
this.componentService.changeDetectorRef.detectChanges();
|
43
|
+
});
|
44
|
+
});
|
45
|
+
}
|
46
|
+
ngAfterContentInit() {
|
47
|
+
this.contentErrors.forEach(c => {
|
48
|
+
c.emitError.subscribe(res => {
|
49
|
+
this.hasError = res;
|
50
|
+
});
|
51
|
+
});
|
52
|
+
}
|
53
|
+
ngOnInit() {
|
54
|
+
this.formControl = this.componentService.getFormControl();
|
55
|
+
}
|
56
|
+
onInputBlur(event) {
|
57
|
+
if (this.onTouched)
|
58
|
+
this.onTouched();
|
59
|
+
this.onBlur.emit(event);
|
60
|
+
}
|
61
|
+
onInputClose(event) {
|
62
|
+
this.onClose.emit(event);
|
63
|
+
}
|
64
|
+
onInputInput(event) {
|
65
|
+
this.onInput.emit(event);
|
66
|
+
}
|
67
|
+
setPlaceHolder(p) {
|
68
|
+
if (!this.placeholder)
|
69
|
+
this.placeholder = p;
|
70
|
+
}
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentInput, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseComponentInput, selector: "ng-component", inputs: { placeholder: "placeholder" }, outputs: { onBlur: "onBlur", onInput: "onInput", onClose: "onClose" }, queries: [{ propertyName: "contentErrors", predicate: ErrorComponent }], viewQueries: [{ propertyName: "viewErrors", predicate: ErrorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
73
|
+
}
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseComponentInput, decorators: [{
|
75
|
+
type: Component,
|
76
|
+
args: [{
|
77
|
+
template: '',
|
78
|
+
}]
|
79
|
+
}], ctorParameters: function () { return [{ type: i1.ComponentService }]; }, propDecorators: { placeholder: [{
|
80
|
+
type: Input
|
81
|
+
}], onBlur: [{
|
82
|
+
type: Output
|
83
|
+
}], onInput: [{
|
84
|
+
type: Output
|
85
|
+
}], onClose: [{
|
86
|
+
type: Output
|
87
|
+
}], viewErrors: [{
|
88
|
+
type: ViewChildren,
|
89
|
+
args: [ErrorComponent]
|
90
|
+
}], contentErrors: [{
|
91
|
+
type: ContentChildren,
|
92
|
+
args: [ErrorComponent]
|
93
|
+
}] } });
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBS3JFLE1BQU0sT0FBZ0Isa0JBQXNCLFNBQVEsYUFBZ0I7SUFjbEUsWUFBK0IsZ0JBQWtDO1FBQy9ELEtBQUssRUFBRSxDQUFDO1FBRHFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFYdkQsYUFBUSxHQUF3QixLQUFLLENBQUM7UUFFdkMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFeEIsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFPMUQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTTtZQUFFLE9BQU87UUFFdEMsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFD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ImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lcnJvci9lcnJvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50SW5wdXQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBwdWJsaWMgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaGFzRXJyb3I6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbklucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oRXJyb3JDb21wb25lbnQpIHZpZXdFcnJvcnMhOiBRdWVyeUxpc3Q8RXJyb3JDb21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKEVycm9yQ29tcG9uZW50KSBjb250ZW50RXJyb3JzITogUXVlcnlMaXN0PEVycm9yQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJhc2VJbnB1dENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaGFzRXJyb3IgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ30gIWltcG9ydGFudGA7XG4gIH1cblxuICBlcnJvTWVzc2FnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzKSByZXR1cm47XG5cbiAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC5lcnJvcnMpIHtcbiAgICAgIGNvbnN0IG9iakVycm9ycyA9IHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzIGFzIGFueTtcbiAgICAgIGlmIChvYmpFcnJvcnMuZXJyb01lc3NhZ2UpIG1lc3NhZ2UgPSBvYmpFcnJvcnMuZXJyb01lc3NhZ2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICBnZXROYW1lKGNvbnRyb2w6IEZvcm1Db250cm9sKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbnRyb2wucGFyZW50Py5jb250cm9scyA/PyBbXSkuZmluZCgoW18sIHZhbHVlXSkgPT4gdmFsdWUgPT09IGNvbnRyb2wpPy5bMF0gPz8gbnVsbDtcbiAgfVxuXG4gIGhhc0NvbnRyb2xFcnJvcigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHRoaXMuZm9ybUNvbnRyb2wuZGlydHkgfHwgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSAmJiB0aGlzLmZvcm1Db250cm9sLmVycm9ycyAhPT0gbnVsbDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdFcnJvcnMuZm9yRWFjaChjID0+IHtcbiAgICAgIGMuZW1pdEVycm9yLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmhhc0Vycm9yID0gcmVzO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5jb250ZW50RXJyb3JzLmZvckVhY2goYyA9PiB7XG4gICAgICBjLmVtaXRFcnJvci5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHJlcztcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuY29tcG9uZW50U2VydmljZS5nZXRGb3JtQ29udHJvbCgpO1xuICB9XG5cbiAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkKVxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25JbnB1dENsb3NlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdChldmVudCk7XG4gIH1cblxuICBvbklucHV0SW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5vbklucHV0LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFBsYWNlSG9sZGVyKHA6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikgdGhpcy5wbGFjZWhvbGRlciA9IHA7XG4gIH1cbn1cbiJdfQ==
|