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.
Files changed (153) hide show
  1. package/esm2022/appproject-components.mjs +5 -0
  2. package/esm2022/lib/appproject-components.component.mjs +22 -0
  3. package/esm2022/lib/appproject-components.module.mjs +159 -0
  4. package/esm2022/lib/appproject-components.service.mjs +14 -0
  5. package/esm2022/lib/baseInputComponent.mjs +69 -0
  6. package/esm2022/lib/buttons/baseBtnComponent.mjs +63 -0
  7. package/esm2022/lib/buttons/btn-action/btn-action.component.mjs +55 -0
  8. package/esm2022/lib/buttons/btn-cancelar/btn-cancelar.component.mjs +25 -0
  9. package/esm2022/lib/buttons/btn-excluir/btn-excluir.component.mjs +29 -0
  10. package/esm2022/lib/buttons/btn-novo/btn-novo.component.mjs +33 -0
  11. package/esm2022/lib/buttons/btn-salvar/btn-salvar.component.mjs +19 -0
  12. package/esm2022/lib/entity-edit/entity-edit.component.mjs +53 -0
  13. package/esm2022/lib/grid-view/grid-view.component.mjs +275 -0
  14. package/esm2022/lib/input-area/input-area.component.mjs +72 -0
  15. package/esm2022/lib/input-arquivo/input-arquivo.component.mjs +154 -0
  16. package/esm2022/lib/input-cep/input-cep.component.mjs +180 -0
  17. package/esm2022/lib/input-checkbox/input-checkbox.component.mjs +51 -0
  18. package/esm2022/lib/input-format/input-format.component.mjs +138 -0
  19. package/esm2022/lib/input-pesquisa/input-pesquisa.component.mjs +557 -0
  20. package/esm2022/lib/input-radio/input-radio.component.mjs +58 -0
  21. package/esm2022/lib/input-select/input-select.component.mjs +110 -0
  22. package/esm2022/lib/input-text/input-text.component.mjs +88 -0
  23. package/esm2022/lib/input-valor/input-valor.component.mjs +161 -0
  24. package/esm2022/lib/lib-config.mjs +2 -0
  25. package/esm2022/lib/model-treeview/model-treeview.component.mjs +126 -0
  26. package/esm2022/lib/tree-view/tree-view.component.mjs +104 -0
  27. package/esm2022/lib/tree-view-nivel/tree-view-nivel.component.mjs +50 -0
  28. package/esm2022/public-api.mjs +30 -0
  29. package/fesm2022/appproject-components.mjs +2531 -0
  30. package/fesm2022/appproject-components.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/appproject-components.component.d.ts +8 -0
  33. package/lib/appproject-components.module.d.ts +36 -0
  34. package/lib/appproject-components.service.d.ts +6 -0
  35. package/lib/baseInputComponent.d.ts +28 -0
  36. package/lib/buttons/baseBtnComponent.d.ts +19 -0
  37. package/lib/buttons/btn-action/btn-action.component.d.ts +21 -0
  38. package/lib/buttons/btn-cancelar/btn-cancelar.component.d.ts +10 -0
  39. package/lib/buttons/btn-excluir/btn-excluir.component.d.ts +12 -0
  40. package/lib/buttons/btn-novo/btn-novo.component.d.ts +13 -0
  41. package/lib/buttons/btn-salvar/btn-salvar.component.d.ts +9 -0
  42. package/lib/entity-edit/entity-edit.component.d.ts +22 -0
  43. package/lib/grid-view/grid-view.component.d.ts +52 -0
  44. package/lib/input-area/input-area.component.d.ts +24 -0
  45. package/lib/input-arquivo/input-arquivo.component.d.ts +43 -0
  46. package/lib/input-cep/input-cep.component.d.ts +29 -0
  47. package/lib/input-checkbox/input-checkbox.component.d.ts +21 -0
  48. package/lib/input-format/input-format.component.d.ts +27 -0
  49. package/lib/input-pesquisa/input-pesquisa.component.d.ts +69 -0
  50. package/lib/input-radio/input-radio.component.d.ts +23 -0
  51. package/lib/input-select/input-select.component.d.ts +32 -0
  52. package/lib/input-text/input-text.component.d.ts +33 -0
  53. package/lib/input-valor/input-valor.component.d.ts +29 -0
  54. package/{src/lib/lib-config.ts → lib/lib-config.d.ts} +3 -4
  55. package/lib/model-treeview/model-treeview.component.d.ts +39 -0
  56. package/lib/tree-view/tree-view.component.d.ts +23 -0
  57. package/lib/tree-view-nivel/tree-view-nivel.component.d.ts +17 -0
  58. package/package.json +26 -15
  59. package/{src/public-api.ts → public-api.d.ts} +24 -30
  60. package/karma.conf.js +0 -44
  61. package/ng-package.json +0 -7
  62. package/src/lib/appproject-components.component.spec.ts +0 -23
  63. package/src/lib/appproject-components.component.ts +0 -20
  64. package/src/lib/appproject-components.module.ts +0 -106
  65. package/src/lib/appproject-components.service.spec.ts +0 -16
  66. package/src/lib/appproject-components.service.ts +0 -9
  67. package/src/lib/baseComponent.scss +0 -162
  68. package/src/lib/baseInputComponent.ts +0 -35
  69. package/src/lib/buttons/baseBtnComponent.ts +0 -38
  70. package/src/lib/buttons/btn-action/btn-action.component.html +0 -11
  71. package/src/lib/buttons/btn-action/btn-action.component.scss +0 -7
  72. package/src/lib/buttons/btn-action/btn-action.component.spec.ts +0 -24
  73. package/src/lib/buttons/btn-action/btn-action.component.ts +0 -31
  74. package/src/lib/buttons/btn-cancelar/btn-cancelar.component.html +0 -14
  75. package/src/lib/buttons/btn-cancelar/btn-cancelar.component.scss +0 -5
  76. package/src/lib/buttons/btn-cancelar/btn-cancelar.component.spec.ts +0 -24
  77. package/src/lib/buttons/btn-cancelar/btn-cancelar.component.ts +0 -19
  78. package/src/lib/buttons/btn-excluir/btn-excluir.component.html +0 -6
  79. package/src/lib/buttons/btn-excluir/btn-excluir.component.scss +0 -5
  80. package/src/lib/buttons/btn-excluir/btn-excluir.component.spec.ts +0 -24
  81. package/src/lib/buttons/btn-excluir/btn-excluir.component.ts +0 -18
  82. package/src/lib/buttons/btn-novo/btn-novo.component.html +0 -14
  83. package/src/lib/buttons/btn-novo/btn-novo.component.scss +0 -8
  84. package/src/lib/buttons/btn-novo/btn-novo.component.spec.ts +0 -24
  85. package/src/lib/buttons/btn-novo/btn-novo.component.ts +0 -20
  86. package/src/lib/buttons/btn-salvar/btn-salvar.component.html +0 -8
  87. package/src/lib/buttons/btn-salvar/btn-salvar.component.scss +0 -5
  88. package/src/lib/buttons/btn-salvar/btn-salvar.component.spec.ts +0 -24
  89. package/src/lib/buttons/btn-salvar/btn-salvar.component.ts +0 -16
  90. package/src/lib/entity-edit/entity-edit.component.html +0 -143
  91. package/src/lib/entity-edit/entity-edit.component.scss +0 -4
  92. package/src/lib/entity-edit/entity-edit.component.spec.ts +0 -23
  93. package/src/lib/entity-edit/entity-edit.component.ts +0 -43
  94. package/src/lib/grid-view/grid-view.component.html +0 -116
  95. package/src/lib/grid-view/grid-view.component.scss +0 -47
  96. package/src/lib/grid-view/grid-view.component.spec.ts +0 -23
  97. package/src/lib/grid-view/grid-view.component.ts +0 -292
  98. package/src/lib/input-area/input-area.component.html +0 -30
  99. package/src/lib/input-area/input-area.component.scss +0 -68
  100. package/src/lib/input-area/input-area.component.spec.ts +0 -23
  101. package/src/lib/input-area/input-area.component.ts +0 -69
  102. package/src/lib/input-arquivo/input-arquivo.component.html +0 -11
  103. package/src/lib/input-arquivo/input-arquivo.component.scss +0 -0
  104. package/src/lib/input-arquivo/input-arquivo.component.spec.ts +0 -23
  105. package/src/lib/input-arquivo/input-arquivo.component.ts +0 -140
  106. package/src/lib/input-cep/input-cep.component.html +0 -38
  107. package/src/lib/input-cep/input-cep.component.scss +0 -0
  108. package/src/lib/input-cep/input-cep.component.spec.ts +0 -23
  109. package/src/lib/input-cep/input-cep.component.ts +0 -186
  110. package/src/lib/input-checkbox/input-checkbox.component.html +0 -12
  111. package/src/lib/input-checkbox/input-checkbox.component.scss +0 -11
  112. package/src/lib/input-checkbox/input-checkbox.component.spec.ts +0 -23
  113. package/src/lib/input-checkbox/input-checkbox.component.ts +0 -48
  114. package/src/lib/input-format/input-format.component.html +0 -32
  115. package/src/lib/input-format/input-format.component.scss +0 -47
  116. package/src/lib/input-format/input-format.component.spec.ts +0 -23
  117. package/src/lib/input-format/input-format.component.ts +0 -139
  118. package/src/lib/input-pesquisa/input-pesquisa.component.html +0 -77
  119. package/src/lib/input-pesquisa/input-pesquisa.component.scss +0 -127
  120. package/src/lib/input-pesquisa/input-pesquisa.component.spec.ts +0 -23
  121. package/src/lib/input-pesquisa/input-pesquisa.component.ts +0 -558
  122. package/src/lib/input-radio/input-radio.component.html +0 -21
  123. package/src/lib/input-radio/input-radio.component.scss +0 -3
  124. package/src/lib/input-radio/input-radio.component.spec.ts +0 -23
  125. package/src/lib/input-radio/input-radio.component.ts +0 -49
  126. package/src/lib/input-select/input-select.component.html +0 -29
  127. package/src/lib/input-select/input-select.component.scss +0 -62
  128. package/src/lib/input-select/input-select.component.spec.ts +0 -23
  129. package/src/lib/input-select/input-select.component.ts +0 -96
  130. package/src/lib/input-text/input-text.component.html +0 -48
  131. package/src/lib/input-text/input-text.component.scss +0 -63
  132. package/src/lib/input-text/input-text.component.spec.ts +0 -23
  133. package/src/lib/input-text/input-text.component.ts +0 -78
  134. package/src/lib/input-valor/input-valor.component.html +0 -32
  135. package/src/lib/input-valor/input-valor.component.scss +0 -47
  136. package/src/lib/input-valor/input-valor.component.spec.ts +0 -23
  137. package/src/lib/input-valor/input-valor.component.ts +0 -164
  138. package/src/lib/model-treeview/model-treeview.component.html +0 -20
  139. package/src/lib/model-treeview/model-treeview.component.scss +0 -0
  140. package/src/lib/model-treeview/model-treeview.component.spec.ts +0 -23
  141. package/src/lib/model-treeview/model-treeview.component.ts +0 -152
  142. package/src/lib/tree-view/tree-view.component.html +0 -96
  143. package/src/lib/tree-view/tree-view.component.scss +0 -50
  144. package/src/lib/tree-view/tree-view.component.spec.ts +0 -23
  145. package/src/lib/tree-view/tree-view.component.ts +0 -92
  146. package/src/lib/tree-view-nivel/tree-view-nivel.component.html +0 -17
  147. package/src/lib/tree-view-nivel/tree-view-nivel.component.scss +0 -8
  148. package/src/lib/tree-view-nivel/tree-view-nivel.component.spec.ts +0 -23
  149. package/src/lib/tree-view-nivel/tree-view-nivel.component.ts +0 -43
  150. package/src/test.ts +0 -15
  151. package/tsconfig.lib.json +0 -15
  152. package/tsconfig.lib.prod.json +0 -10
  153. 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>&nbsp;&nbsp;&nbsp;&nbsp;</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\">&nbsp;&nbsp;&nbsp;</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\">&nbsp;&nbsp;&nbsp;</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==