appproject-components 1.0.49 → 1.0.51
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/esm2022/appproject-components.mjs +5 -0
- package/esm2022/lib/appproject-components.component.mjs +22 -0
- package/esm2022/lib/appproject-components.module.mjs +159 -0
- package/esm2022/lib/appproject-components.service.mjs +14 -0
- package/esm2022/lib/baseInputComponent.mjs +69 -0
- package/esm2022/lib/buttons/baseBtnComponent.mjs +63 -0
- package/esm2022/lib/buttons/btn-action/btn-action.component.mjs +55 -0
- package/esm2022/lib/buttons/btn-cancelar/btn-cancelar.component.mjs +25 -0
- package/esm2022/lib/buttons/btn-excluir/btn-excluir.component.mjs +29 -0
- package/esm2022/lib/buttons/btn-novo/btn-novo.component.mjs +33 -0
- package/esm2022/lib/buttons/btn-salvar/btn-salvar.component.mjs +19 -0
- package/esm2022/lib/entity-edit/entity-edit.component.mjs +53 -0
- package/esm2022/lib/grid-view/grid-view.component.mjs +275 -0
- package/esm2022/lib/input-area/input-area.component.mjs +72 -0
- package/esm2022/lib/input-arquivo/input-arquivo.component.mjs +154 -0
- package/esm2022/lib/input-cep/input-cep.component.mjs +180 -0
- package/esm2022/lib/input-checkbox/input-checkbox.component.mjs +51 -0
- package/esm2022/lib/input-format/input-format.component.mjs +138 -0
- package/esm2022/lib/input-pesquisa/input-pesquisa.component.mjs +557 -0
- package/esm2022/lib/input-radio/input-radio.component.mjs +58 -0
- package/esm2022/lib/input-select/input-select.component.mjs +110 -0
- package/esm2022/lib/input-text/input-text.component.mjs +88 -0
- package/esm2022/lib/input-valor/input-valor.component.mjs +161 -0
- package/esm2022/lib/lib-config.mjs +2 -0
- package/esm2022/lib/model-treeview/model-treeview.component.mjs +126 -0
- package/esm2022/lib/tree-view/tree-view.component.mjs +104 -0
- package/esm2022/lib/tree-view-nivel/tree-view-nivel.component.mjs +50 -0
- package/esm2022/public-api.mjs +30 -0
- package/fesm2022/appproject-components.mjs +2531 -0
- package/fesm2022/appproject-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/appproject-components.component.d.ts +8 -0
- package/lib/appproject-components.module.d.ts +36 -0
- package/lib/appproject-components.service.d.ts +6 -0
- package/lib/baseInputComponent.d.ts +28 -0
- package/lib/buttons/baseBtnComponent.d.ts +19 -0
- package/lib/buttons/btn-action/btn-action.component.d.ts +21 -0
- package/lib/buttons/btn-cancelar/btn-cancelar.component.d.ts +10 -0
- package/lib/buttons/btn-excluir/btn-excluir.component.d.ts +12 -0
- package/lib/buttons/btn-novo/btn-novo.component.d.ts +13 -0
- package/lib/buttons/btn-salvar/btn-salvar.component.d.ts +9 -0
- package/lib/entity-edit/entity-edit.component.d.ts +22 -0
- package/lib/grid-view/grid-view.component.d.ts +52 -0
- package/lib/input-area/input-area.component.d.ts +24 -0
- package/lib/input-arquivo/input-arquivo.component.d.ts +43 -0
- package/lib/input-cep/input-cep.component.d.ts +29 -0
- package/lib/input-checkbox/input-checkbox.component.d.ts +21 -0
- package/lib/input-format/input-format.component.d.ts +27 -0
- package/lib/input-pesquisa/input-pesquisa.component.d.ts +69 -0
- package/lib/input-radio/input-radio.component.d.ts +23 -0
- package/lib/input-select/input-select.component.d.ts +32 -0
- package/lib/input-text/input-text.component.d.ts +33 -0
- package/lib/input-valor/input-valor.component.d.ts +29 -0
- package/{src/lib/lib-config.ts → lib/lib-config.d.ts} +3 -4
- package/lib/model-treeview/model-treeview.component.d.ts +39 -0
- package/lib/tree-view/tree-view.component.d.ts +23 -0
- package/lib/tree-view-nivel/tree-view-nivel.component.d.ts +17 -0
- package/package.json +26 -15
- package/{src/public-api.ts → public-api.d.ts} +24 -30
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -7
- package/src/lib/appproject-components.component.spec.ts +0 -23
- package/src/lib/appproject-components.component.ts +0 -20
- package/src/lib/appproject-components.module.ts +0 -106
- package/src/lib/appproject-components.service.spec.ts +0 -16
- package/src/lib/appproject-components.service.ts +0 -9
- package/src/lib/baseComponent.scss +0 -162
- package/src/lib/baseInputComponent.ts +0 -35
- package/src/lib/buttons/baseBtnComponent.ts +0 -38
- package/src/lib/buttons/btn-action/btn-action.component.html +0 -11
- package/src/lib/buttons/btn-action/btn-action.component.scss +0 -7
- package/src/lib/buttons/btn-action/btn-action.component.spec.ts +0 -24
- package/src/lib/buttons/btn-action/btn-action.component.ts +0 -31
- package/src/lib/buttons/btn-cancelar/btn-cancelar.component.html +0 -14
- package/src/lib/buttons/btn-cancelar/btn-cancelar.component.scss +0 -5
- package/src/lib/buttons/btn-cancelar/btn-cancelar.component.spec.ts +0 -24
- package/src/lib/buttons/btn-cancelar/btn-cancelar.component.ts +0 -19
- package/src/lib/buttons/btn-excluir/btn-excluir.component.html +0 -6
- package/src/lib/buttons/btn-excluir/btn-excluir.component.scss +0 -5
- package/src/lib/buttons/btn-excluir/btn-excluir.component.spec.ts +0 -24
- package/src/lib/buttons/btn-excluir/btn-excluir.component.ts +0 -18
- package/src/lib/buttons/btn-novo/btn-novo.component.html +0 -14
- package/src/lib/buttons/btn-novo/btn-novo.component.scss +0 -8
- package/src/lib/buttons/btn-novo/btn-novo.component.spec.ts +0 -24
- package/src/lib/buttons/btn-novo/btn-novo.component.ts +0 -20
- package/src/lib/buttons/btn-salvar/btn-salvar.component.html +0 -8
- package/src/lib/buttons/btn-salvar/btn-salvar.component.scss +0 -5
- package/src/lib/buttons/btn-salvar/btn-salvar.component.spec.ts +0 -24
- package/src/lib/buttons/btn-salvar/btn-salvar.component.ts +0 -16
- package/src/lib/entity-edit/entity-edit.component.html +0 -143
- package/src/lib/entity-edit/entity-edit.component.scss +0 -4
- package/src/lib/entity-edit/entity-edit.component.spec.ts +0 -23
- package/src/lib/entity-edit/entity-edit.component.ts +0 -43
- package/src/lib/grid-view/grid-view.component.html +0 -116
- package/src/lib/grid-view/grid-view.component.scss +0 -47
- package/src/lib/grid-view/grid-view.component.spec.ts +0 -23
- package/src/lib/grid-view/grid-view.component.ts +0 -292
- package/src/lib/input-area/input-area.component.html +0 -30
- package/src/lib/input-area/input-area.component.scss +0 -68
- package/src/lib/input-area/input-area.component.spec.ts +0 -23
- package/src/lib/input-area/input-area.component.ts +0 -69
- package/src/lib/input-arquivo/input-arquivo.component.html +0 -11
- package/src/lib/input-arquivo/input-arquivo.component.scss +0 -0
- package/src/lib/input-arquivo/input-arquivo.component.spec.ts +0 -23
- package/src/lib/input-arquivo/input-arquivo.component.ts +0 -140
- package/src/lib/input-cep/input-cep.component.html +0 -38
- package/src/lib/input-cep/input-cep.component.scss +0 -0
- package/src/lib/input-cep/input-cep.component.spec.ts +0 -23
- package/src/lib/input-cep/input-cep.component.ts +0 -186
- package/src/lib/input-checkbox/input-checkbox.component.html +0 -12
- package/src/lib/input-checkbox/input-checkbox.component.scss +0 -11
- package/src/lib/input-checkbox/input-checkbox.component.spec.ts +0 -23
- package/src/lib/input-checkbox/input-checkbox.component.ts +0 -48
- package/src/lib/input-format/input-format.component.html +0 -32
- package/src/lib/input-format/input-format.component.scss +0 -47
- package/src/lib/input-format/input-format.component.spec.ts +0 -23
- package/src/lib/input-format/input-format.component.ts +0 -139
- package/src/lib/input-pesquisa/input-pesquisa.component.html +0 -77
- package/src/lib/input-pesquisa/input-pesquisa.component.scss +0 -127
- package/src/lib/input-pesquisa/input-pesquisa.component.spec.ts +0 -23
- package/src/lib/input-pesquisa/input-pesquisa.component.ts +0 -558
- package/src/lib/input-radio/input-radio.component.html +0 -21
- package/src/lib/input-radio/input-radio.component.scss +0 -3
- package/src/lib/input-radio/input-radio.component.spec.ts +0 -23
- package/src/lib/input-radio/input-radio.component.ts +0 -49
- package/src/lib/input-select/input-select.component.html +0 -29
- package/src/lib/input-select/input-select.component.scss +0 -62
- package/src/lib/input-select/input-select.component.spec.ts +0 -23
- package/src/lib/input-select/input-select.component.ts +0 -96
- package/src/lib/input-text/input-text.component.html +0 -48
- package/src/lib/input-text/input-text.component.scss +0 -63
- package/src/lib/input-text/input-text.component.spec.ts +0 -23
- package/src/lib/input-text/input-text.component.ts +0 -78
- package/src/lib/input-valor/input-valor.component.html +0 -32
- package/src/lib/input-valor/input-valor.component.scss +0 -47
- package/src/lib/input-valor/input-valor.component.spec.ts +0 -23
- package/src/lib/input-valor/input-valor.component.ts +0 -164
- package/src/lib/model-treeview/model-treeview.component.html +0 -20
- package/src/lib/model-treeview/model-treeview.component.scss +0 -0
- package/src/lib/model-treeview/model-treeview.component.spec.ts +0 -23
- package/src/lib/model-treeview/model-treeview.component.ts +0 -152
- package/src/lib/tree-view/tree-view.component.html +0 -96
- package/src/lib/tree-view/tree-view.component.scss +0 -50
- package/src/lib/tree-view/tree-view.component.spec.ts +0 -23
- package/src/lib/tree-view/tree-view.component.ts +0 -92
- package/src/lib/tree-view-nivel/tree-view-nivel.component.html +0 -17
- package/src/lib/tree-view-nivel/tree-view-nivel.component.scss +0 -8
- package/src/lib/tree-view-nivel/tree-view-nivel.component.spec.ts +0 -23
- package/src/lib/tree-view-nivel/tree-view-nivel.component.ts +0 -43
- package/src/test.ts +0 -15
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Component, Inject, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ionic/angular";
|
|
4
|
+
import * as i2 from "@angular/common/http";
|
|
5
|
+
import * as i3 from "../tree-view/tree-view.component";
|
|
6
|
+
export class ModelTreeviewComponent {
|
|
7
|
+
constructor(config, modalCtrl, httpClient, loadingCtrl) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.modalCtrl = modalCtrl;
|
|
10
|
+
this.httpClient = httpClient;
|
|
11
|
+
this.loadingCtrl = loadingCtrl;
|
|
12
|
+
this.titulo = "Selecionar";
|
|
13
|
+
this.textoPesquisa = "";
|
|
14
|
+
this.maximizar = false;
|
|
15
|
+
this.BASE_API = this.config.apiUrl;
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
}
|
|
19
|
+
ionViewDidEnter() {
|
|
20
|
+
this.atualizaArvoreEntidade(this.tipo);
|
|
21
|
+
}
|
|
22
|
+
async atualizaArvoreEntidade(tipo) {
|
|
23
|
+
let subscriptionC;
|
|
24
|
+
this.treeView.cadastro = this.subscribeId;
|
|
25
|
+
let loading = await this.showLoading("Pesquisando...", true);
|
|
26
|
+
loading.onDidDismiss().then(() => {
|
|
27
|
+
subscriptionC?.unsubscribe();
|
|
28
|
+
});
|
|
29
|
+
this.url = this.url.startsWith('http') ? this.url : `${this.BASE_API}/${this.url}`;
|
|
30
|
+
var url = this.url.replace('<<EMPRESA>>', this.empresaSelecionadaId.toString());
|
|
31
|
+
var url = this.url.replace('<<FILTRO>>', '');
|
|
32
|
+
// if (this.textoPesquisa) {
|
|
33
|
+
// url += `?filtro=${this.textoPesquisa}`;
|
|
34
|
+
// }
|
|
35
|
+
subscriptionC = this.httpClient.get(url).subscribe({
|
|
36
|
+
next: (result) => {
|
|
37
|
+
/*
|
|
38
|
+
empresaContato.forEach((ec) => {
|
|
39
|
+
ec.LabelTree = ec.Nome;
|
|
40
|
+
ec.EmpresaContatoPaiId = null; //campo ficticio para montar arvore
|
|
41
|
+
ec.ClicableTree = true;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
this.treeView.campoId = "EmpresaContatoId";
|
|
45
|
+
this.treeView.campoPai = "EmpresaContatoPaiId";
|
|
46
|
+
this.treeView.campoLabel = "LabelTree";
|
|
47
|
+
this.treeView.itens = empresaContato;
|
|
48
|
+
this.treeView.arvoreClick(false);
|
|
49
|
+
*/
|
|
50
|
+
if (!this.campoPai) {
|
|
51
|
+
this.campoPai = `${this.campoId}Pai`;
|
|
52
|
+
}
|
|
53
|
+
result.forEach((cc) => {
|
|
54
|
+
cc.LabelTree = cc[this.campoLabel];
|
|
55
|
+
if (!cc[this.campoPai]) {
|
|
56
|
+
cc[this.campoPai] = null;
|
|
57
|
+
}
|
|
58
|
+
if (this.filterFunction != null) {
|
|
59
|
+
const clicable = [{ ...cc }].find(this.filterFunction);
|
|
60
|
+
if (clicable != null && cc.ClicableTree == null) {
|
|
61
|
+
cc.ClicableTree = true;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
cc.ClicableTree = false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
cc.ClicableTree = true;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
console.log('tree result', result);
|
|
72
|
+
this.treeView.campoId = this.campoId;
|
|
73
|
+
this.treeView.campoPai = this.campoPai;
|
|
74
|
+
this.treeView.campoLabel = this.campoLabel;
|
|
75
|
+
this.treeView.itens = result;
|
|
76
|
+
this.treeView.arvoreClick(false);
|
|
77
|
+
loading.dismiss();
|
|
78
|
+
},
|
|
79
|
+
error: (error) => {
|
|
80
|
+
loading.dismiss();
|
|
81
|
+
console.log("Erro ao carregar os registros.<br>Tente mais tarde.");
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
clickRegistro(evento) {
|
|
86
|
+
if (evento.Id > 0) {
|
|
87
|
+
this.modalCtrl.dismiss({ Id: evento.Id });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
expandir() {
|
|
91
|
+
this.treeView.expandir();
|
|
92
|
+
}
|
|
93
|
+
//utils
|
|
94
|
+
async showLoading(msg, cancelable = false) {
|
|
95
|
+
const loading = await this.loadingCtrl.create({
|
|
96
|
+
message: msg,
|
|
97
|
+
backdropDismiss: cancelable
|
|
98
|
+
//duration: 2000
|
|
99
|
+
});
|
|
100
|
+
/*
|
|
101
|
+
loading.onDidDismiss().then(() => {
|
|
102
|
+
console.log('loading dissmissed', request);
|
|
103
|
+
if (request.subscription) {
|
|
104
|
+
request.subscription.unsubscribe();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
*/
|
|
108
|
+
await loading.present();
|
|
109
|
+
return loading;
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ModelTreeviewComponent, deps: [{ token: 'LibConfigService' }, { token: i1.ModalController }, { token: i2.HttpClient }, { token: i1.LoadingController }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ModelTreeviewComponent, selector: "kb-model-treeview", inputs: { textoPesquisa: "textoPesquisa" }, viewQueries: [{ propertyName: "treeView", first: true, predicate: ["treeViewComp"], descendants: true }], ngImport: i0, template: "<ion-header>\r\n <ion-toolbar color=\"secondary\">\r\n <ion-title>{{ titulo }}</ion-title>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"atualizaArvoreEntidade(tipo)\">\r\n <ion-icon slot=\"icon-only\" name=\"refresh\"></ion-icon>\r\n </ion-button>\r\n <ion-button (click)=\"modalCtrl.dismiss()\">Fechar</ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ion-content>\r\n <ion-item>\r\n <ion-button style=\"box-shadow: #4c8dff 0px 2px 2px 0.05px;\" fill=\"outline\" (click)=\"expandir()\">\r\n <ion-icon name=\"expand-outline\"></ion-icon>\r\n </ion-button> \r\n </ion-item>\r\n <kb-tree-view #treeViewComp [campoId]=\"campoId\" [campoPai]=\"campoPai\" [campoLabel]=\"'LabelTree'\" (selecionarRegistro)=\"clickRegistro($event)\"></kb-tree-view>\r\n </ion-content>", styles: [""], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.TreeViewComponent, selector: "kb-tree-view", inputs: ["itens", "campoId", "campoPai", "campoLabel", "cadastro", "endpoint", "caixaClass", "currentSearch"], outputs: ["beforeUpdate", "selecionarRegistro"] }] }); }
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ModelTreeviewComponent, decorators: [{
|
|
115
|
+
type: Component,
|
|
116
|
+
args: [{ selector: 'kb-model-treeview', template: "<ion-header>\r\n <ion-toolbar color=\"secondary\">\r\n <ion-title>{{ titulo }}</ion-title>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"atualizaArvoreEntidade(tipo)\">\r\n <ion-icon slot=\"icon-only\" name=\"refresh\"></ion-icon>\r\n </ion-button>\r\n <ion-button (click)=\"modalCtrl.dismiss()\">Fechar</ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ion-content>\r\n <ion-item>\r\n <ion-button style=\"box-shadow: #4c8dff 0px 2px 2px 0.05px;\" fill=\"outline\" (click)=\"expandir()\">\r\n <ion-icon name=\"expand-outline\"></ion-icon>\r\n </ion-button> \r\n </ion-item>\r\n <kb-tree-view #treeViewComp [campoId]=\"campoId\" [campoPai]=\"campoPai\" [campoLabel]=\"'LabelTree'\" (selecionarRegistro)=\"clickRegistro($event)\"></kb-tree-view>\r\n </ion-content>" }]
|
|
117
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
118
|
+
type: Inject,
|
|
119
|
+
args: ['LibConfigService']
|
|
120
|
+
}] }, { type: i1.ModalController }, { type: i2.HttpClient }, { type: i1.LoadingController }], propDecorators: { textoPesquisa: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], treeView: [{
|
|
123
|
+
type: ViewChild,
|
|
124
|
+
args: ["treeViewComp"]
|
|
125
|
+
}] } });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdHJlZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwcHJvamVjdC1jb21wb25lbnRzL3NyYy9saWIvbW9kZWwtdHJlZXZpZXcvbW9kZWwtdHJlZXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwcHJvamVjdC1jb21wb25lbnRzL3NyYy9saWIvbW9kZWwtdHJlZXZpZXcvbW9kZWwtdHJlZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBV3ZGLE1BQU0sT0FBTyxzQkFBc0I7SUFzQmpDLFlBQWdELE1BQWlCLEVBQ3hELFNBQTBCLEVBQ3pCLFVBQXNCLEVBQ3RCLFdBQThCO1FBSFEsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUN4RCxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQXhCeEMsV0FBTSxHQUFXLFlBQVksQ0FBQztRQUlyQixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQWFwQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRzNCLGFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUljLENBQUM7SUFFN0MsUUFBUTtJQUNSLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLElBQVk7UUFDdkMsSUFBSSxhQUEyQixDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7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QixPQUFPLENBQUMsR0FBRyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7WUFDckUsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTTtRQUNsQixJQUFJLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPO0lBQ1AsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFXLEVBQUUsYUFBc0IsS0FBSztRQUN4RCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQzVDLE9BQU8sRUFBRSxHQUFHO1lBQ1osZUFBZSxFQUFFLFVBQVU7WUFDM0IsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQztRQUNIOzs7Ozs7O1VBT0U7UUFDRixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixPQUFPLE9BQU8sQ0FBQztJQUVqQixDQUFDOzhHQTFJVSxzQkFBc0Isa0JBc0JiLGtCQUFrQjtrR0F0QjNCLHNCQUFzQiwrTUNYbkMseTNCQW1CZ0I7OzJGRFJILHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQTBCaEIsTUFBTTsyQkFBQyxrQkFBa0I7Z0lBakI3QixhQUFhO3NCQUFyQixLQUFLO2dCQWNxQixRQUFRO3NCQUFsQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgUHJlZGljYXRlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29udHJvbGxlciwgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBMaWJDb25maWcgfSBmcm9tICcuLi9saWItY29uZmlnJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrYi1tb2RlbC10cmVldmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLXRyZWV2aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC10cmVldmlldy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RlbFRyZWV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICB0aXR1bG86IHN0cmluZyA9IFwiU2VsZWNpb25hclwiO1xyXG4gIGNhbXBvSWQ6IHN0cmluZztcclxuICBjYW1wb1BhaTogc3RyaW5nO1xyXG4gIGNhbXBvTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSB0ZXh0b1Blc3F1aXNhOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGVtcHJlc2FTZWxlY2lvbmFkYUlkOiBudW1iZXI7XHJcbiAgZW1wcmVzYUNvbnRhYmlsaWRhZGVJZDogbnVtYmVyO1xyXG4gIGxpc3RhQXJ2b3JlOiBhbnlbXTtcclxuICB0aXBvOiBzdHJpbmc7XHJcbiAgLy91cmwgZGEgQVBJIHBhcmEgcGVzcXVpc2FyIG9zIGl0ZW5zXHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uQ2xpY2s6IFN1YnNjcmlwdGlvbjtcclxuICBzdWJzY3JpYmVJZDogc3RyaW5nO1xyXG4gIC8vZnVuw6fDo28gcGFyYSBmaWx0cmFyIHJlZ2lzdHJvcyBxdWUgcG9kZW0gc2VyIGNsaWNhZG9zXHJcbiAgZmlsdGVyRnVuY3Rpb246IFByZWRpY2F0ZTxhbnk+O1xyXG4gIC8vZXNwZWNpZmljb3NcclxuICBwbGFub0NvbnRhczogbnVtYmVyO1xyXG4gIG1heGltaXphcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoXCJ0cmVlVmlld0NvbXBcIikgdHJlZVZpZXc6IFRyZWVWaWV3Q29tcG9uZW50O1xyXG5cclxuICBCQVNFX0FQSSA9IHRoaXMuY29uZmlnLmFwaVVybDtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KCdMaWJDb25maWdTZXJ2aWNlJykgcHJpdmF0ZSBjb25maWc6IExpYkNvbmZpZyxcclxuICAgIHB1YmxpYyBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgbG9hZGluZ0N0cmw6IExvYWRpbmdDb250cm9sbGVyKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBpb25WaWV3RGlkRW50ZXIoKSB7XHJcbiAgICB0aGlzLmF0dWFsaXphQXJ2b3JlRW50aWRhZGUodGhpcy50aXBvKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGF0dWFsaXphQXJ2b3JlRW50aWRhZGUodGlwbzogc3RyaW5nKSB7XHJcbiAgICBsZXQgc3Vic2NyaXB0aW9uQzogU3Vic2NyaXB0aW9uO1xyXG4gICAgdGhpcy50cmVlVmlldy5jYWRhc3RybyA9IHRoaXMuc3Vic2NyaWJlSWQ7XHJcbiAgICBsZXQgbG9hZGluZyA9IGF3YWl0IHRoaXMuc2hvd0xvYWRpbmcoXCJQZXNxdWlzYW5kby4uLlwiLCB0cnVlKTtcclxuICAgIGxvYWRpbmcub25EaWREaXNtaXNzKCkudGhlbigoKSA9PiB7XHJcbiAgICAgIHN1YnNjcmlwdGlvbkM/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVybCA9IHRoaXMudXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IHRoaXMudXJsIDogYCR7dGhpcy5CQVNFX0FQSX0vJHt0aGlzLnVybH1gO1xyXG5cclxuICAgIHZhciB1cmwgPSB0aGlzLnVybC5yZXBsYWNlKCc8PEVNUFJFU0E+PicsIHRoaXMuZW1wcmVzYVNlbGVjaW9uYWRhSWQudG9TdHJpbmcoKSk7XHJcbiAgICB2YXIgdXJsID0gdGhpcy51cmwucmVwbGFjZSgnPDxGSUxUUk8+PicsICcnKTtcclxuICAgIC8vIGlmICh0aGlzLnRleHRvUGVzcXVpc2EpIHtcclxuICAgIC8vICAgdXJsICs9IGA/ZmlsdHJvPSR7dGhpcy50ZXh0b1Blc3F1aXNhfWA7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgc3Vic2NyaXB0aW9uQyA9IHRoaXMuaHR0cENsaWVudC5nZXQodXJsKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzdWx0OiBhbnlbXSkgPT4ge1xyXG5cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICBlbXByZXNhQ29udGF0by5mb3JFYWNoKChlYykgPT4ge1xyXG4gICAgICAgICAgZWMuTGFiZWxUcmVlID0gZWMuTm9tZTtcclxuICAgICAgICAgIGVjLkVtcHJlc2FDb250YXRvUGFpSWQgPSBudWxsOyAvL2NhbXBvIGZpY3RpY2lvIHBhcmEgbW9udGFyIGFydm9yZVxyXG4gICAgICAgICAgZWMuQ2xpY2FibGVUcmVlID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy50cmVlVmlldy5jYW1wb0lkID0gXCJFbXByZXNhQ29udGF0b0lkXCI7XHJcbiAgICAgICAgdGhpcy50cmVlVmlldy5jYW1wb1BhaSA9IFwiRW1wcmVzYUNvbnRhdG9QYWlJZFwiO1xyXG4gICAgICAgIHRoaXMudHJlZVZpZXcuY2FtcG9MYWJlbCA9IFwiTGFiZWxUcmVlXCI7XHJcbiAgICAgICAgdGhpcy50cmVlVmlldy5pdGVucyA9IGVtcHJlc2FDb250YXRvO1xyXG4gICAgICAgIHRoaXMudHJlZVZpZXcuYXJ2b3JlQ2xpY2soZmFsc2UpO1xyXG4gICAgICAgICovXHJcblxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FtcG9QYWkpIHtcclxuICAgICAgICAgIHRoaXMuY2FtcG9QYWkgPSBgJHt0aGlzLmNhbXBvSWR9UGFpYDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICByZXN1bHQuZm9yRWFjaCgoY2MpID0+IHtcclxuICAgICAgICAgIGNjLkxhYmVsVHJlZSA9IGNjW3RoaXMuY2FtcG9MYWJlbF07XHJcbiAgICAgICAgICBpZiAoIWNjW3RoaXMuY2FtcG9QYWldKSB7XHJcbiAgICAgICAgICAgIGNjW3RoaXMuY2FtcG9QYWldID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5maWx0ZXJGdW5jdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsaWNhYmxlID0gW3sgLi4uY2MgfV0uZmluZCh0aGlzLmZpbHRlckZ1bmN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKGNsaWNhYmxlICE9IG51bGwgJiYgY2MuQ2xpY2FibGVUcmVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICBjYy5DbGljYWJsZVRyZWUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNjLkNsaWNhYmxlVHJlZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYy5DbGljYWJsZVRyZWUgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygndHJlZSByZXN1bHQnLCByZXN1bHQpO1xyXG5cclxuICAgICAgICB0aGlzLnRyZWVWaWV3LmNhbXBvSWQgPSB0aGlzLmNhbXBvSWQ7XHJcbiAgICAgICAgdGhpcy50cmVlVmlldy5jYW1wb1BhaSA9IHRoaXMuY2FtcG9QYWk7XHJcbiAgICAgICAgdGhpcy50cmVlVmlldy5jYW1wb0xhYmVsID0gdGhpcy5jYW1wb0xhYmVsO1xyXG4gICAgICAgIHRoaXMudHJlZVZpZXcuaXRlbnMgPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy50cmVlVmlldy5hcnZvcmVDbGljayhmYWxzZSk7XHJcblxyXG4gICAgICAgIGxvYWRpbmcuZGlzbWlzcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgbG9hZGluZy5kaXNtaXNzKCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJFcnJvIGFvIGNhcnJlZ2FyIG9zIHJlZ2lzdHJvcy48YnI+VGVudGUgbWFpcyB0YXJkZS5cIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGNsaWNrUmVnaXN0cm8oZXZlbnRvKSB7XHJcbiAgICBpZiAoZXZlbnRvLklkID4gMCkge1xyXG4gICAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKHsgSWQ6IGV2ZW50by5JZCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cGFuZGlyKCkge1xyXG4gICAgdGhpcy50cmVlVmlldy5leHBhbmRpcigpOyAgXHJcbiAgfVxyXG5cclxuICAvL3V0aWxzXHJcbiAgYXN5bmMgc2hvd0xvYWRpbmcobXNnOiBzdHJpbmcsIGNhbmNlbGFibGU6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8SFRNTElvbkxvYWRpbmdFbGVtZW50PiB7XHJcbiAgICBjb25zdCBsb2FkaW5nID0gYXdhaXQgdGhpcy5sb2FkaW5nQ3RybC5jcmVhdGUoe1xyXG4gICAgICBtZXNzYWdlOiBtc2csXHJcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogY2FuY2VsYWJsZVxyXG4gICAgICAvL2R1cmF0aW9uOiAyMDAwXHJcbiAgICB9KTtcclxuICAgIC8qXHJcbiAgICBsb2FkaW5nLm9uRGlkRGlzbWlzcygpLnRoZW4oKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygnbG9hZGluZyBkaXNzbWlzc2VkJywgcmVxdWVzdCk7XHJcbiAgICAgIGlmIChyZXF1ZXN0LnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgIHJlcXVlc3Quc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgKi9cclxuICAgIGF3YWl0IGxvYWRpbmcucHJlc2VudCgpO1xyXG4gICAgcmV0dXJuIGxvYWRpbmc7XHJcblxyXG4gIH1cclxuICBcclxufVxyXG4iLCI8aW9uLWhlYWRlcj5cclxuICAgIDxpb24tdG9vbGJhciBjb2xvcj1cInNlY29uZGFyeVwiPlxyXG4gICAgICA8aW9uLXRpdGxlPnt7IHRpdHVsbyB9fTwvaW9uLXRpdGxlPlxyXG4gICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhdHVhbGl6YUFydm9yZUVudGlkYWRlKHRpcG8pXCI+XHJcbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJyZWZyZXNoXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm1vZGFsQ3RybC5kaXNtaXNzKClcIj5GZWNoYXI8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8L2lvbi10b29sYmFyPlxyXG4gIDwvaW9uLWhlYWRlcj5cclxuICBcclxuICA8aW9uLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWl0ZW0+XHJcbiAgICAgIDxpb24tYnV0dG9uIHN0eWxlPVwiYm94LXNoYWRvdzogICM0YzhkZmYgMHB4IDJweCAycHggMC4wNXB4O1wiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImV4cGFuZGlyKClcIj5cclxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImV4cGFuZC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgPC9pb24tYnV0dG9uPiAgICBcclxuICAgIDwvaW9uLWl0ZW0+XHJcbiAgICA8a2ItdHJlZS12aWV3ICN0cmVlVmlld0NvbXAgW2NhbXBvSWRdPVwiY2FtcG9JZFwiIFtjYW1wb1BhaV09XCJjYW1wb1BhaVwiIFtjYW1wb0xhYmVsXT1cIidMYWJlbFRyZWUnXCIgKHNlbGVjaW9uYXJSZWdpc3Rybyk9XCJjbGlja1JlZ2lzdHJvKCRldmVudClcIj48L2tiLXRyZWUtdmlldz5cclxuICA8L2lvbi1jb250ZW50PiJdfQ==
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../tree-view-nivel/tree-view-nivel.component";
|
|
5
|
+
export class TreeViewComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.itens = [];
|
|
8
|
+
this.caixaClass = 'caixa';
|
|
9
|
+
this.beforeUpdate = new EventEmitter();
|
|
10
|
+
this.selecionarRegistro = new EventEmitter();
|
|
11
|
+
this.arvore = [];
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
//throw new Error('Method not implemented.');
|
|
15
|
+
}
|
|
16
|
+
montaArvore(pai, arvore) {
|
|
17
|
+
if (arvore && arvore.length > 0) {
|
|
18
|
+
//procurar os filhos de cada no
|
|
19
|
+
arvore.forEach(f => {
|
|
20
|
+
//console.log('no atual:', f, );
|
|
21
|
+
let filhos = this.itens.filter(i => i[this.campoPai] == f.Id);
|
|
22
|
+
//console.log('filhos atual:', filhos);
|
|
23
|
+
f.Filhos = [];
|
|
24
|
+
filhos.forEach(fi => {
|
|
25
|
+
f.Filhos.push({ Id: fi[this.campoId], Pai: f.Id, Label: fi[this.campoLabel], Filhos: [], Expandido: false, Clicable: (fi['ClicableTree'] == null || fi['ClicableTree'] === true) });
|
|
26
|
+
});
|
|
27
|
+
return this.montaArvore(0, f.Filhos);
|
|
28
|
+
});
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
//console.log('sem filhos');
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
arvoreClick(before = true) {
|
|
37
|
+
if (this.beforeUpdate && before) {
|
|
38
|
+
this.beforeUpdate.emit();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
this.arvore = [];
|
|
42
|
+
//console.log('tree itens', this.itens);
|
|
43
|
+
if (this.itens && this.itens.length > 0) {
|
|
44
|
+
//montar arvore pais
|
|
45
|
+
this.itens.forEach(it => {
|
|
46
|
+
if (it[this.campoPai] == null) {
|
|
47
|
+
//é pai
|
|
48
|
+
this.arvore.push({ Id: it[this.campoId], Pai: null, Label: it[this.campoLabel], Filhos: [], Expandido: false, Clicable: (it['ClicableTree'] == null || it['ClicableTree'] === true) });
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
this.montaArvore(0, this.arvore);
|
|
52
|
+
console.log('arvore', this.arvore);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
expandir(arvore = null) {
|
|
56
|
+
if (arvore == null) {
|
|
57
|
+
arvore = this.arvore;
|
|
58
|
+
}
|
|
59
|
+
if (arvore && arvore.length > 0) {
|
|
60
|
+
//procurar os filhos de cada no
|
|
61
|
+
arvore.forEach(f => {
|
|
62
|
+
//expandir
|
|
63
|
+
f.Expandido = true;
|
|
64
|
+
return this.expandir(f.Filhos);
|
|
65
|
+
});
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
//console.log('sem filhos');
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
carregarRegistro(node) {
|
|
74
|
+
console.log('carrega registro', node);
|
|
75
|
+
this.selecionarRegistro.next({ Cadastro: this.cadastro, Id: node.Id });
|
|
76
|
+
}
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: TreeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: TreeViewComponent, selector: "kb-tree-view", inputs: { itens: "itens", campoId: "campoId", campoPai: "campoPai", campoLabel: "campoLabel", cadastro: "cadastro", endpoint: "endpoint", caixaClass: "caixaClass", currentSearch: "currentSearch" }, outputs: { beforeUpdate: "beforeUpdate", selecionarRegistro: "selecionarRegistro" }, ngImport: i0, template: "<div style=\"position: relative; height: auto; padding-left: 2%; background-color: white;\">\r\n \r\n <div *ngIf=\"arvore\" [class]=\"caixaClass\" style=\"padding-left: 6px; font-size: 12px;\">\r\n <!-- raiz -->\r\n <div *ngFor=\"let raiz of arvore\" class=\"coluna\">\r\n <kb-tree-view-nivel [nivel]=\"0\" [node]=\"raiz\" [currentSearch]=\"currentSearch\" (nivelClick)=\"raiz.Clicable === true ? carregarRegistro(raiz) : null\">\r\n </kb-tree-view-nivel> \r\n \r\n <div *ngIf=\"raiz.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel1 of raiz.Filhos\" draggable=\"true\">\r\n <kb-tree-view-nivel [nivel]=\"1\" [node]=\"nivel1\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel1.Clicable === true ? carregarRegistro(nivel1): null\">\r\n </kb-tree-view-nivel> \r\n \r\n <div *ngIf=\"nivel1 && nivel1.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel2 of nivel1.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"2\" [node]=\"nivel2\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel2.Clicable === true ? carregarRegistro(nivel2): null\">\r\n </kb-tree-view-nivel> \r\n \r\n <div *ngIf=\"nivel2 && nivel2.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel3 of nivel2.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"3\" [node]=\"nivel3\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel3.Clicable === true ? carregarRegistro(nivel3): null\">\r\n </kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel3 && nivel3.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel4 of nivel3.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"4\" [node]=\"nivel4\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel4.Clicable === true ? carregarRegistro(nivel4): null\">\r\n </kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel4 && nivel4.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel5 of nivel4.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"5\" [node]=\"nivel5\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel5.Clicable === true ? carregarRegistro(nivel5): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel5 && nivel5.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel6 of nivel5.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"6\" [node]=\"nivel6\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel6.Clicable === true ? carregarRegistro(nivel6): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel6 && nivel6.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel7 of nivel6.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"7\" [node]=\"nivel7\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel7.Clicable === true ? carregarRegistro(nivel7): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel7 && nivel7.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel8 of nivel7.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"8\" [node]=\"nivel8\"\r\n (nivelClick)=\"nivel8.Clicable === true ? carregarRegistro(nivel8): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel8 && nivel8.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel9 of nivel8.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"9\" [node]=\"nivel9\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel9.Clicable === true ? carregarRegistro(nivel9): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel9 && nivel9.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel10 of nivel9.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"10\" [node]=\"nivel10\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel10.Clicable === true ? carregarRegistro(nivel10): null\"></kb-tree-view-nivel>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>", styles: [".boxSeta{margin:2px;font-size:large;color:#09459e;cursor:pointer}.caixa{border:2px transparent solid;padding:3px;width:100%;position:relative;overflow-y:auto;background-color:#fff;border-radius:5px;height:100%}.coluna{padding-bottom:10px}.filho{padding-top:6px}.node-link{cursor:pointer}.caixa-agrupado{border:2px transparent solid;padding:3px;height:701px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}.caixa-empresa{border:2px transparent solid;padding:3px;height:340px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TreeViewNivelComponent, selector: "kb-tree-view-nivel", inputs: ["node", "nivel", "currentSearch"], outputs: ["nivelClick"] }] }); }
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: TreeViewComponent, decorators: [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'kb-tree-view', template: "<div style=\"position: relative; height: auto; padding-left: 2%; background-color: white;\">\r\n \r\n <div *ngIf=\"arvore\" [class]=\"caixaClass\" style=\"padding-left: 6px; font-size: 12px;\">\r\n <!-- raiz -->\r\n <div *ngFor=\"let raiz of arvore\" class=\"coluna\">\r\n <kb-tree-view-nivel [nivel]=\"0\" [node]=\"raiz\" [currentSearch]=\"currentSearch\" (nivelClick)=\"raiz.Clicable === true ? carregarRegistro(raiz) : null\">\r\n </kb-tree-view-nivel> \r\n \r\n <div *ngIf=\"raiz.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel1 of raiz.Filhos\" draggable=\"true\">\r\n <kb-tree-view-nivel [nivel]=\"1\" [node]=\"nivel1\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel1.Clicable === true ? carregarRegistro(nivel1): null\">\r\n </kb-tree-view-nivel> \r\n \r\n <div *ngIf=\"nivel1 && nivel1.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel2 of nivel1.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"2\" [node]=\"nivel2\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel2.Clicable === true ? carregarRegistro(nivel2): null\">\r\n </kb-tree-view-nivel> \r\n \r\n <div *ngIf=\"nivel2 && nivel2.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel3 of nivel2.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"3\" [node]=\"nivel3\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel3.Clicable === true ? carregarRegistro(nivel3): null\">\r\n </kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel3 && nivel3.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel4 of nivel3.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"4\" [node]=\"nivel4\" [currentSearch]=\"currentSearch\" (nivelClick)=\"nivel4.Clicable === true ? carregarRegistro(nivel4): null\">\r\n </kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel4 && nivel4.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel5 of nivel4.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"5\" [node]=\"nivel5\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel5.Clicable === true ? carregarRegistro(nivel5): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel5 && nivel5.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel6 of nivel5.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"6\" [node]=\"nivel6\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel6.Clicable === true ? carregarRegistro(nivel6): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel6 && nivel6.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel7 of nivel6.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"7\" [node]=\"nivel7\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel7.Clicable === true ? carregarRegistro(nivel7): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel7 && nivel7.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel8 of nivel7.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"8\" [node]=\"nivel8\"\r\n (nivelClick)=\"nivel8.Clicable === true ? carregarRegistro(nivel8): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel8 && nivel8.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel9 of nivel8.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"9\" [node]=\"nivel9\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel9.Clicable === true ? carregarRegistro(nivel9): null\"></kb-tree-view-nivel>\r\n \r\n <div *ngIf=\"nivel9 && nivel9.Expandido\" class=\"filho\">\r\n <div *ngFor=\"let nivel10 of nivel9.Filhos\">\r\n <kb-tree-view-nivel [nivel]=\"10\" [node]=\"nivel10\" [currentSearch]=\"currentSearch\"\r\n (nivelClick)=\"nivel10.Clicable === true ? carregarRegistro(nivel10): null\"></kb-tree-view-nivel>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>", styles: [".boxSeta{margin:2px;font-size:large;color:#09459e;cursor:pointer}.caixa{border:2px transparent solid;padding:3px;width:100%;position:relative;overflow-y:auto;background-color:#fff;border-radius:5px;height:100%}.coluna{padding-bottom:10px}.filho{padding-top:6px}.node-link{cursor:pointer}.caixa-agrupado{border:2px transparent solid;padding:3px;height:701px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}.caixa-empresa{border:2px transparent solid;padding:3px;height:340px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}\n"] }]
|
|
83
|
+
}], propDecorators: { itens: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], campoId: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], campoPai: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], campoLabel: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], cadastro: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], endpoint: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], caixaClass: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], beforeUpdate: [{
|
|
98
|
+
type: Output
|
|
99
|
+
}], currentSearch: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], selecionarRegistro: [{
|
|
102
|
+
type: Output
|
|
103
|
+
}] } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcHByb2plY3QtY29tcG9uZW50cy9zcmMvbGliL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwcHJvamVjdC1jb21wb25lbnRzL3NyYy9saWIvdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUS9FLE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFNVyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBT2xCLGVBQVUsR0FBVyxPQUFPLENBQUM7UUFDNUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEQsV0FBTSxHQUFXLEVBQUUsQ0FBQztLQXNFckI7SUFwRUMsUUFBUTtRQUNOLDZDQUE2QztJQUMvQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ3JDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLCtCQUErQjtZQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqQixnQ0FBZ0M7Z0JBQ2hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlELHVDQUF1QztnQkFDdkMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENB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QUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQzs4R0FsRlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsK1VDUjlCLHU4S0ErRlU7OzJGRHZGRyxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzs4QkFLZixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNFLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmVlIH0gZnJvbSAnYXBwcHJvamVjdC1saWInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrYi10cmVlLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90cmVlLXZpZXcuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKSBpdGVuczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBjYW1wb0lkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2FtcG9QYWk6IHN0cmluZztcclxuICBASW5wdXQoKSBjYW1wb0xhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2FkYXN0cm86IHN0cmluZztcclxuICAvL3NlcmEgbyBub21lIGRhIGNoYW1hZGEgcHV0LCBleDogW2VuZHBvaW50OiBDZW50cm9DdXN0b1BhaV0vaWQvcGFpXHJcbiAgQElucHV0KCkgZW5kcG9pbnQ6IHN0cmluZztcclxuICBASW5wdXQoKSBjYWl4YUNsYXNzOiBzdHJpbmcgPSAnY2FpeGEnO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7ICBcclxuICBASW5wdXQoKSBjdXJyZW50U2VhcmNoOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIHNlbGVjaW9uYXJSZWdpc3RybyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgYXJ2b3JlOiBUcmVlW10gPSBbXTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvL3Rocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuICB9XHJcblxyXG4gIG1vbnRhQXJ2b3JlKHBhaTogbnVtYmVyLCBhcnZvcmU6IFRyZWVbXSk6IG51bWJlciB7XHJcbiAgICBpZiAoYXJ2b3JlICYmIGFydm9yZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vcHJvY3VyYXIgb3MgZmlsaG9zIGRlIGNhZGEgbm9cclxuICAgICAgYXJ2b3JlLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZygnbm8gYXR1YWw6JywgZiwgKTtcclxuICAgICAgICBsZXQgZmlsaG9zID0gdGhpcy5pdGVucy5maWx0ZXIoaSA9PiBpW3RoaXMuY2FtcG9QYWldID09IGYuSWQpO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coJ2ZpbGhvcyBhdHVhbDonLCBmaWxob3MpO1xyXG4gICAgICAgIGYuRmlsaG9zID0gW107XHJcbiAgICAgICAgZmlsaG9zLmZvckVhY2goZmkgPT4ge1xyXG4gICAgICAgICAgZi5GaWxob3MucHVzaCh7IElkOiBmaVt0aGlzLmNhbXBvSWRdLCBQYWk6IGYuSWQsIExhYmVsOiBmaVt0aGlzLmNhbXBvTGFiZWxdLCBGaWxob3M6IFtdLCBFeHBhbmRpZG86IGZhbHNlLCBDbGljYWJsZTogKGZpWydDbGljYWJsZVRyZWUnXSA9PSBudWxsIHx8IGZpWydDbGljYWJsZVRyZWUnXSA9PT0gdHJ1ZSkgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGFBcnZvcmUoMCwgZi5GaWxob3MpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvL2NvbnNvbGUubG9nKCdzZW0gZmlsaG9zJyk7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXJ2b3JlQ2xpY2soYmVmb3JlOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMuYmVmb3JlVXBkYXRlICYmIGJlZm9yZSkge1xyXG4gICAgICB0aGlzLmJlZm9yZVVwZGF0ZS5lbWl0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYXJ2b3JlID0gW107XHJcbiAgICAvL2NvbnNvbGUubG9nKCd0cmVlIGl0ZW5zJywgdGhpcy5pdGVucyk7XHJcbiAgICBpZiAodGhpcy5pdGVucyAmJiB0aGlzLml0ZW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy9tb250YXIgYXJ2b3JlIHBhaXNcclxuICAgICAgdGhpcy5pdGVucy5mb3JFYWNoKGl0ID0+IHtcclxuICAgICAgICBpZiAoaXRbdGhpcy5jYW1wb1BhaV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgLy/DqSBwYWlcclxuICAgICAgICAgIHRoaXMuYXJ2b3JlLnB1c2goeyBJZDogaXRbdGhpcy5jYW1wb0lkXSwgUGFpOiBudWxsLCBMYWJlbDogaXRbdGhpcy5jYW1wb0xhYmVsXSwgRmlsaG9zOiBbXSwgRXhwYW5kaWRvOiBmYWxzZSwgQ2xpY2FibGU6IChpdFsnQ2xpY2FibGVUcmVlJ10gPT0gbnVsbCB8fCBpdFsnQ2xpY2FibGVUcmVlJ10gPT09IHRydWUpIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMubW9udGFBcnZvcmUoMCwgdGhpcy5hcnZvcmUpO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coJ2Fydm9yZScsIHRoaXMuYXJ2b3JlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cGFuZGlyKGFydm9yZTogVHJlZVtdID0gbnVsbCk6IG51bWJlciB7XHJcbiAgICBpZiAoYXJ2b3JlID09IG51bGwpIHtcclxuICAgICAgYXJ2b3JlID0gdGhpcy5hcnZvcmU7XHJcbiAgICB9XHJcbiAgICBpZiAoYXJ2b3JlICYmIGFydm9yZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vcHJvY3VyYXIgb3MgZmlsaG9zIGRlIGNhZGEgbm9cclxuICAgICAgYXJ2b3JlLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgLy9leHBhbmRpclxyXG4gICAgICAgIGYuRXhwYW5kaWRvID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRpcihmLkZpbGhvcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coJ3NlbSBmaWxob3MnKTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYXJyZWdhclJlZ2lzdHJvKG5vZGU6IFRyZWUpIHtcclxuICAgIGNvbnNvbGUubG9nKCdjYXJyZWdhIHJlZ2lzdHJvJywgbm9kZSk7XHJcbiAgICB0aGlzLnNlbGVjaW9uYXJSZWdpc3Ryby5uZXh0KHsgQ2FkYXN0cm86IHRoaXMuY2FkYXN0cm8sIElkOiBub2RlLklkIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IGF1dG87IHBhZGRpbmctbGVmdDogMiU7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1wiPlxyXG4gICAgICBcclxuICAgIDxkaXYgKm5nSWY9XCJhcnZvcmVcIiBbY2xhc3NdPVwiY2FpeGFDbGFzc1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA2cHg7IGZvbnQtc2l6ZTogMTJweDtcIj5cclxuICAgICAgPCEtLSByYWl6IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByYWl6IG9mIGFydm9yZVwiIGNsYXNzPVwiY29sdW5hXCI+XHJcbiAgICAgICAgPGtiLXRyZWUtdmlldy1uaXZlbCBbbml2ZWxdPVwiMFwiIFtub2RlXT1cInJhaXpcIiBbY3VycmVudFNlYXJjaF09XCJjdXJyZW50U2VhcmNoXCIgKG5pdmVsQ2xpY2spPVwicmFpei5DbGljYWJsZSA9PT0gdHJ1ZSA/IGNhcnJlZ2FyUmVnaXN0cm8ocmFpeikgOiBudWxsXCI+XHJcbiAgICAgICAgPC9rYi10cmVlLXZpZXctbml2ZWw+ICAgICAgICBcclxuICBcclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmFpei5FeHBhbmRpZG9cIiBjbGFzcz1cImZpbGhvXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBuaXZlbDEgb2YgcmFpei5GaWxob3NcIiBkcmFnZ2FibGU9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxrYi10cmVlLXZpZXctbml2ZWwgW25pdmVsXT1cIjFcIiBbbm9kZV09XCJuaXZlbDFcIiBbY3VycmVudFNlYXJjaF09XCJjdXJyZW50U2VhcmNoXCIgKG5pdmVsQ2xpY2spPVwibml2ZWwxLkNsaWNhYmxlID09PSB0cnVlID8gY2FycmVnYXJSZWdpc3RybyhuaXZlbDEpOiBudWxsXCI+XHJcbiAgICAgICAgICAgIDwva2ItdHJlZS12aWV3LW5pdmVsPiAgICAgICAgICBcclxuICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5pdmVsMSAmJiBuaXZlbDEuRXhwYW5kaWRvXCIgY2xhc3M9XCJmaWxob1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG5pdmVsMiBvZiBuaXZlbDEuRmlsaG9zXCI+XHJcbiAgICAgICAgICAgICAgICA8a2ItdHJlZS12aWV3LW5pdmVsIFtuaXZlbF09XCIyXCIgW25vZGVdPVwibml2ZWwyXCIgW2N1cnJlbnRTZWFyY2hdPVwiY3VycmVudFNlYXJjaFwiIChuaXZlbENsaWNrKT1cIm5pdmVsMi5DbGljYWJsZSA9PT0gdHJ1ZSA/IGNhcnJlZ2FyUmVnaXN0cm8obml2ZWwyKTogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgPC9rYi10cmVlLXZpZXctbml2ZWw+ICAgICAgICAgICAgICBcclxuICBcclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJuaXZlbDIgJiYgbml2ZWwyLkV4cGFuZGlkb1wiIGNsYXNzPVwiZmlsaG9cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbml2ZWwzIG9mIG5pdmVsMi5GaWxob3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8a2ItdHJlZS12aWV3LW5pdmVsIFtuaXZlbF09XCIzXCIgW25vZGVdPVwibml2ZWwzXCIgW2N1cnJlbnRTZWFyY2hdPVwiY3VycmVudFNlYXJjaFwiIChuaXZlbENsaWNrKT1cIm5pdmVsMy5DbGljYWJsZSA9PT0gdHJ1ZSA/IGNhcnJlZ2FyUmVnaXN0cm8obml2ZWwzKTogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwva2ItdHJlZS12aWV3LW5pdmVsPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJuaXZlbDMgJiYgbml2ZWwzLkV4cGFuZGlkb1wiIGNsYXNzPVwiZmlsaG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG5pdmVsNCBvZiBuaXZlbDMuRmlsaG9zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxrYi10cmVlLXZpZXctbml2ZWwgW25pdmVsXT1cIjRcIiBbbm9kZV09XCJuaXZlbDRcIiBbY3VycmVudFNlYXJjaF09XCJjdXJyZW50U2VhcmNoXCIgKG5pdmVsQ2xpY2spPVwibml2ZWw0LkNsaWNhYmxlID09PSB0cnVlID8gY2FycmVnYXJSZWdpc3RybyhuaXZlbDQpOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwva2ItdHJlZS12aWV3LW5pdmVsPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibml2ZWw0ICYmIG5pdmVsNC5FeHBhbmRpZG9cIiBjbGFzcz1cImZpbGhvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbml2ZWw1IG9mIG5pdmVsNC5GaWxob3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrYi10cmVlLXZpZXctbml2ZWwgW25pdmVsXT1cIjVcIiBbbm9kZV09XCJuaXZlbDVcIiBbY3VycmVudFNlYXJjaF09XCJjdXJyZW50U2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5pdmVsQ2xpY2spPVwibml2ZWw1LkNsaWNhYmxlID09PSB0cnVlID8gY2FycmVnYXJSZWdpc3RybyhuaXZlbDUpOiBudWxsXCI+PC9rYi10cmVlLXZpZXctbml2ZWw+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibml2ZWw1ICYmIG5pdmVsNS5FeHBhbmRpZG9cIiBjbGFzcz1cImZpbGhvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG5pdmVsNiBvZiBuaXZlbDUuRmlsaG9zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtiLXRyZWUtdmlldy1uaXZlbCBbbml2ZWxdPVwiNlwiIFtub2RlXT1cIm5pdmVsNlwiIFtjdXJyZW50U2VhcmNoXT1cImN1cnJlbnRTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5pdmVsQ2xpY2spPVwibml2ZWw2LkNsaWNhYmxlID09PSB0cnVlID8gY2FycmVnYXJSZWdpc3RybyhuaXZlbDYpOiBudWxsXCI+PC9rYi10cmVlLXZpZXctbml2ZWw+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5pdmVsNiAmJiBuaXZlbDYuRXhwYW5kaWRvXCIgY2xhc3M9XCJmaWxob1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbml2ZWw3IG9mIG5pdmVsNi5GaWxob3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtiLXRyZWUtdmlldy1uaXZlbCBbbml2ZWxdPVwiN1wiIFtub2RlXT1cIm5pdmVsN1wiIFtjdXJyZW50U2VhcmNoXT1cImN1cnJlbnRTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuaXZlbENsaWNrKT1cIm5pdmVsNy5DbGljYWJsZSA9PT0gdHJ1ZSA/IGNhcnJlZ2FyUmVnaXN0cm8obml2ZWw3KTogbnVsbFwiPjwva2ItdHJlZS12aWV3LW5pdmVsPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibml2ZWw3ICYmIG5pdmVsNy5FeHBhbmRpZG9cIiBjbGFzcz1cImZpbGhvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbml2ZWw4IG9mIG5pdmVsNy5GaWxob3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrYi10cmVlLXZpZXctbml2ZWwgW25pdmVsXT1cIjhcIiBbbm9kZV09XCJuaXZlbDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobml2ZWxDbGljayk9XCJuaXZlbDguQ2xpY2FibGUgPT09IHRydWUgPyBjYXJyZWdhclJlZ2lzdHJvKG5pdmVsOCk6IG51bGxcIj48L2tiLXRyZWUtdmlldy1uaXZlbD5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJuaXZlbDggJiYgbml2ZWw4LkV4cGFuZGlkb1wiIGNsYXNzPVwiZmlsaG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbml2ZWw5IG9mIG5pdmVsOC5GaWxob3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2ItdHJlZS12aWV3LW5pdmVsIFtuaXZlbF09XCI5XCIgW25vZGVdPVwibml2ZWw5XCIgW2N1cnJlbnRTZWFyY2hdPVwiY3VycmVudFNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobml2ZWxDbGljayk9XCJuaXZlbDkuQ2xpY2FibGUgPT09IHRydWUgPyBjYXJyZWdhclJlZ2lzdHJvKG5pdmVsOSk6IG51bGxcIj48L2tiLXRyZWUtdmlldy1uaXZlbD5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibml2ZWw5ICYmIG5pdmVsOS5FeHBhbmRpZG9cIiBjbGFzcz1cImZpbGhvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBuaXZlbDEwIG9mIG5pdmVsOS5GaWxob3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtiLXRyZWUtdmlldy1uaXZlbCBbbml2ZWxdPVwiMTBcIiBbbm9kZV09XCJuaXZlbDEwXCIgW2N1cnJlbnRTZWFyY2hdPVwiY3VycmVudFNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5pdmVsQ2xpY2spPVwibml2ZWwxMC5DbGljYWJsZSA9PT0gdHJ1ZSA/IGNhcnJlZ2FyUmVnaXN0cm8obml2ZWwxMCk6IG51bGxcIj48L2tiLXRyZWUtdmlldy1uaXZlbD5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/platform-browser";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@ionic/angular";
|
|
6
|
+
export class TreeViewNivelComponent {
|
|
7
|
+
constructor(sanitizer) {
|
|
8
|
+
this.sanitizer = sanitizer;
|
|
9
|
+
this.nivelClick = new EventEmitter();
|
|
10
|
+
this.identacao = '';
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
for (let i = 0; i < this.nivel; i++) {
|
|
14
|
+
this.identacao += '<span> </span>';
|
|
15
|
+
}
|
|
16
|
+
//console.log('IDENT', this.identacao)
|
|
17
|
+
}
|
|
18
|
+
nodeClick() {
|
|
19
|
+
if (this.nivelClick) {
|
|
20
|
+
this.nivelClick.emit(this.node);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
highlight(texto) {
|
|
24
|
+
if (!this.currentSearch)
|
|
25
|
+
return texto;
|
|
26
|
+
let index = texto.toLowerCase().indexOf(this.currentSearch.toLowerCase());
|
|
27
|
+
//console.log(index);
|
|
28
|
+
if (index >= 0) {
|
|
29
|
+
return this.sanitizer.bypassSecurityTrustHtml(texto.substring(0, index) + '<strong style="background-color: yellow !important;">' + texto.substring(index, index + this.currentSearch.length) + '</strong>' + texto.substring(index + this.currentSearch.length)); //texto.replace(this.textoPesquisa, `<strong>${this.textoPesquisa}</strong>`);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return texto;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: TreeViewNivelComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: TreeViewNivelComponent, selector: "kb-tree-view-nivel", inputs: { node: "node", nivel: "nivel", currentSearch: "currentSearch" }, outputs: { nivelClick: "nivelClick" }, ngImport: i0, template: "<span [innerHtml]=\"identacao\" class=\"node-link\"></span>\r\n<!-- mostrar a seta se tiver filhos ou se for raiz (nivel = 0)-->\r\n<span class=\"node-link\" *ngIf=\"!node.Expandido && (node.Filhos.length > 0 || nivel == 0)\" (click)=\"node.Expandido = !node.Expandido\"\r\n class=\"boxSeta\">\r\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\r\n</span>\r\n<span class=\"node-link\" *ngIf=\"node.Expandido\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\r\n <ion-icon name=\"chevron-down-outline\"></ion-icon>\r\n</span>\r\n<!--\r\n<span *ngIf=\"!node.Expandido\"> </span>\r\n-->\r\n\r\n<!-- \r\n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\" title=\"{{ node.Label }}\"> {{ node.Label }}</span>\r\n-->\r\n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\" title=\"{{ node.Label }}\" [innerHTML]=\"highlight(node.Label)\"></span>\r\n", styles: [".node-link{cursor:pointer}.node-disabled{cursor:auto;color:#a9a9a9}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: TreeViewNivelComponent, decorators: [{
|
|
39
|
+
type: Component,
|
|
40
|
+
args: [{ selector: 'kb-tree-view-nivel', template: "<span [innerHtml]=\"identacao\" class=\"node-link\"></span>\r\n<!-- mostrar a seta se tiver filhos ou se for raiz (nivel = 0)-->\r\n<span class=\"node-link\" *ngIf=\"!node.Expandido && (node.Filhos.length > 0 || nivel == 0)\" (click)=\"node.Expandido = !node.Expandido\"\r\n class=\"boxSeta\">\r\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\r\n</span>\r\n<span class=\"node-link\" *ngIf=\"node.Expandido\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\r\n <ion-icon name=\"chevron-down-outline\"></ion-icon>\r\n</span>\r\n<!--\r\n<span *ngIf=\"!node.Expandido\"> </span>\r\n-->\r\n\r\n<!-- \r\n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\" title=\"{{ node.Label }}\"> {{ node.Label }}</span>\r\n-->\r\n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\" title=\"{{ node.Label }}\" [innerHTML]=\"highlight(node.Label)\"></span>\r\n", styles: [".node-link{cursor:pointer}.node-disabled{cursor:auto;color:#a9a9a9}\n"] }]
|
|
41
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { nivelClick: [{
|
|
42
|
+
type: Output
|
|
43
|
+
}], node: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], nivel: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], currentSearch: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LW5pdmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcHByb2plY3QtY29tcG9uZW50cy9zcmMvbGliL3RyZWUtdmlldy1uaXZlbC90cmVlLXZpZXctbml2ZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwcHJvamVjdC1jb21wb25lbnRzL3NyYy9saWIvdHJlZS12aWV3LW5pdmVsL3RyZWUtdmlldy1uaXZlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVEvRSxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFQakMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLMUMsY0FBUyxHQUFXLEVBQUUsQ0FBQztJQUV3QixDQUFDO0lBRWhELFFBQVE7UUFDTixLQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsU0FBUyxJQUFJLHVDQUF1QyxDQUFDO1NBQzNEO1FBQ0Qsc0NBQXNDO0lBQ3hDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDckIsT0FBTyxLQUFLLENBQUM7UUFDZixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMxRSxxQkFBcUI7UUFDckIsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLHVEQUF1RCxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBRSw4RUFBOEU7U0FDblY7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDOzhHQWpDVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyS0NSbkMsMGdDQWlCQTs7MkZEVGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjtpRkFLcEIsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrYi10cmVlLXZpZXctbml2ZWwnLCAgICBcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS12aWV3LW5pdmVsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHJlZS12aWV3LW5pdmVsLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZVZpZXdOaXZlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIG5pdmVsQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgbm9kZTogYW55O1xyXG4gIEBJbnB1dCgpIG5pdmVsOiBudW1iZXI7XHJcbiAgQElucHV0KCkgY3VycmVudFNlYXJjaDogc3RyaW5nOyAgXHJcblxyXG4gIGlkZW50YWNhbzogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm5pdmVsO2krKykge1xyXG4gICAgICB0aGlzLmlkZW50YWNhbyArPSAnPHNwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPic7XHJcbiAgICB9XHJcbiAgICAvL2NvbnNvbGUubG9nKCdJREVOVCcsIHRoaXMuaWRlbnRhY2FvKVxyXG4gIH1cclxuXHJcbiAgbm9kZUNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMubml2ZWxDbGljaykge1xyXG4gICAgICB0aGlzLm5pdmVsQ2xpY2suZW1pdCh0aGlzLm5vZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlnaGxpZ2h0KHRleHRvOiBzdHJpbmcpOiBhbnkgeyAgICBcclxuICAgIGlmICghdGhpcy5jdXJyZW50U2VhcmNoKVxyXG4gICAgICByZXR1cm4gdGV4dG87XHJcbiAgICBsZXQgaW5kZXggPSB0ZXh0by50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5jdXJyZW50U2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgLy9jb25zb2xlLmxvZyhpbmRleCk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGV4dG8uc3Vic3RyaW5nKDAsIGluZGV4KSArICc8c3Ryb25nIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogeWVsbG93ICFpbXBvcnRhbnQ7XCI+JyArIHRleHRvLnN1YnN0cmluZyhpbmRleCwgaW5kZXggKyB0aGlzLmN1cnJlbnRTZWFyY2gubGVuZ3RoKSArICc8L3N0cm9uZz4nICsgdGV4dG8uc3Vic3RyaW5nKGluZGV4ICsgdGhpcy5jdXJyZW50U2VhcmNoLmxlbmd0aCkpOyAgLy90ZXh0by5yZXBsYWNlKHRoaXMudGV4dG9QZXNxdWlzYSwgYDxzdHJvbmc+JHt0aGlzLnRleHRvUGVzcXVpc2F9PC9zdHJvbmc+YCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGV4dG87XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxzcGFuIFtpbm5lckh0bWxdPVwiaWRlbnRhY2FvXCIgY2xhc3M9XCJub2RlLWxpbmtcIj48L3NwYW4+XHJcbjwhLS0gbW9zdHJhciBhIHNldGEgc2UgdGl2ZXIgZmlsaG9zIG91IHNlIGZvciByYWl6IChuaXZlbCA9IDApLS0+XHJcbjxzcGFuIGNsYXNzPVwibm9kZS1saW5rXCIgKm5nSWY9XCIhbm9kZS5FeHBhbmRpZG8gJiYgKG5vZGUuRmlsaG9zLmxlbmd0aCA+IDAgfHwgbml2ZWwgPT0gMClcIiAoY2xpY2spPVwibm9kZS5FeHBhbmRpZG8gPSAhbm9kZS5FeHBhbmRpZG9cIlxyXG4gIGNsYXNzPVwiYm94U2V0YVwiPlxyXG4gIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG48L3NwYW4+XHJcbjxzcGFuIGNsYXNzPVwibm9kZS1saW5rXCIgKm5nSWY9XCJub2RlLkV4cGFuZGlkb1wiIChjbGljayk9XCJub2RlLkV4cGFuZGlkbyA9ICFub2RlLkV4cGFuZGlkb1wiIGNsYXNzPVwiYm94U2V0YVwiPlxyXG4gIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1kb3duLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG48L3NwYW4+XHJcbjwhLS1cclxuPHNwYW4gKm5nSWY9XCIhbm9kZS5FeHBhbmRpZG9cIj4mbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+XHJcbi0tPlxyXG5cclxuPCEtLSBcclxuPHNwYW4gW2NsYXNzXT1cInsgJ25vZGUtbGluaycgOiBub2RlLkNsaWNhYmxlID09PSB0cnVlLCAnbm9kZS1kaXNhYmxlZCc6IG5vZGUuQ2xpY2FibGUgPT09IGZhbHNlIH1cIiAoY2xpY2spPVwibm9kZUNsaWNrKClcIiB0aXRsZT1cInt7IG5vZGUuTGFiZWwgfX1cIj4ge3sgbm9kZS5MYWJlbCB9fTwvc3Bhbj5cclxuLS0+XHJcbjxzcGFuIFtjbGFzc109XCJ7ICdub2RlLWxpbmsnIDogbm9kZS5DbGljYWJsZSA9PT0gdHJ1ZSwgJ25vZGUtZGlzYWJsZWQnOiBub2RlLkNsaWNhYmxlID09PSBmYWxzZSB9XCIgKGNsaWNrKT1cIm5vZGVDbGljaygpXCIgdGl0bGU9XCJ7eyBub2RlLkxhYmVsIH19XCIgW2lubmVySFRNTF09XCJoaWdobGlnaHQobm9kZS5MYWJlbClcIj48L3NwYW4+XHJcbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of appproject-components
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/appproject-components.service';
|
|
5
|
+
export * from './lib/appproject-components.component';
|
|
6
|
+
export * from './lib/appproject-components.module';
|
|
7
|
+
//export manual dos componentes criados
|
|
8
|
+
export * from './lib/baseInputComponent';
|
|
9
|
+
export * from './lib/input-text/input-text.component';
|
|
10
|
+
export * from './lib/input-format/input-format.component';
|
|
11
|
+
export * from './lib/input-select/input-select.component';
|
|
12
|
+
export * from './lib/input-pesquisa/input-pesquisa.component';
|
|
13
|
+
export * from './lib/input-valor/input-valor.component';
|
|
14
|
+
export * from './lib/model-treeview/model-treeview.component';
|
|
15
|
+
export * from './lib/input-area/input-area.component';
|
|
16
|
+
export * from './lib/input-cep/input-cep.component';
|
|
17
|
+
export * from './lib/input-arquivo/input-arquivo.component';
|
|
18
|
+
export * from './lib/entity-edit/entity-edit.component';
|
|
19
|
+
export * from './lib/input-checkbox/input-checkbox.component';
|
|
20
|
+
export * from './lib/input-radio/input-radio.component';
|
|
21
|
+
export * from './lib/tree-view/tree-view.component';
|
|
22
|
+
export * from './lib/tree-view-nivel/tree-view-nivel.component';
|
|
23
|
+
export * from './lib/grid-view/grid-view.component';
|
|
24
|
+
//buttons
|
|
25
|
+
export * from './lib/buttons/btn-action/btn-action.component';
|
|
26
|
+
export * from './lib/buttons/btn-cancelar/btn-cancelar.component';
|
|
27
|
+
export * from './lib/buttons/btn-excluir/btn-excluir.component';
|
|
28
|
+
export * from './lib/buttons/btn-novo/btn-novo.component';
|
|
29
|
+
export * from './lib/buttons/btn-salvar/btn-salvar.component';
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FwcHByb2plY3QtY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELHVDQUF1QztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELFNBQVM7QUFDVCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXBwcHJvamVjdC1jb21wb25lbnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwcHJvamVjdC1jb21wb25lbnRzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBwcm9qZWN0LWNvbXBvbmVudHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwcHJvamVjdC1jb21wb25lbnRzLm1vZHVsZSc7XHJcbi8vZXhwb3J0IG1hbnVhbCBkb3MgY29tcG9uZW50ZXMgY3JpYWRvc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlSW5wdXRDb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC10ZXh0L2lucHV0LXRleHQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXQtZm9ybWF0L2lucHV0LWZvcm1hdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC1zZWxlY3QvaW5wdXQtc2VsZWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LXBlc3F1aXNhL2lucHV0LXBlc3F1aXNhLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LXZhbG9yL2lucHV0LXZhbG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsLXRyZWV2aWV3L21vZGVsLXRyZWV2aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LWFyZWEvaW5wdXQtYXJlYS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC1jZXAvaW5wdXQtY2VwLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LWFycXVpdm8vaW5wdXQtYXJxdWl2by5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnRpdHktZWRpdC9lbnRpdHktZWRpdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC1jaGVja2JveC9pbnB1dC1jaGVja2JveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC1yYWRpby9pbnB1dC1yYWRpby5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyZWUtdmlldy1uaXZlbC90cmVlLXZpZXctbml2ZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JpZC12aWV3L2dyaWQtdmlldy5jb21wb25lbnQnO1xyXG4vL2J1dHRvbnNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9ucy9idG4tYWN0aW9uL2J0bi1hY3Rpb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9ucy9idG4tY2FuY2VsYXIvYnRuLWNhbmNlbGFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbnMvYnRuLWV4Y2x1aXIvYnRuLWV4Y2x1aXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9ucy9idG4tbm92by9idG4tbm92by5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b25zL2J0bi1zYWx2YXIvYnRuLXNhbHZhci5jb21wb25lbnQnOyJdfQ==
|