keevo-components 2.0.30 → 2.0.32

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 (156) hide show
  1. package/esm2022/keevo-components.mjs +5 -0
  2. package/esm2022/lib/api/base-components/base-component-button.mjs +39 -0
  3. package/esm2022/lib/api/base-components/base-component-chart.mjs +104 -0
  4. package/esm2022/lib/api/base-components/base-component-crud-form.mjs +302 -0
  5. package/esm2022/lib/api/base-components/base-component-crud-list.mjs +91 -0
  6. package/esm2022/lib/api/base-components/base-component-crud.mjs +80 -0
  7. package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +31 -0
  8. package/esm2022/lib/api/base-components/base-component-dropdown.mjs +238 -0
  9. package/esm2022/lib/api/base-components/base-component-input.mjs +101 -0
  10. package/esm2022/lib/api/base-components/base-component-multi-select.mjs +174 -0
  11. package/esm2022/lib/api/base-components/base-component-table.mjs +354 -0
  12. package/esm2022/lib/api/base-components/base-component.mjs +51 -0
  13. package/esm2022/lib/api/components/chart/chart.config.mjs +2 -0
  14. package/esm2022/lib/api/components/chart/chart.model.mjs +2 -0
  15. package/esm2022/lib/api/components/chart/orchart.config.mjs +2 -0
  16. package/esm2022/lib/api/components/chart/orchartnode.mjs +2 -0
  17. package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +2 -0
  18. package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +2 -0
  19. package/esm2022/lib/api/components/table/action-item.mjs +2 -0
  20. package/esm2022/lib/api/components/table/kv-menuitem.mjs +46 -0
  21. package/esm2022/lib/api/components/table/table-dropdown-control.mjs +2 -0
  22. package/esm2022/lib/api/components/table/table.config.column.mjs +2 -0
  23. package/esm2022/lib/api/components/table/table.config.mjs +2 -0
  24. package/esm2022/lib/api/components/table/table.paginate.mjs +10 -0
  25. package/esm2022/lib/api/components/table/tabledit.config.mjs +2 -0
  26. package/esm2022/lib/api/components/table/tableedit.config.column.mjs +2 -0
  27. package/esm2022/lib/api/components/tree-table/tree-table-keys.mjs +2 -0
  28. package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +3 -0
  29. package/esm2022/lib/api/directives/directives.module.mjs +30 -0
  30. package/esm2022/lib/api/directives/drag/drag.directive.mjs +52 -0
  31. package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +31 -0
  32. package/esm2022/lib/api/directives/template/template.directive.mjs +24 -0
  33. package/esm2022/lib/api/helpers/component-providers.mjs +16 -0
  34. package/esm2022/lib/api/helpers/keevo-validators.mjs +131 -0
  35. package/esm2022/lib/api/helpers/translate-primeng.mjs +23 -0
  36. package/esm2022/lib/api/modules/primeng.module.mjs +275 -0
  37. package/esm2022/lib/api/pipes/capitalize.pipe.mjs +47 -0
  38. package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +25 -0
  39. package/esm2022/lib/api/pipes/mask.pipe.mjs +29 -0
  40. package/esm2022/lib/api/pipes/pipes.module.mjs +39 -0
  41. package/esm2022/lib/api/pipes/telefone.pipe.mjs +45 -0
  42. package/esm2022/lib/api/services/base.api.service.mjs +74 -0
  43. package/esm2022/lib/api/services/breadcrumbs.service.mjs +62 -0
  44. package/esm2022/lib/api/services/chat.service.mjs +37 -0
  45. package/esm2022/lib/api/services/component.service.mjs +37 -0
  46. package/esm2022/lib/api/services/docs.service.mjs +129 -0
  47. package/esm2022/lib/api/services/form.service.mjs +95 -0
  48. package/esm2022/lib/api/services/image.cutter.service.mjs +191 -0
  49. package/esm2022/lib/api/services/imagens.service.mjs +28 -0
  50. package/esm2022/lib/api/services/notification.service.mjs +69 -0
  51. package/esm2022/lib/api/services/object.service.mjs +39 -0
  52. package/esm2022/lib/api/services/orgchart.service.mjs +64 -0
  53. package/esm2022/lib/api/types/breadcrumb.model.mjs +2 -0
  54. package/esm2022/lib/components/keevo-components.module.mjs +214 -0
  55. package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +133 -0
  56. package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +55 -0
  57. package/esm2022/lib/components/kv-button/kv-button.component.mjs +51 -0
  58. package/esm2022/lib/components/kv-button/kv-button.module.mjs +28 -0
  59. package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +25 -0
  60. package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +39 -0
  61. package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +17 -0
  62. package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +17 -0
  63. package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +39 -0
  64. package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +60 -0
  65. package/esm2022/lib/components/kv-card-selection/kv-card-selection.module.mjs +31 -0
  66. package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +34 -0
  67. package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +28 -0
  68. package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +166 -0
  69. package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +32 -0
  70. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +185 -0
  71. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.module.mjs +44 -0
  72. package/esm2022/lib/components/kv-error/kv-error.component.mjs +26 -0
  73. package/esm2022/lib/components/kv-error/kv-error.module.mjs +35 -0
  74. package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +162 -0
  75. package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +18 -0
  76. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +46 -0
  77. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +20 -0
  78. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +68 -0
  79. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +24 -0
  80. package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +29 -0
  81. package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +34 -0
  82. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +26 -0
  83. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +28 -0
  84. package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +11 -0
  85. package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +19 -0
  86. package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +27 -0
  87. package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +32 -0
  88. package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +135 -0
  89. package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +18 -0
  90. package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +29 -0
  91. package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +102 -0
  92. package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +150 -0
  93. package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +168 -0
  94. package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +30 -0
  95. package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +59 -0
  96. package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +33 -0
  97. package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +38 -0
  98. package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +50 -0
  99. package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +43 -0
  100. package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +24 -0
  101. package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +131 -0
  102. package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +60 -0
  103. package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +60 -0
  104. package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +46 -0
  105. package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +36 -0
  106. package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +42 -0
  107. package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +58 -0
  108. package/esm2022/lib/components/kv-label/kv-label.component.mjs +15 -0
  109. package/esm2022/lib/components/kv-label/kv-label.module.mjs +24 -0
  110. package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +28 -0
  111. package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +72 -0
  112. package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +430 -0
  113. package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +15 -0
  114. package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +16 -0
  115. package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +28 -0
  116. package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +29 -0
  117. package/esm2022/lib/components/kv-login/kv-login.component.mjs +62 -0
  118. package/esm2022/lib/components/kv-login/kv-login.module.mjs +47 -0
  119. package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +98 -0
  120. package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +20 -0
  121. package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +225 -0
  122. package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +59 -0
  123. package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +215 -0
  124. package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +41 -0
  125. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +205 -0
  126. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +51 -0
  127. package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +144 -0
  128. package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +39 -0
  129. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +62 -0
  130. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +28 -0
  131. package/esm2022/lib/components/kv-report/kv-report.component.mjs +44 -0
  132. package/esm2022/lib/components/kv-report/kv-report.module.mjs +24 -0
  133. package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +74 -0
  134. package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +47 -0
  135. package/esm2022/lib/components/kv-table/kv-table.component.mjs +673 -0
  136. package/esm2022/lib/components/kv-table/kv-table.module.mjs +40 -0
  137. package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +323 -0
  138. package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +45 -0
  139. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +516 -0
  140. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +40 -0
  141. package/esm2022/lib/components/kv-tag/kv-tag.component.mjs +18 -0
  142. package/esm2022/lib/components/kv-tag/kv-tag.module.mjs +24 -0
  143. package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +331 -0
  144. package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +39 -0
  145. package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +70 -0
  146. package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +28 -0
  147. package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +40 -0
  148. package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +68 -0
  149. package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +22 -0
  150. package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +78 -0
  151. package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +87 -0
  152. package/esm2022/public-api.mjs +261 -0
  153. package/fesm2022/keevo-components.mjs +5 -3
  154. package/fesm2022/keevo-components.mjs.map +1 -1
  155. package/lib/components/kv-content-viewer/kv-content-viewer.component.d.ts +2 -1
  156. package/package.json +3 -1
@@ -0,0 +1,80 @@
1
+ import { Component } from '@angular/core';
2
+ import { FormService } from '../services/form.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "primeng/dynamicdialog";
5
+ import * as i2 from "../services/notification.service";
6
+ export class BaseComponentCrud {
7
+ constructor(dialogService, notificationService) {
8
+ this.dialogService = dialogService;
9
+ this.notificationService = notificationService;
10
+ this.isReport = false;
11
+ this.itemsReport = [];
12
+ }
13
+ /**
14
+ * Fecha um relatório
15
+ */
16
+ closeReport() {
17
+ this.isReport = false;
18
+ }
19
+ /**
20
+ * Abre um form dialog
21
+ * @param componentType - Componente que será renderizado
22
+ * @param callBackFunction - Função de callback que deverá ser chamada após o fechamento do dialog
23
+ * @param paramsDialog - Parâmetros do dialog
24
+ */
25
+ openDialog(componentType, callBackFunction, paramsDialog) {
26
+ // FormService.openDialog(
27
+ // this.dialogService,
28
+ // componentType,
29
+ // callBackFunction,
30
+ // paramsDialog);
31
+ const dialogRef = FormService.openDialog(this.dialogService, componentType, callBackFunction, paramsDialog);
32
+ // Garante que o estado atual seja mantido no histórico
33
+ // window.history.pushState(null, '', window.location.href);
34
+ // Configura a ação para quando o botão de voltar do navegador é pressionado
35
+ window.onpopstate = function () {
36
+ // Verifica se o dialog está aberto antes de fechá-lo
37
+ if (dialogRef && dialogRef.close) {
38
+ // dialogRef.onClose.subscribe(callBackFunction());
39
+ dialogRef.close();
40
+ }
41
+ };
42
+ }
43
+ /**
44
+ * Imprime um relatório na tela
45
+ * @param obs - Observable com o carregamento do relatório
46
+ */
47
+ printReportFilter(obs) {
48
+ obs
49
+ //.pipe(loading())
50
+ .subscribe({
51
+ next: (res) => {
52
+ this.itemsReport = res;
53
+ this.isReport = true;
54
+ },
55
+ error: (e) => {
56
+ this.toastError(e);
57
+ },
58
+ });
59
+ }
60
+ /**
61
+ * Exibe um toast com um erro
62
+ * @param err - Erro
63
+ */
64
+ toastError(err) {
65
+ if (err) {
66
+ if (err.message) {
67
+ this.notificationService.toastError(err.message);
68
+ }
69
+ }
70
+ }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentCrud, deps: [{ token: i1.DialogService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentCrud, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentCrud, decorators: [{
75
+ type: Component,
76
+ args: [{
77
+ template: '',
78
+ }]
79
+ }], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.NotificationService }] });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWNydWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQU9yRSxNQUFNLE9BQWdCLGlCQUFpQjtJQUlyQyxZQUNTLGFBQTRCLEVBQzVCLG1CQUF3QztRQUR4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTDFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBUSxFQUFFLENBQUM7SUFLMUIsQ0FBQztJQUVKOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxVQUFVLENBQ2xCLGFBQXdCLEVBQ3hCLGdCQUEwQixFQUMxQixZQUEyQjtRQUUzQiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLG1CQUFtQjtRQUNuQixzQkFBc0I7UUFDdEIsbUJBQW1CO1FBRW5CLE1BQU0sU0FBUyxHQUFxQixXQUFXLENBQUMsVUFBVSxDQUN4RCxJQUFJLENBQUMsYUFBYSxFQUNsQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFlBQVksQ0FDYixDQUFDO1FBRUYsdURBQXVEO1FBQ3ZELDREQUE0RDtRQUU1RCw0RUFBNEU7UUFDNUUsTUFBTSxDQUFDLFVBQVUsR0FBRztZQUNsQixxREFBcUQ7WUFDckQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQyxtREFBbUQ7Z0JBQ25ELFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNPLGlCQUFpQixDQUFDLEdBQW9CO1FBQzlDLEdBQUc7WUFDRCxrQkFBa0I7YUFDakIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN2QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVUsQ0FBQyxHQUFRO1FBQzNCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQWpGbUIsaUJBQWlCO2tHQUFqQixpQkFBaUIsb0RBRjNCLEVBQUU7OzJGQUVRLGlCQUFpQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSwgcGFyYW1zRGlhbG9nIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudENydWQge1xyXG4gIHB1YmxpYyBpc1JlcG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpdGVtc1JlcG9ydDogYW55ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogRmVjaGEgdW0gcmVsYXTDs3Jpb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjbG9zZVJlcG9ydCgpIHtcclxuICAgIHRoaXMuaXNSZXBvcnQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFicmUgdW0gZm9ybSBkaWFsb2dcclxuICAgKiBAcGFyYW0gY29tcG9uZW50VHlwZSAtIENvbXBvbmVudGUgcXVlIHNlcsOhIHJlbmRlcml6YWRvXHJcbiAgICogQHBhcmFtIGNhbGxCYWNrRnVuY3Rpb24gLSBGdW7Dp8OjbyBkZSBjYWxsYmFjayBxdWUgZGV2ZXLDoSBzZXIgY2hhbWFkYSBhcMOzcyBvIGZlY2hhbWVudG8gZG8gZGlhbG9nXHJcbiAgICogQHBhcmFtIHBhcmFtc0RpYWxvZyAtIFBhcsOibWV0cm9zIGRvIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvcGVuRGlhbG9nKFxyXG4gICAgY29tcG9uZW50VHlwZTogVHlwZTxhbnk+LFxyXG4gICAgY2FsbEJhY2tGdW5jdGlvbjogRnVuY3Rpb24sXHJcbiAgICBwYXJhbXNEaWFsb2c/OiBwYXJhbXNEaWFsb2dcclxuICApIHtcclxuICAgIC8vIEZvcm1TZXJ2aWNlLm9wZW5EaWFsb2coXHJcbiAgICAvLyAgIHRoaXMuZGlhbG9nU2VydmljZSxcclxuICAgIC8vICAgY29tcG9uZW50VHlwZSxcclxuICAgIC8vICAgY2FsbEJhY2tGdW5jdGlvbixcclxuICAgIC8vICAgcGFyYW1zRGlhbG9nKTtcclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWY6IER5bmFtaWNEaWFsb2dSZWYgPSBGb3JtU2VydmljZS5vcGVuRGlhbG9nKFxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgIGNvbXBvbmVudFR5cGUsXHJcbiAgICAgIGNhbGxCYWNrRnVuY3Rpb24sXHJcbiAgICAgIHBhcmFtc0RpYWxvZ1xyXG4gICAgKTtcclxuXHJcbiAgICAvLyBHYXJhbnRlIHF1ZSBvIGVzdGFkbyBhdHVhbCBzZWphIG1hbnRpZG8gbm8gaGlzdMOzcmljb1xyXG4gICAgLy8gd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsICcnLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XHJcblxyXG4gICAgLy8gQ29uZmlndXJhIGEgYcOnw6NvIHBhcmEgcXVhbmRvIG8gYm90w6NvIGRlIHZvbHRhciBkbyBuYXZlZ2Fkb3Igw6kgcHJlc3Npb25hZG9cclxuICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAvLyBWZXJpZmljYSBzZSBvIGRpYWxvZyBlc3TDoSBhYmVydG8gYW50ZXMgZGUgZmVjaMOhLWxvXHJcbiAgICAgIGlmIChkaWFsb2dSZWYgJiYgZGlhbG9nUmVmLmNsb3NlKSB7XHJcbiAgICAgICAgLy8gZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKGNhbGxCYWNrRnVuY3Rpb24oKSk7XHJcbiAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXByaW1lIHVtIHJlbGF0w7NyaW8gbmEgdGVsYVxyXG4gICAqIEBwYXJhbSBvYnMgLSBPYnNlcnZhYmxlIGNvbSBvIGNhcnJlZ2FtZW50byBkbyByZWxhdMOzcmlvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByaW50UmVwb3J0RmlsdGVyKG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICBvYnNcclxuICAgICAgLy8ucGlwZShsb2FkaW5nKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pdGVtc1JlcG9ydCA9IHJlcztcclxuICAgICAgICAgIHRoaXMuaXNSZXBvcnQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0RXJyb3IoZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGliZSB1bSB0b2FzdCBjb20gdW0gZXJyb1xyXG4gICAqIEBwYXJhbSBlcnIgLSBFcnJvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHRvYXN0RXJyb3IoZXJyOiBhbnkpIHtcclxuICAgIGlmIChlcnIpIHtcclxuICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, Input, ViewChild } from "@angular/core";
2
+ import { BaseComponentDropDown } from "./base-component-dropdown";
3
+ import { KvDropdownComponent } from "../../components/kv-inputs/kv-dropdown/kv-dropdown.component";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../services/component.service";
6
+ import * as i2 from "primeng/dynamicdialog";
7
+ export class BaseComponentDropDownExternal extends BaseComponentDropDown {
8
+ constructor(componentService, dialogService) {
9
+ super(componentService, dialogService);
10
+ }
11
+ ngAfterViewInit() {
12
+ super.ngAfterViewInit();
13
+ if (this.dropDownComponent) {
14
+ this.dropDownComponent.formControl = this.formControl;
15
+ }
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentDropDownExternal, deps: [{ token: i1.ComponentService }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentDropDownExternal, selector: "ng-component", inputs: { formGroup: "formGroup" }, viewQueries: [{ propertyName: "dropDownComponent", first: true, predicate: KvDropdownComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentDropDownExternal, decorators: [{
21
+ type: Component,
22
+ args: [{
23
+ template: '',
24
+ }]
25
+ }], ctorParameters: () => [{ type: i1.ComponentService }, { type: i2.DialogService }], propDecorators: { formGroup: [{
26
+ type: Input
27
+ }], dropDownComponent: [{
28
+ type: ViewChild,
29
+ args: [KvDropdownComponent]
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtZHJvcGRvd24tZXh0ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1kcm9wZG93bi1leHRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7O0FBS25HLE1BQU0sT0FBZ0IsNkJBQThCLFNBQVEscUJBQXFCO0lBSzdFLFlBQ0ksZ0JBQWtDLEVBQ2xDLGFBQTRCO1FBQzVCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVEsZUFBZTtRQUNwQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUQsQ0FBQztJQUNMLENBQUM7OEdBakJpQiw2QkFBNkI7a0dBQTdCLDZCQUE2QiwySUFHcEMsbUJBQW1CLHVFQUxwQixFQUFFOzsyRkFFTSw2QkFBNkI7a0JBSGxELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7aUhBR1ksU0FBUztzQkFBakIsS0FBSztnQkFDMEIsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2R5bmFtaWNkaWFsb2dcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnREcm9wRG93biB9IGZyb20gXCIuL2Jhc2UtY29tcG9uZW50LWRyb3Bkb3duXCI7XHJcbmltcG9ydCB7IEt2RHJvcGRvd25Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9rdi1pbnB1dHMva3YtZHJvcGRvd24va3YtZHJvcGRvd24uY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnREcm9wRG93bkV4dGVybmFsIGV4dGVuZHMgQmFzZUNvbXBvbmVudERyb3BEb3duIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gICAgQFZpZXdDaGlsZChLdkRyb3Bkb3duQ29tcG9uZW50KSBkcm9wRG93bkNvbXBvbmVudCE6IEt2RHJvcGRvd25Db21wb25lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSxcclxuICAgICAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY29tcG9uZW50U2VydmljZSwgZGlhbG9nU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kcm9wRG93bkNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duQ29tcG9uZW50LmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,238 @@
1
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { debounceTime, finalize, of } from 'rxjs';
3
+ import { BaseComponentInput } from './base-component-input';
4
+ import { ObjectService } from '../services/object.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services/component.service";
7
+ import * as i2 from "primeng/dynamicdialog";
8
+ export class BaseComponentDropDown extends BaseComponentInput {
9
+ constructor(componentService, dialogService) {
10
+ super(componentService);
11
+ this.dialogService = dialogService;
12
+ this.capitalize = false;
13
+ this.filter = true;
14
+ this.lazy = false;
15
+ this.loading = false;
16
+ this.showAddButton = false;
17
+ this.showClear = true;
18
+ this.onAddClick = new EventEmitter();
19
+ this.onClick = new EventEmitter();
20
+ this.onLoadCombo = new EventEmitter();
21
+ this.onSelectionChange = new EventEmitter();
22
+ this.onSelectionValue = new EventEmitter();
23
+ this.requestComplete = new EventEmitter();
24
+ this.onFilter = new EventEmitter();
25
+ this.prepositions = [
26
+ 'de',
27
+ 'da',
28
+ 'do',
29
+ 'em',
30
+ 'no',
31
+ 'na',
32
+ 'para',
33
+ 'por',
34
+ 'com',
35
+ 'a',
36
+ 'o',
37
+ 'e',
38
+ ];
39
+ this.loadingCombo = () => {
40
+ if (!this.lazy) {
41
+ return (src) => {
42
+ this.loading = true;
43
+ return src.pipe(finalize(() => {
44
+ this.loading = false;
45
+ }));
46
+ };
47
+ }
48
+ };
49
+ this.registerOnTouched(() => { });
50
+ }
51
+ ngOnInit() {
52
+ super.ngOnInit();
53
+ this.setPlaceHolder('Selecione um valor');
54
+ if (!this.lazy)
55
+ this.carregarCombo();
56
+ }
57
+ addClick(event) {
58
+ this.onAddClick.emit(event);
59
+ }
60
+ carregarCombo(filtro) {
61
+ if (filtro) {
62
+ this.carregarComboObs(this.listarCombo(filtro));
63
+ }
64
+ else {
65
+ this.carregarComboObs(this.listar());
66
+ }
67
+ }
68
+ carregarComboObs(obs) {
69
+ if (obs) {
70
+ obs
71
+ .pipe(debounceTime(450), this.loadingCombo())
72
+ .subscribe({
73
+ next: (data) => {
74
+ this.options = this.capitalizeOptions(data);
75
+ this.filteredOptions = this.options;
76
+ this.requestComplete.emit(true);
77
+ },
78
+ error: (error) => {
79
+ console.log(error);
80
+ },
81
+ });
82
+ }
83
+ }
84
+ emptyMessage() {
85
+ return (this.lazy ? 'Digite para pesquisar' : 'Nenhum resultado encontrado');
86
+ }
87
+ filterOptions(field, value) {
88
+ if (this.options) {
89
+ let lista = ObjectService.filterObject(this.options, field, value);
90
+ if (lista?.length > 0) {
91
+ of(lista).subscribe((opts) => {
92
+ this.filteredOptions = this.capitalizeOptions(opts);
93
+ });
94
+ }
95
+ else
96
+ this.filteredOptions = [];
97
+ }
98
+ }
99
+ listar() { }
100
+ listarCombo(value) { }
101
+ openDialog(componentType, width, height) {
102
+ const ref = this.dialogService.open(componentType, {
103
+ width: width || '70%',
104
+ height: height,
105
+ closable: false,
106
+ maximizable: true,
107
+ data: { popup: true },
108
+ });
109
+ ref.onClose.subscribe((id) => {
110
+ if (id) {
111
+ this.listar()
112
+ .pipe(this.loadingCombo())
113
+ .subscribe((data) => {
114
+ this.options = this.capitalizeOptions(data);
115
+ this.filteredOptions = this.options;
116
+ if (id)
117
+ this.formControl?.setValue(id);
118
+ });
119
+ }
120
+ });
121
+ }
122
+ onInputChange(event) {
123
+ this.onSelectionValue.emit(event);
124
+ //Em nossas implementações o metodo é chamado 2 vezes, em seua segunda chamada o event se torna o objeto selecionado e não o valor, dessa forma o if abaixo apenas emite o objeto
125
+ if (!event?.originalEvent) {
126
+ this.onSelectionChange.emit(event);
127
+ return;
128
+ }
129
+ if (this.formControl) {
130
+ const controlName = this.getName(this.formControl);
131
+ if (controlName) {
132
+ let currentItem = ObjectService.findObject(this.options, this.optionValue ?? controlName, event?.value);
133
+ this.onSelectionChange.emit(currentItem);
134
+ }
135
+ }
136
+ }
137
+ onInputClick(event) {
138
+ this.onClick.emit(event);
139
+ }
140
+ onInputFilter(event) {
141
+ if (event) {
142
+ this.onFilter.emit(event.filter);
143
+ if (event.filter) {
144
+ if (event.filter.length > 2) {
145
+ let fil = { termoPesquisa: event.filter };
146
+ this.carregarCombo(fil);
147
+ this.onLoadCombo.emit(fil);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ writeValue(value) {
153
+ if (this.lazy && value) {
154
+ let fil = { id: value };
155
+ this.carregarCombo(fil);
156
+ this.onLoadCombo.emit(fil);
157
+ }
158
+ this.value = value;
159
+ }
160
+ transformCapitalize(value) {
161
+ if (!value)
162
+ return value;
163
+ return value
164
+ .split(' ')
165
+ .map((word, index) => {
166
+ if (index !== 0 &&
167
+ this.prepositions.includes(word.toLocaleLowerCase())) {
168
+ return word.toLocaleLowerCase();
169
+ }
170
+ return (word.charAt(0).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase());
171
+ })
172
+ .join(' ');
173
+ }
174
+ capitalizeOptions(options) {
175
+ if (this.capitalize) {
176
+ return options?.map((option) => {
177
+ option[this.optionLabel] = this.transformCapitalize(option[this.optionLabel]);
178
+ return option;
179
+ });
180
+ }
181
+ return options;
182
+ }
183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentDropDown, deps: [{ token: i1.ComponentService }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
184
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentDropDown, selector: "ng-component", inputs: { filteredOptions: "filteredOptions", options: "options", optionLabel: "optionLabel", optionValue: "optionValue", nameForSelectionChange: "nameForSelectionChange", optionDisabled: "optionDisabled", capitalize: "capitalize", group: "group", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", filter: "filter", lazy: "lazy", loading: "loading", showAddButton: "showAddButton", showClear: "showClear", widthField: "widthField" }, outputs: { onAddClick: "onAddClick", onClick: "onClick", onLoadCombo: "onLoadCombo", onSelectionChange: "onSelectionChange", onSelectionValue: "onSelectionValue", requestComplete: "requestComplete", onFilter: "onFilter" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
185
+ }
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentDropDown, decorators: [{
187
+ type: Component,
188
+ args: [{
189
+ template: '',
190
+ }]
191
+ }], ctorParameters: () => [{ type: i1.ComponentService }, { type: i2.DialogService }], propDecorators: { filteredOptions: [{
192
+ type: Input
193
+ }], options: [{
194
+ type: Input
195
+ }], optionLabel: [{
196
+ type: Input
197
+ }], optionValue: [{
198
+ type: Input
199
+ }], nameForSelectionChange: [{
200
+ type: Input
201
+ }], optionDisabled: [{
202
+ type: Input
203
+ }], capitalize: [{
204
+ type: Input
205
+ }], group: [{
206
+ type: Input
207
+ }], optionGroupLabel: [{
208
+ type: Input
209
+ }], optionGroupChildren: [{
210
+ type: Input
211
+ }], filter: [{
212
+ type: Input
213
+ }], lazy: [{
214
+ type: Input
215
+ }], loading: [{
216
+ type: Input
217
+ }], showAddButton: [{
218
+ type: Input
219
+ }], showClear: [{
220
+ type: Input
221
+ }], widthField: [{
222
+ type: Input
223
+ }], onAddClick: [{
224
+ type: Output
225
+ }], onClick: [{
226
+ type: Output
227
+ }], onLoadCombo: [{
228
+ type: Output
229
+ }], onSelectionChange: [{
230
+ type: Output
231
+ }], onSelectionValue: [{
232
+ type: Output
233
+ }], requestComplete: [{
234
+ type: Output
235
+ }], onFilter: [{
236
+ type: Output
237
+ }] } });
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1kcm9wZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFNM0QsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxrQkFBdUI7SUFtRHpFLFlBQ0UsZ0JBQWtDLEVBQzFCLGFBQTRCO1FBRXBDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRmhCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBdkM3QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBTTVCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXpCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFHekIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FB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LE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVHlwZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGZpbmFsaXplLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudElucHV0IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudC1pbnB1dCc7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbHRyb0NvbWJvIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kcm9wZG93bi9maWx0cm8uY29tYm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudERyb3BEb3duIGV4dGVuZHMgQmFzZUNvbXBvbmVudElucHV0PGFueT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXJlZE9wdGlvbnMhOiBhbnlbXTtcclxuICBASW5wdXQoKSBvcHRpb25zITogYW55W107XHJcbiAgQElucHV0KCkgb3B0aW9uTGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uVmFsdWUhOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0cmluZyBxdWUgc2Vyw6EgdXRpbGl6YWRhIHBhcmEgYnVzY2FyIGEgb3DDp8OjbyBubyBtw6l0b2RvIG9uU2VsZWN0aW9uQ2hhbmdlXHJcbiAgICogQGlucHV0XHJcbiAgICovXHJcbiAgQElucHV0KCkgbmFtZUZvclNlbGVjdGlvbkNoYW5nZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZCE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgY2FwaXRhbGl6ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBncm91cCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbCE6IHN0cmluZztcclxuICBASW5wdXQoKSBvcHRpb25Hcm91cENoaWxkcmVuITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxhenk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHdpZHRoRmllbGQ/OiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkFkZENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uTG9hZENvbWJvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvblZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVxdWVzdENvbXBsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcmVwb3NpdGlvbnM6IHN0cmluZ1tdID0gW1xyXG4gICAgJ2RlJyxcclxuICAgICdkYScsXHJcbiAgICAnZG8nLFxyXG4gICAgJ2VtJyxcclxuICAgICdubycsXHJcbiAgICAnbmEnLFxyXG4gICAgJ3BhcmEnLFxyXG4gICAgJ3BvcicsXHJcbiAgICAnY29tJyxcclxuICAgICdhJyxcclxuICAgICdvJyxcclxuICAgICdlJyxcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGNvbXBvbmVudFNlcnZpY2U6IENvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uVG91Y2hlZCgoKSA9PiB7IH0pO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5zZXRQbGFjZUhvbGRlcignU2VsZWNpb25lIHVtIHZhbG9yJyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmxhenkpIHRoaXMuY2FycmVnYXJDb21ibygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZENsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkFkZENsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhcnJlZ2FyQ29tYm8oZmlsdHJvPzogZmlsdHJvQ29tYm8pOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoZmlsdHJvKSB7XHJcbiAgICAgIHRoaXMuY2FycmVnYXJDb21ib09icyh0aGlzLmxpc3RhckNvbWJvKGZpbHRybykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FycmVnYXJDb21ib09icyh0aGlzLmxpc3RhcigpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjYXJyZWdhckNvbWJvT2JzKG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICBpZiAob2JzKSB7XHJcbiAgICAgIG9ic1xyXG4gICAgICAgIC5waXBlXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDQ1MCksXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb21ibygpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmNhcGl0YWxpemVPcHRpb25zKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0Q29tcGxldGUuZW1pdCh0cnVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbXB0eU1lc3NhZ2UoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMubGF6eSA/ICdEaWdpdGUgcGFyYSBwZXNxdWlzYXInIDogJ05lbmh1bSByZXN1bHRhZG8gZW5jb250cmFkbycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlck9wdGlvbnMoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgbGlzdGEgPSBPYmplY3RTZXJ2aWNlLmZpbHRlck9iamVjdCh0aGlzLm9wdGlvbnMsIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgIGlmIChsaXN0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9mKGxpc3RhKS5zdWJzY3JpYmUoKG9wdHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuY2FwaXRhbGl6ZU9wdGlvbnMob3B0cyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RhcigpOiBhbnkgeyB9XHJcbiAgcHJvdGVjdGVkIGxpc3RhckNvbWJvKHZhbHVlOiBhbnkpOiBhbnkgeyB9XHJcblxyXG4gIGxvYWRpbmdDb21ibyA9ICgpOiBhbnkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmxhenkpIHtcclxuICAgICAgcmV0dXJuIChzcmM6IE9ic2VydmFibGU8YW55PikgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHNyYy5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcm90ZWN0ZWQgb3BlbkRpYWxvZyhcclxuICAgIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PixcclxuICAgIHdpZHRoPzogc3RyaW5nLFxyXG4gICAgaGVpZ2h0Pzogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbihjb21wb25lbnRUeXBlLCB7XHJcbiAgICAgIHdpZHRoOiB3aWR0aCB8fCAnNzAlJyxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgIGNsb3NhYmxlOiBmYWxzZSxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIGRhdGE6IHsgcG9wdXA6IHRydWUgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgoaWQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaWQpIHtcclxuICAgICAgICB0aGlzLmxpc3RhcigpXHJcbiAgICAgICAgICAucGlwZSh0aGlzLmxvYWRpbmdDb21ibygpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY2FwaXRhbGl6ZU9wdGlvbnMoZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICAgICAgICBpZiAoaWQpIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKGlkKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25TZWxlY3Rpb25WYWx1ZS5lbWl0KGV2ZW50KTtcclxuICAgIC8vRW0gbm9zc2FzIGltcGxlbWVudGHDp8O1ZXMgbyBtZXRvZG8gw6kgY2hhbWFkbyAyIHZlemVzLCBlbSBzZXVhIHNlZ3VuZGEgY2hhbWFkYSBvIGV2ZW50IHNlIHRvcm5hIG8gb2JqZXRvIHNlbGVjaW9uYWRvIGUgbsOjbyBvIHZhbG9yLCBkZXNzYSBmb3JtYSBvIGlmIGFiYWl4byBhcGVuYXMgZW1pdGUgbyBvYmpldG9cclxuICAgIGlmKCFldmVudD8ub3JpZ2luYWxFdmVudCl7XHJcbiAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xyXG4gICAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZ2V0TmFtZSh0aGlzLmZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sKTtcclxuICAgICAgaWYgKGNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRJdGVtID0gT2JqZWN0U2VydmljZS5maW5kT2JqZWN0KFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25WYWx1ZT8/Y29udHJvbE5hbWUsXHJcbiAgICAgICAgICBldmVudD8udmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChjdXJyZW50SXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXRDbGljayhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0RmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoZXZlbnQuZmlsdGVyKVxyXG5cclxuICAgICAgaWYgKGV2ZW50LmZpbHRlcikge1xyXG4gICAgICAgIGlmIChldmVudC5maWx0ZXIubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgbGV0IGZpbCA9IHsgdGVybW9QZXNxdWlzYTogZXZlbnQuZmlsdGVyIH0gYXMgZmlsdHJvQ29tYm87XHJcbiAgICAgICAgICB0aGlzLmNhcnJlZ2FyQ29tYm8oZmlsKTtcclxuICAgICAgICAgIHRoaXMub25Mb2FkQ29tYm8uZW1pdChmaWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sYXp5ICYmIHZhbHVlKSB7XHJcbiAgICAgIGxldCBmaWwgPSB7IGlkOiB2YWx1ZSB9IGFzIGZpbHRyb0NvbWJvO1xyXG4gICAgICB0aGlzLmNhcnJlZ2FyQ29tYm8oZmlsKTtcclxuICAgICAgdGhpcy5vbkxvYWRDb21iby5lbWl0KGZpbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgdHJhbnNmb3JtQ2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHZhbHVlXHJcbiAgICAgIC5zcGxpdCgnICcpXHJcbiAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgaW5kZXggIT09IDAgJiZcclxuICAgICAgICAgIHRoaXMucHJlcG9zaXRpb25zLmluY2x1ZGVzKHdvcmQudG9Mb2NhbGVMb3dlckNhc2UoKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybiB3b3JkLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICB3b3JkLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvY2FsZUxvd2VyQ2FzZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICAgLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIGNhcGl0YWxpemVPcHRpb25zKG9wdGlvbnM6IGFueVtdKTogYW55W10ge1xyXG5cclxuICAgIGlmICh0aGlzLmNhcGl0YWxpemUpIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbnM/Lm1hcCgob3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICBvcHRpb25bdGhpcy5vcHRpb25MYWJlbF0gPSB0aGlzLnRyYW5zZm9ybUNhcGl0YWxpemUob3B0aW9uW3RoaXMub3B0aW9uTGFiZWxdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcbn0iXX0=
@@ -0,0 +1,101 @@
1
+ import { Component, ContentChildren, EventEmitter, Input, Output, ViewChildren, } from '@angular/core';
2
+ import { BaseComponent } from './base-component';
3
+ import { KvErrorComponent } from '../../components/kv-error/kv-error.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../services/component.service";
6
+ export class BaseComponentInput extends BaseComponent {
7
+ constructor(componentService) {
8
+ super();
9
+ this.componentService = componentService;
10
+ this.hasError = false;
11
+ this.showAsterisk = false;
12
+ this.placeholder = '';
13
+ this.autocomplete = '';
14
+ this.onBlur = new EventEmitter();
15
+ this.onInput = new EventEmitter();
16
+ this.onClose = new EventEmitter();
17
+ }
18
+ get baseInputClass() {
19
+ return `${this.hasError ? 'ng-invalid ng-dirty' : ''} !important`;
20
+ }
21
+ erroMessage() {
22
+ if (!this.formControl?.errors)
23
+ return;
24
+ let message = '';
25
+ if (this.formControl.errors) {
26
+ const objErrors = this.formControl.errors;
27
+ if (objErrors.erroMessage)
28
+ message = objErrors.erroMessage;
29
+ }
30
+ return message;
31
+ }
32
+ getName(control) {
33
+ return (Object.entries(control.parent?.controls ?? []).find(([_, value]) => value === control)?.[0] ?? null);
34
+ }
35
+ hasControlError() {
36
+ if (!this.formControl)
37
+ return false;
38
+ return ((this.formControl.dirty || this.formControl.touched) &&
39
+ this.formControl.errors !== null);
40
+ }
41
+ ngAfterViewInit() {
42
+ this.viewErrors.forEach((c) => {
43
+ c.emitError.subscribe((res) => {
44
+ this.hasError = res;
45
+ this.componentService.changeDetectorRef.detectChanges();
46
+ });
47
+ });
48
+ }
49
+ ngAfterContentInit() {
50
+ this.contentErrors.forEach((c) => {
51
+ c.emitError.subscribe((res) => {
52
+ this.hasError = res;
53
+ });
54
+ });
55
+ }
56
+ ngOnInit() {
57
+ this.formControl = this.componentService.getFormControl();
58
+ if (this.formControl?.errors)
59
+ this.showAsterisk = true;
60
+ }
61
+ onInputBlur(event) {
62
+ if (this.onTouched)
63
+ this.onTouched();
64
+ this.onBlur.emit(event);
65
+ }
66
+ onInputClose(event) {
67
+ this.onClose.emit(event);
68
+ }
69
+ onInputInput(event) {
70
+ this.onInput.emit(event);
71
+ }
72
+ setPlaceHolder(p) {
73
+ if (!this.placeholder)
74
+ this.placeholder = p;
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentInput, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentInput, selector: "ng-component", inputs: { placeholder: "placeholder", autocomplete: "autocomplete" }, outputs: { onBlur: "onBlur", onInput: "onInput", onClose: "onClose" }, queries: [{ propertyName: "contentErrors", predicate: KvErrorComponent }], viewQueries: [{ propertyName: "viewErrors", predicate: KvErrorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentInput, decorators: [{
80
+ type: Component,
81
+ args: [{
82
+ template: '',
83
+ }]
84
+ }], ctorParameters: () => [{ type: i1.ComponentService }], propDecorators: { placeholder: [{
85
+ type: Input
86
+ }], autocomplete: [{
87
+ type: Input
88
+ }], onBlur: [{
89
+ type: Output
90
+ }], onInput: [{
91
+ type: Output
92
+ }], onClose: [{
93
+ type: Output
94
+ }], viewErrors: [{
95
+ type: ViewChildren,
96
+ args: [KvErrorComponent]
97
+ }], contentErrors: [{
98
+ type: ContentChildren,
99
+ args: [KvErrorComponent]
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7QUFLaEYsTUFBTSxPQUFnQixrQkFDcEIsU0FBUSxhQUFnQjtJQW1CeEIsWUFBK0IsZ0JBQWtDO1FBQy9ELEtBQUssRUFBRSxDQUFDO1FBRHFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFmdkQsYUFBUSxHQUF3QixLQUFLLENBQUM7UUFDekMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFHekIsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFRMUQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTTtZQUFFLE9BQU87UUFFdEMsSUFBSSxPQUFPLEdB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aUJBQ2I7cUZBU1UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBRXlCLFVBQVU7c0JBQXpDLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUU5QixhQUFhO3NCQURaLGVBQWU7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLdkVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9rdi1lcnJvci9rdi1lcnJvci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudElucHV0PFQ+XHJcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50PFQ+XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIHB1YmxpYyBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgcHJvdGVjdGVkIGhhc0Vycm9yOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dBc3RlcmlzayA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmcgPSAnJztcclxuICBcclxuXHJcbiAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uSW5wdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihLdkVycm9yQ29tcG9uZW50KSB2aWV3RXJyb3JzITogUXVlcnlMaXN0PEt2RXJyb3JDb21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oS3ZFcnJvckNvbXBvbmVudClcclxuICBjb250ZW50RXJyb3JzITogUXVlcnlMaXN0PEt2RXJyb3JDb21wb25lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYmFzZUlucHV0Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmhhc0Vycm9yID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJyd9ICFpbXBvcnRhbnRgO1xyXG4gIH1cclxuXHJcbiAgZXJyb01lc3NhZ2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzKSByZXR1cm47XHJcblxyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLmVycm9ycykge1xyXG4gICAgICBjb25zdCBvYmpFcnJvcnMgPSB0aGlzLmZvcm1Db250cm9sLmVycm9ycyBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmpFcnJvcnMuZXJyb01lc3NhZ2UpIG1lc3NhZ2UgPSBvYmpFcnJvcnMuZXJyb01lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lKGNvbnRyb2w6IEZvcm1Db250cm9sKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBPYmplY3QuZW50cmllcyhjb250cm9sLnBhcmVudD8uY29udHJvbHMgPz8gW10pLmZpbmQoXHJcbiAgICAgICAgKFtfLCB2YWx1ZV0pID0+IHZhbHVlID09PSBjb250cm9sXHJcbiAgICAgICk/LlswXSA/PyBudWxsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFzQ29udHJvbEVycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5mb3JtQ29udHJvbC5kaXJ0eSB8fCB0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpICYmXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzICE9PSBudWxsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3RXJyb3JzLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgYy5lbWl0RXJyb3Iuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gcmVzO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRlbnRFcnJvcnMuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICBjLmVtaXRFcnJvci5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSByZXM7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2V0Rm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzKSB0aGlzLnNob3dBc3RlcmlzayA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbklucHV0Qmx1cihldmVudDogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkgdGhpcy5vblRvdWNoZWQoKTtcclxuXHJcbiAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRDbG9zZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0SW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uSW5wdXQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0UGxhY2VIb2xkZXIocDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHRoaXMucGxhY2Vob2xkZXIgPSBwO1xyXG4gIH1cclxufVxyXG4iXX0=