keevo-components 2.0.16 → 2.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/keevo-components.mjs +5 -0
- package/esm2022/lib/api/base-components/base-component-button.mjs +39 -0
- package/esm2022/lib/api/base-components/base-component-chart.mjs +104 -0
- package/esm2022/lib/api/base-components/base-component-crud-form.mjs +302 -0
- package/esm2022/lib/api/base-components/base-component-crud-list.mjs +91 -0
- package/esm2022/lib/api/base-components/base-component-crud.mjs +80 -0
- package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +31 -0
- package/esm2022/lib/api/base-components/base-component-dropdown.mjs +238 -0
- package/esm2022/lib/api/base-components/base-component-input.mjs +101 -0
- package/esm2022/lib/api/base-components/base-component-multi-select.mjs +174 -0
- package/esm2022/lib/api/base-components/base-component-table.mjs +354 -0
- package/esm2022/lib/api/base-components/base-component.mjs +51 -0
- package/esm2022/lib/api/components/chart/chart.config.mjs +2 -0
- package/esm2022/lib/api/components/chart/chart.model.mjs +2 -0
- package/esm2022/lib/api/components/chart/orchart.config.mjs +2 -0
- package/esm2022/lib/api/components/chart/orchartnode.mjs +2 -0
- package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +2 -0
- package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +2 -0
- package/esm2022/lib/api/components/table/action-item.mjs +2 -0
- package/esm2022/lib/api/components/table/kv-menuitem.mjs +46 -0
- package/esm2022/lib/api/components/table/table-dropdown-control.mjs +2 -0
- package/esm2022/lib/api/components/table/table.config.column.mjs +2 -0
- package/esm2022/lib/api/components/table/table.config.mjs +2 -0
- package/esm2022/lib/api/components/table/table.paginate.mjs +10 -0
- package/esm2022/lib/api/components/table/tabledit.config.mjs +2 -0
- package/esm2022/lib/api/components/table/tableedit.config.column.mjs +2 -0
- package/esm2022/lib/api/components/tree-table/tree-table-keys.mjs +2 -0
- package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +3 -0
- package/esm2022/lib/api/directives/directives.module.mjs +30 -0
- package/esm2022/lib/api/directives/drag/drag.directive.mjs +52 -0
- package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +31 -0
- package/esm2022/lib/api/directives/template/template.directive.mjs +24 -0
- package/esm2022/lib/api/helpers/component-providers.mjs +16 -0
- package/esm2022/lib/api/helpers/keevo-validators.mjs +131 -0
- package/esm2022/lib/api/helpers/translate-primeng.mjs +23 -0
- package/esm2022/lib/api/modules/primeng.module.mjs +275 -0
- package/esm2022/lib/api/pipes/capitalize.pipe.mjs +47 -0
- package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +25 -0
- package/esm2022/lib/api/pipes/mask.pipe.mjs +29 -0
- package/esm2022/lib/api/pipes/pipes.module.mjs +39 -0
- package/esm2022/lib/api/pipes/telefone.pipe.mjs +45 -0
- package/esm2022/lib/api/services/base.api.service.mjs +74 -0
- package/esm2022/lib/api/services/breadcrumbs.service.mjs +62 -0
- package/esm2022/lib/api/services/chat.service.mjs +37 -0
- package/esm2022/lib/api/services/component.service.mjs +37 -0
- package/esm2022/lib/api/services/docs.service.mjs +129 -0
- package/esm2022/lib/api/services/form.service.mjs +95 -0
- package/esm2022/lib/api/services/image.cutter.service.mjs +191 -0
- package/esm2022/lib/api/services/imagens.service.mjs +28 -0
- package/esm2022/lib/api/services/notification.service.mjs +69 -0
- package/esm2022/lib/api/services/object.service.mjs +39 -0
- package/esm2022/lib/api/services/orgchart.service.mjs +64 -0
- package/esm2022/lib/api/types/breadcrumb.model.mjs +2 -0
- package/esm2022/lib/components/keevo-components.module.mjs +207 -0
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +133 -0
- package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +55 -0
- package/esm2022/lib/components/kv-button/kv-button.component.mjs +24 -0
- package/esm2022/lib/components/kv-button/kv-button.module.mjs +28 -0
- package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +25 -0
- package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +35 -0
- package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +17 -0
- package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +17 -0
- package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +39 -0
- package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +60 -0
- package/esm2022/lib/components/kv-card-selection/kv-card-selection.module.mjs +31 -0
- package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +34 -0
- package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +28 -0
- package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +166 -0
- package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +32 -0
- package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +146 -0
- package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.module.mjs +36 -0
- package/esm2022/lib/components/kv-error/kv-error.component.mjs +26 -0
- package/esm2022/lib/components/kv-error/kv-error.module.mjs +35 -0
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +162 -0
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +18 -0
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +46 -0
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +20 -0
- package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +68 -0
- package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +24 -0
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +29 -0
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +34 -0
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +26 -0
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +28 -0
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +11 -0
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +19 -0
- package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +27 -0
- package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +32 -0
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +135 -0
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +18 -0
- package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +29 -0
- package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +102 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +150 -0
- package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +168 -0
- package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +30 -0
- package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +59 -0
- package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +33 -0
- package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +38 -0
- package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +47 -0
- package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +43 -0
- package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +24 -0
- package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +131 -0
- package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +57 -0
- package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +60 -0
- package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +46 -0
- package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +36 -0
- package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +42 -0
- package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +58 -0
- package/esm2022/lib/components/kv-label/kv-label.component.mjs +15 -0
- package/esm2022/lib/components/kv-label/kv-label.module.mjs +24 -0
- package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +28 -0
- package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +72 -0
- package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +430 -0
- package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +15 -0
- package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +16 -0
- package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +28 -0
- package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +29 -0
- package/esm2022/lib/components/kv-login/kv-login.component.mjs +62 -0
- package/esm2022/lib/components/kv-login/kv-login.module.mjs +47 -0
- package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +98 -0
- package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +20 -0
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +225 -0
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +59 -0
- package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +217 -0
- package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +41 -0
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +205 -0
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +51 -0
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +183 -0
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +39 -0
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +58 -0
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +28 -0
- package/esm2022/lib/components/kv-report/kv-report.component.mjs +44 -0
- package/esm2022/lib/components/kv-report/kv-report.module.mjs +24 -0
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +74 -0
- package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +47 -0
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +673 -0
- package/esm2022/lib/components/kv-table/kv-table.module.mjs +40 -0
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +323 -0
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +45 -0
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +516 -0
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +40 -0
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +331 -0
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +39 -0
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +70 -0
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +28 -0
- package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +40 -0
- package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +68 -0
- package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +22 -0
- package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +78 -0
- package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +87 -0
- package/esm2022/public-api.mjs +256 -0
- package/fesm2022/keevo-components.mjs +60 -14
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/components/kv-button/kv-button.component.d.ts +1 -1
- package/lib/components/kv-content-viewer/kv-content-viewer.component.d.ts +2 -1
- package/lib/components/kv-pick-list/kv-pick-list.component.d.ts +2 -0
- package/lib/components/kv-stepper/kv-stepper.component.d.ts +1 -1
- package/lib/components/kv-table/kv-table.component.d.ts +1 -1
- package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import Quill from 'quill';
|
|
3
|
+
// import QuillBlotFormatter from 'quill-blot-formatter-2';
|
|
4
|
+
import { BaseComponentInput } from '../../../api/base-components/base-component-input';
|
|
5
|
+
import { ComponentProviders } from '../../../api/helpers/component-providers';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../../api/services/component.service";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
import * as i4 from "../../kv-error/kv-error.component";
|
|
11
|
+
export class KvEditorComponent extends BaseComponentInput {
|
|
12
|
+
constructor(componentService, renderer, el) {
|
|
13
|
+
super(componentService);
|
|
14
|
+
this.renderer = renderer;
|
|
15
|
+
this.el = el;
|
|
16
|
+
this.readonly = false;
|
|
17
|
+
this.canvaHeigth = '380px';
|
|
18
|
+
this.debug = false;
|
|
19
|
+
this.onTextChange = new EventEmitter();
|
|
20
|
+
this.onSelectionChange = new EventEmitter();
|
|
21
|
+
this.outputRaw = new EventEmitter();
|
|
22
|
+
this.outputHtml = new EventEmitter();
|
|
23
|
+
this.updatingEditor = false;
|
|
24
|
+
/**
|
|
25
|
+
* caso defina como "text" o texto ira ser enviado sem formatação
|
|
26
|
+
*/
|
|
27
|
+
this.contentType = 'html';
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
super.ngOnInit();
|
|
31
|
+
if (!this.quill) {
|
|
32
|
+
// this.addQuillCss();
|
|
33
|
+
this.initializeQuillEditor();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
initializeQuillEditor() {
|
|
37
|
+
const ColorClass = Quill.import('attributors/class/color');
|
|
38
|
+
const ColorStyle = Quill.import('attributors/style/color');
|
|
39
|
+
const SizeStyle = Quill.import('attributors/style/size');
|
|
40
|
+
const Font = Quill.import('formats/font');
|
|
41
|
+
const Size = Quill.import('attributors/style/size');
|
|
42
|
+
Size.whitelist = ['15px', '20px', '30px', '40px', '50px', '70px', '90px'];
|
|
43
|
+
Font.whitelist = ['monospace', 'roboto', 'serif', 'inter'];
|
|
44
|
+
Quill.register(ColorStyle, true);
|
|
45
|
+
Quill.register(SizeStyle, true);
|
|
46
|
+
Quill.register(Font, true);
|
|
47
|
+
Quill.register(Size, true);
|
|
48
|
+
// Customizando o comportamento do Enter
|
|
49
|
+
const bindings = Quill.import('modules/keyboard').DEFAULTS.bindings;
|
|
50
|
+
bindings['enter'] = {
|
|
51
|
+
key: 13, // Código da tecla Enter
|
|
52
|
+
handler: (range) => {
|
|
53
|
+
const quill = this.quill;
|
|
54
|
+
quill.insertEmbed(range.index, 'break', true, Quill.sources.USER);
|
|
55
|
+
quill.setSelection(range.index + 1, Quill.sources.SILENT);
|
|
56
|
+
return false; // Evita o comportamento padrão de criar um <p>
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
// Custom blot for <br> tag
|
|
60
|
+
const BlockEmbed = Quill.import('blots/block/embed');
|
|
61
|
+
class Break extends BlockEmbed {
|
|
62
|
+
static { this.blotName = 'break'; }
|
|
63
|
+
static { this.tagName = 'br'; }
|
|
64
|
+
}
|
|
65
|
+
Quill.register(Break);
|
|
66
|
+
this.quill = new Quill('#kv-editor', {
|
|
67
|
+
theme: 'snow',
|
|
68
|
+
modules: {
|
|
69
|
+
toolbar: '#kv-editor-toolbar',
|
|
70
|
+
keyboard: {
|
|
71
|
+
bindings: bindings,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
placeholder: this.label ? this.label : '',
|
|
75
|
+
readOnly: this.readonly,
|
|
76
|
+
debug: this.debug,
|
|
77
|
+
});
|
|
78
|
+
const AlignStyle = Quill.import('attributors/style/align');
|
|
79
|
+
Quill.register(AlignStyle, true);
|
|
80
|
+
this.quill.on('selection-change', (range, oldRange, source) => {
|
|
81
|
+
this.onSelectionChange.emit({
|
|
82
|
+
range: range,
|
|
83
|
+
oldRange: oldRange,
|
|
84
|
+
source: source,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
this.quill.on('text-change', (delta, oldContents, source) => {
|
|
88
|
+
if (!this.updatingEditor) {
|
|
89
|
+
this.updatingEditor = false;
|
|
90
|
+
this.escrevaValor(this.quill.getSemanticHTML(), this.quill.getText());
|
|
91
|
+
this.onTextChange.emit({
|
|
92
|
+
delta: delta,
|
|
93
|
+
oldContents: oldContents,
|
|
94
|
+
source: source,
|
|
95
|
+
});
|
|
96
|
+
this.outputRaw.emit(this.quill.getText());
|
|
97
|
+
this.outputHtml.emit(this.quill.getSemanticHTML());
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
addQuillCss() {
|
|
102
|
+
const link = this.renderer.createElement('link');
|
|
103
|
+
link.rel = 'stylesheet';
|
|
104
|
+
link.href = 'https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css';
|
|
105
|
+
// Quando o CSS for carregado, inicialize o Quill
|
|
106
|
+
link.onload = () => {
|
|
107
|
+
this.initializeQuillEditor();
|
|
108
|
+
};
|
|
109
|
+
// Adiciona o link ao <head>
|
|
110
|
+
this.renderer.appendChild(document.head, link);
|
|
111
|
+
}
|
|
112
|
+
writeValue(value) {
|
|
113
|
+
this.updatingEditor = true;
|
|
114
|
+
this.escrevaValor(value);
|
|
115
|
+
}
|
|
116
|
+
escrevaValor(htmlvalue, rawvalue) {
|
|
117
|
+
if (this.quill) {
|
|
118
|
+
if (this.updatingEditor) {
|
|
119
|
+
this.quill.clipboard.dangerouslyPasteHTML(htmlvalue);
|
|
120
|
+
}
|
|
121
|
+
this.updatingEditor = false;
|
|
122
|
+
this.value = htmlvalue;
|
|
123
|
+
if (rawvalue == "\n" || this.value == "\n")
|
|
124
|
+
this.value = '';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, deps: [{ token: i1.ComponentService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvEditorComponent, selector: "kv-editor", inputs: { readonly: "readonly", canvaHeigth: "canvaHeigth", debug: "debug", contentType: "contentType" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange", outputRaw: "outputRaw", outputHtml: "outputHtml" }, providers: ComponentProviders(KvEditorComponent), usesInheritance: true, ngImport: i0, template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{'error-border-toolbar': hasControlError()}\" >\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\" [ngClass]=\"{'error-border': hasControlError()}\" ></div>\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n\r\n\r\n<!------------------------------------------------------------------------------------------------------------------->\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n", styles: [":host ::ng-deep .ql-font-roboto{font-family:Roboto,sans-serif}:host ::ng-deep .ql-font-inter{font-family:Inter var,sans-serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:10px 10px 0 0}:host ::ng-deep #kv-editor{border-radius:0 0 10px 10px}.error-border-toolbar{transition:all ease-in .2s;border-top-color:#e24c4c!important;border-bottom-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important;transition:all ease-in .2s}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i4.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }] }); }
|
|
129
|
+
}
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, decorators: [{
|
|
131
|
+
type: Component,
|
|
132
|
+
args: [{ selector: 'kv-editor', providers: ComponentProviders(KvEditorComponent), template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{'error-border-toolbar': hasControlError()}\" >\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\" [ngClass]=\"{'error-border': hasControlError()}\" ></div>\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n\r\n\r\n<!------------------------------------------------------------------------------------------------------------------->\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n", styles: [":host ::ng-deep .ql-font-roboto{font-family:Roboto,sans-serif}:host ::ng-deep .ql-font-inter{font-family:Inter var,sans-serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:10px 10px 0 0}:host ::ng-deep #kv-editor{border-radius:0 0 10px 10px}.error-border-toolbar{transition:all ease-in .2s;border-top-color:#e24c4c!important;border-bottom-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important;transition:all ease-in .2s}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}\n"] }]
|
|
133
|
+
}], ctorParameters: () => [{ type: i1.ComponentService }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { readonly: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], canvaHeigth: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], debug: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], onTextChange: [{
|
|
140
|
+
type: Output
|
|
141
|
+
}], onSelectionChange: [{
|
|
142
|
+
type: Output
|
|
143
|
+
}], outputRaw: [{
|
|
144
|
+
type: Output
|
|
145
|
+
}], outputHtml: [{
|
|
146
|
+
type: Output
|
|
147
|
+
}], contentType: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}] } });
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLDREQUE0RDtBQUc1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7O0FBUzlFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBMEI7SUFHL0QsWUFDRSxnQkFBa0MsRUFBVSxRQUFtQixFQUFVLEVBQWM7UUFDdkYsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFEb0IsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLE9BQUUsR0FBRixFQUFFLENBQVk7UUFJaEYsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFXLE9BQU8sQ0FBQztRQUM5QixVQUFLLEdBQVksS0FBSyxDQUFDO1FBRXRCLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUQsY0FBUyxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELGVBQVUsR0FBeUIsSUFB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QUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUVuQixDQUFDO0lBQ0gsQ0FBQzs4R0E3SlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsbVJBRmpCLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLGlEQ3RCbEQsbzlJQXNHQTs7MkZEOUVhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxXQUFXLGFBR1Ysa0JBQWtCLG1CQUFtQjtzSUFVdkMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBV0UsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuLy8gaW1wb3J0IFF1aWxsQmxvdEZvcm1hdHRlciAgZnJvbSAncXVpbGwtYmxvdC1mb3JtYXR0ZXItMic7XHJcblxyXG5cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudElucHV0IH0gZnJvbSAnLi4vLi4vLi4vYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1pbnB1dCc7XHJcbmltcG9ydCB7IENvbXBvbmVudFByb3ZpZGVycyB9IGZyb20gJy4uLy4uLy4uL2FwaS9oZWxwZXJzL2NvbXBvbmVudC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBpL3NlcnZpY2VzL2NvbXBvbmVudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9rdi1lZGl0b3IuY29tcG9uZW50LnNjc3MnLF0sXHJcbiAgcHJvdmlkZXJzOiBDb21wb25lbnRQcm92aWRlcnMoS3ZFZGl0b3JDb21wb25lbnQpLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50SW5wdXQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGNvbXBvbmVudFNlcnZpY2U6IENvbXBvbmVudFNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNhbnZhSGVpZ3RoOiBzdHJpbmcgPSAnMzgwcHgnO1xyXG4gIEBJbnB1dCgpIGRlYnVnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvblRleHRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvdXRwdXRSYXc6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvdXRwdXRIdG1sOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gIHByaXZhdGUgdXBkYXRpbmdFZGl0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcXVpbGwhOiBRdWlsbDtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIGNhc28gZGVmaW5hIGNvbW8gXCJ0ZXh0XCIgbyB0ZXh0byBpcmEgc2VyIGVudmlhZG8gc2VtIGZvcm1hdGHDp8Ojb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbnRlbnRUeXBlOiAnaHRtbCcgfCAndGV4dCcgPSAnaHRtbCc7XHJcblxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICBpZiAoIXRoaXMucXVpbGwpIHtcclxuICAgICAgLy8gdGhpcy5hZGRRdWlsbENzcygpO1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVRdWlsbEVkaXRvcigpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBpbml0aWFsaXplUXVpbGxFZGl0b3IoKSB7XHJcbiAgICBjb25zdCBDb2xvckNsYXNzOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL2NsYXNzL2NvbG9yJyk7XHJcbiAgICBjb25zdCBDb2xvclN0eWxlOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL2NvbG9yJyk7XHJcbiAgICBjb25zdCBTaXplU3R5bGU6IGFueSA9IFF1aWxsLmltcG9ydCgnYXR0cmlidXRvcnMvc3R5bGUvc2l6ZScpO1xyXG4gICAgY29uc3QgRm9udDogYW55ID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2ZvbnQnKTtcclxuICAgIGNvbnN0IFNpemU6IGFueSA9IFF1aWxsLmltcG9ydCgnYXR0cmlidXRvcnMvc3R5bGUvc2l6ZScpO1xyXG4gIFxyXG4gICAgU2l6ZS53aGl0ZWxpc3QgPSBbJzE1cHgnLCAnMjBweCcsICczMHB4JywgJzQwcHgnLCAnNTBweCcsICc3MHB4JywgJzkwcHgnXTtcclxuICAgIEZvbnQud2hpdGVsaXN0ID0gWydtb25vc3BhY2UnLCAncm9ib3RvJywgJ3NlcmlmJywgJ2ludGVyJ107XHJcbiAgXHJcbiAgICBRdWlsbC5yZWdpc3RlcihDb2xvclN0eWxlLCB0cnVlKTtcclxuICAgIFF1aWxsLnJlZ2lzdGVyKFNpemVTdHlsZSwgdHJ1ZSk7XHJcbiAgICBRdWlsbC5yZWdpc3RlcihGb250LCB0cnVlKTtcclxuICAgIFF1aWxsLnJlZ2lzdGVyKFNpemUsIHRydWUpO1xyXG4gIFxyXG4gICAgLy8gQ3VzdG9taXphbmRvIG8gY29tcG9ydGFtZW50byBkbyBFbnRlclxyXG4gICAgY29uc3QgYmluZGluZ3MgPSAoUXVpbGwuaW1wb3J0KCdtb2R1bGVzL2tleWJvYXJkJykgYXMgYW55KS5ERUZBVUxUUy5iaW5kaW5ncztcclxuICAgIFxyXG4gICAgYmluZGluZ3NbJ2VudGVyJ10gPSB7XHJcbiAgICAgIGtleTogMTMsIC8vIEPDs2RpZ28gZGEgdGVjbGEgRW50ZXJcclxuICAgICAgaGFuZGxlcjogKHJhbmdlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgcXVpbGwgPSB0aGlzLnF1aWxsO1xyXG4gICAgICBxdWlsbC5pbnNlcnRFbWJlZChyYW5nZS5pbmRleCwgJ2JyZWFrJywgdHJ1ZSwgUXVpbGwuc291cmNlcy5VU0VSKTtcclxuICAgICAgcXVpbGwuc2V0U2VsZWN0aW9uKHJhbmdlLmluZGV4ICsgMSwgUXVpbGwuc291cmNlcy5TSUxFTlQpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7IC8vIEV2aXRhIG8gY29tcG9ydGFtZW50byBwYWRyw6NvIGRlIGNyaWFyIHVtIDxwPlxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBDdXN0b20gYmxvdCBmb3IgPGJyPiB0YWdcclxuICAgIGNvbnN0IEJsb2NrRW1iZWQgPSBRdWlsbC5pbXBvcnQoJ2Jsb3RzL2Jsb2NrL2VtYmVkJyk7XHJcbiAgICBjbGFzcyBCcmVhayBleHRlbmRzIChCbG9ja0VtYmVkIGFzIGFueSkge1xyXG4gICAgICBzdGF0aWMgYmxvdE5hbWUgPSAnYnJlYWsnO1xyXG4gICAgICBzdGF0aWMgdGFnTmFtZSA9ICdicic7XHJcbiAgICB9XHJcbiAgICBRdWlsbC5yZWdpc3RlcihCcmVhayk7XHJcbiAgXHJcbiAgICB0aGlzLnF1aWxsID0gbmV3IFF1aWxsKCcja3YtZWRpdG9yJywge1xyXG4gICAgICB0aGVtZTogJ3Nub3cnLFxyXG4gICAgICBtb2R1bGVzOiB7XHJcbiAgICAgICAgdG9vbGJhcjogJyNrdi1lZGl0b3ItdG9vbGJhcicsXHJcbiAgICAgICAga2V5Ym9hcmQ6IHtcclxuICAgICAgICAgIGJpbmRpbmdzOiBiaW5kaW5ncyxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiAnJyxcclxuICAgICAgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHksXHJcbiAgICAgIGRlYnVnOiB0aGlzLmRlYnVnLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgQWxpZ25TdHlsZSA9IFF1aWxsLmltcG9ydCgnYXR0cmlidXRvcnMvc3R5bGUvYWxpZ24nKSBhcyBhbnk7XHJcbiAgICBRdWlsbC5yZWdpc3RlcihBbGlnblN0eWxlLCB0cnVlKTtcclxuXHJcbiAgXHJcbiAgICB0aGlzLnF1aWxsLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgKHJhbmdlLCBvbGRSYW5nZSwgc291cmNlKSA9PiB7XHJcbiAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgcmFuZ2U6IHJhbmdlLFxyXG4gICAgICAgIG9sZFJhbmdlOiBvbGRSYW5nZSxcclxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICBcclxuICAgIHRoaXMucXVpbGwub24oJ3RleHQtY2hhbmdlJywgKGRlbHRhLCBvbGRDb250ZW50cywgc291cmNlKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy51cGRhdGluZ0VkaXRvcikge1xyXG4gICAgICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmVzY3JldmFWYWxvcih0aGlzLnF1aWxsLmdldFNlbWFudGljSFRNTCgpLCB0aGlzLnF1aWxsLmdldFRleHQoKSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vblRleHRDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICBkZWx0YTogZGVsdGEsXHJcbiAgICAgICAgICBvbGRDb250ZW50czogb2xkQ29udGVudHMsXHJcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm91dHB1dFJhdy5lbWl0KHRoaXMucXVpbGwuZ2V0VGV4dCgpKTtcclxuICAgICAgICB0aGlzLm91dHB1dEh0bWwuZW1pdCh0aGlzLnF1aWxsLmdldFNlbWFudGljSFRNTCgpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIGFkZFF1aWxsQ3NzKCkge1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnbGluaycpO1xyXG4gICAgbGluay5yZWwgPSAnc3R5bGVzaGVldCc7XHJcbiAgICBsaW5rLmhyZWYgPSAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9xdWlsbEAyLjAuMi9kaXN0L3F1aWxsLnNub3cuY3NzJztcclxuXHJcbiAgICAvLyBRdWFuZG8gbyBDU1MgZm9yIGNhcnJlZ2FkbywgaW5pY2lhbGl6ZSBvIFF1aWxsXHJcbiAgICBsaW5rLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplUXVpbGxFZGl0b3IoKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gQWRpY2lvbmEgbyBsaW5rIGFvIDxoZWFkPlxyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCBsaW5rKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gdHJ1ZVxyXG4gICAgdGhpcy5lc2NyZXZhVmFsb3IodmFsdWUpXHJcbiAgfVxyXG5cclxuXHJcbiAgZXNjcmV2YVZhbG9yKGh0bWx2YWx1ZTogYW55LCByYXd2YWx1ZT86YW55KXtcclxuXHJcbiAgICBpZiAodGhpcy5xdWlsbCkge1xyXG5cclxuICAgICAgaWYodGhpcy51cGRhdGluZ0VkaXRvcil7XHJcbiAgICAgICAgdGhpcy5xdWlsbC5jbGlwYm9hcmQuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwoaHRtbHZhbHVlKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudmFsdWU9IGh0bWx2YWx1ZVxyXG5cclxuXHJcbiAgICAgIGlmKHJhd3ZhbHVlID09IFwiXFxuXCIgfHwgdGhpcy52YWx1ZSA9PVwiXFxuXCIpXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnXHJcblxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwia3YtZWRpdG9yLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgI2VkaXRvciBpZD1cImt2LWVkaXRvci10b29sYmFyXCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXItdG9vbGJhcic6IGhhc0NvbnRyb2xFcnJvcigpfVwiID5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtZm9udFwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJyb2JvdG9cIj5Sb2JvdG88L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9ub3NwYWNlXCI+TW9ub3NwYWNlPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImludGVyXCI+SW50ZXI8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPlNhbnMgU2VyaWY8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic2VyaWZcIj5TZXJpZjwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1oZWFkZXJcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPlRpdHVsbzwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIyXCI+U3VidGl0dWxvPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD5Ob3JtYWw8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdC1ncm91cFwiPlxyXG4gICAgICAgIDxzZWxlY3QgdGl0bGU9XCJTaXplXCIgY2xhc3M9XCJxbC1zaXplXCI+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTVweFwiPjE1cHg8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIyMHB4XCI+MjBweDwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjMwcHhcIj4zMHB4PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNDBweFwiPjQwcHg8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MHB4XCI+NTBweDwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjcwcHhcIj43MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiOTBweFwiPjkwcHg8L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtYm9sZFwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaXRhbGljXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC11bmRlcmxpbmVcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXN0cmlrZVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtY29sb3JcIj48L3NlbGVjdD5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWJhY2tncm91bmRcIj48L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXNjcmlwdFwiIHZhbHVlPVwic3ViXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zY3JpcHRcIiB2YWx1ZT1cInN1cGVyXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjFcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWhlYWRlclwiIHZhbHVlPVwiMlwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtYmxvY2txdW90ZVwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtY29kZS1ibG9ja1wiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwib3JkZXJlZFwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwiYnVsbGV0XCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbmRlbnRcIiB2YWx1ZT1cIi0xXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbmRlbnRcIiB2YWx1ZT1cIisxXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1kaXJlY3Rpb25cIiB2YWx1ZT1cInJ0bFwiPjwvYnV0dG9uPlxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYWxpZ25cIj48L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpbmtcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWltYWdlXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC12aWRlb1wiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtY2xlYW5cIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBpZD1cImt2LWVkaXRvclwiIFtzdHlsZS5oZWlnaHRdPVwiY2FudmFIZWlndGhcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGhhc0NvbnRyb2xFcnJvcigpfVwiID48L2Rpdj5cclxuPC9kaXY+XHJcbjxrdi1lcnJvciBbaGFzRXJyb3JdPVwiaGFzQ29udHJvbEVycm9yKClcIj57eyBlcnJvTWVzc2FnZSgpIH19PC9rdi1lcnJvcj5cclxuXHJcblxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcblxyXG4gIDxsaW5rIGhyZWY9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3F1aWxsQDIuMC4yL2Rpc3QvcXVpbGwuc25vdy5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgLz5cclxuICA8bGluayBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90b1wiIHJlbD1cInN0eWxlc2hlZXRcIj5cclxuICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcXVpbGxAMi4wLjIvZGlzdC9xdWlsbC5qc1wiPjwvc2NyaXB0PlxyXG4gIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9rYXRleEAwLjE2LjkvZGlzdC9rYXRleC5taW4uanNcIj48L3NjcmlwdD5cclxuXHJcblxyXG4gIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9xdWlsbEAyLjAuMi9kaXN0L3F1aWxsLmJ1YmJsZS5jc3NcIiAvPlxyXG4gIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaGlnaGxpZ2h0LmpzLzExLjkuMC9zdHlsZXMvYXRvbS1vbmUtZGFyay5taW4uY3NzXCIgLz5cclxuICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0va2F0ZXhAMC4xNi45L2Rpc3Qva2F0ZXgubWluLmNzc1wiIC8+XHJcblxyXG5cclxuICA8IS0tIEltcG9ydCBmb250cyAtLT5cclxuXHJcbiAgPGxpbmsgcmVsPVwicHJlY29ubmVjdFwiIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tXCI+XHJcbiAgPGxpbmsgcmVsPVwicHJlY29ubmVjdFwiIGhyZWY9XCJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tXCIgY3Jvc3NvcmlnaW4+XHJcblxyXG4gIDxsaW5rIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUJhbG9vKzI6d2dodEA0MDA7NTAwOzYwMDs3MDA7ODAwJmZhbWlseT1JbnRlcjp3Z2h0QDEwMC4uOTAwJmZhbWlseT1KZXRCcmFpbnMrTW9ubzppdGFsLHdnaHRAMCwxMDAuLjgwMDsxLDEwMC4uODAwJmRpc3BsYXk9c3dhcFwiIHJlbD1cInN0eWxlc2hlZXRcIj5cclxuICA8bGluayBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1CYWxvbysyOndnaHRANDAwOzUwMDs2MDA7NzAwOzgwMCZmYW1pbHk9SW50ZXI6d2dodEAxMDAuLjkwMCZmYW1pbHk9SmV0QnJhaW5zK01vbm86aXRhbCx3Z2h0QDAsMTAwLi44MDA7MSwxMDAuLjgwMCZmYW1pbHk9Um9ib3RvOml0YWwsd2dodEAwLDEwMDswLDMwMDswLDQwMDswLDUwMDswLDcwMDswLDkwMDsxLDEwMDsxLDMwMDsxLDQwMDsxLDUwMDsxLDcwMDsxLDkwMCZkaXNwbGF5PXN3YXBcIiByZWw9XCJzdHlsZXNoZWV0XCI+XHJcbiJdfQ==
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { BaseComponentInput } from '../../../api/base-components/base-component-input';
|
|
3
|
+
import { ComponentProviders } from '../../../api/helpers/component-providers';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../api/services/component.service";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "../../kv-error/kv-error.component";
|
|
8
|
+
import * as i4 from "../../kv-label/kv-label.component";
|
|
9
|
+
import * as i5 from "primeng/calendar";
|
|
10
|
+
export class KvInputCalendarComponent extends BaseComponentInput {
|
|
11
|
+
constructor(componentService) {
|
|
12
|
+
super(componentService);
|
|
13
|
+
this.isYear = false;
|
|
14
|
+
this.isMonthYear = false;
|
|
15
|
+
this.showButtonBar = false;
|
|
16
|
+
this.showIcon = true;
|
|
17
|
+
this.showTime = false;
|
|
18
|
+
this.selectionMode = 'single';
|
|
19
|
+
this.onSelectionChange = new EventEmitter();
|
|
20
|
+
this.onSelectionValue = new EventEmitter();
|
|
21
|
+
this.typeView = 'date';
|
|
22
|
+
this.dateFormat = 'dd/mm/yy';
|
|
23
|
+
this.lastInputValue = '';
|
|
24
|
+
}
|
|
25
|
+
onWindowResize() {
|
|
26
|
+
this.screenWidth = window.innerWidth;
|
|
27
|
+
}
|
|
28
|
+
writeValue(value) {
|
|
29
|
+
this.value = value;
|
|
30
|
+
if (value && typeof value === 'string') {
|
|
31
|
+
this.value = new Date(value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
super.ngOnInit();
|
|
36
|
+
if (this.isYear) {
|
|
37
|
+
this.typeView = 'year';
|
|
38
|
+
this.dateFormat = 'yy';
|
|
39
|
+
}
|
|
40
|
+
else if (this.isMonthYear) {
|
|
41
|
+
this.typeView = 'month';
|
|
42
|
+
this.dateFormat = 'mm/yy';
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.typeView = 'date';
|
|
46
|
+
this.dateFormat = 'dd/mm/yy';
|
|
47
|
+
}
|
|
48
|
+
this.screenWidth = window.innerWidth;
|
|
49
|
+
}
|
|
50
|
+
onInputChange(event) {
|
|
51
|
+
this.hideOnRangeMode();
|
|
52
|
+
this.onSelectionValue.emit(event);
|
|
53
|
+
if (this.formControl) {
|
|
54
|
+
this.onSelectionChange.emit(this.formControl.value);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
hideOnRangeMode() {
|
|
58
|
+
if (this.selectionMode == 'range') {
|
|
59
|
+
if (this.dateFilter.value[1]) {
|
|
60
|
+
this.dateFilter.hideOverlay();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
onKeyDate(event) {
|
|
65
|
+
if (this.typeView === 'date') {
|
|
66
|
+
const inputElement = event.target;
|
|
67
|
+
let inputValue = inputElement.value.replace(/\D/g, ''); // Remove tudo que não seja dígito
|
|
68
|
+
const cursorPosition = inputElement.selectionStart; // Pega a posição atual do cursor
|
|
69
|
+
// Limita a entrada a 8 caracteres (ddmmyyyy)
|
|
70
|
+
if (inputValue.length > 8) {
|
|
71
|
+
inputValue = inputValue.substring(0, 8);
|
|
72
|
+
}
|
|
73
|
+
inputValue = this.maskDate(inputValue);
|
|
74
|
+
let indAdicao = inputValue.length > this.lastInputValue.length ? true : false;
|
|
75
|
+
this.lastInputValue = inputValue;
|
|
76
|
+
// Calcula a diferença de tamanho após aplicar a máscara
|
|
77
|
+
const maskedLength = inputValue.length;
|
|
78
|
+
const lengthDiff = maskedLength - this.lastInputValue.length;
|
|
79
|
+
// Atualiza o valor do input sem perder a posição do cursor
|
|
80
|
+
inputElement.value = inputValue;
|
|
81
|
+
// Ajusta a posição do cursor de acordo com a mudança causada pela máscara
|
|
82
|
+
let newCursorPosition = cursorPosition + lengthDiff;
|
|
83
|
+
// Se o cursor estava exatamente em uma posição de barra e foi uma adição, ajusta para pular a barra ( somente na adição de caracteres )
|
|
84
|
+
if (indAdicao) {
|
|
85
|
+
if (cursorPosition === 3 || cursorPosition === 6) {
|
|
86
|
+
newCursorPosition += 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Evita que o cursor vá além do final do valor digitado
|
|
90
|
+
if (newCursorPosition > inputElement.value.length) {
|
|
91
|
+
newCursorPosition = inputElement.value.length;
|
|
92
|
+
}
|
|
93
|
+
// Define a nova posição do cursor
|
|
94
|
+
inputElement.setSelectionRange(newCursorPosition, newCursorPosition);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
onInputBlur(event) {
|
|
98
|
+
super.onInputBlur(event);
|
|
99
|
+
if (this.typeView === 'date') {
|
|
100
|
+
const input = event.target; // Cast para HTMLInputElement
|
|
101
|
+
if (input && input.value) {
|
|
102
|
+
const dateString = input.value; // Pega o valor do input
|
|
103
|
+
const [day, month, year] = dateString.split('/');
|
|
104
|
+
// Verifica se é uma data válida
|
|
105
|
+
if (day &&
|
|
106
|
+
month &&
|
|
107
|
+
year &&
|
|
108
|
+
day.length === 2 &&
|
|
109
|
+
month.length === 2 &&
|
|
110
|
+
year.length === 4) {
|
|
111
|
+
const objDate = new Date(+year, +month - 1, +day);
|
|
112
|
+
if ((!isNaN(objDate.getTime())) && !(+month > 12 || +day > 31)) {
|
|
113
|
+
this.dateFilter.value = objDate; // Atribui a data sem barras ao dateFilter
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.formControl?.setErrors({ invalidDate: true, erroMessage: 'Data Invalida!' });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
maskDate(date) {
|
|
123
|
+
// Aplica a máscara (dd/mm/yyyy)
|
|
124
|
+
let dateMasked = date;
|
|
125
|
+
if (date.length >= 5) {
|
|
126
|
+
dateMasked = date.replace(/^(\d{2})(\d{2})(\d{0,4})/, '$1/$2/$3'); // Formata como dd/mm/yyyy
|
|
127
|
+
}
|
|
128
|
+
else if (date.length >= 3) {
|
|
129
|
+
dateMasked = date.replace(/^(\d{2})(\d{0,2})/, '$1/$2'); // Formata como dd/mm
|
|
130
|
+
}
|
|
131
|
+
return dateMasked;
|
|
132
|
+
}
|
|
133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvInputCalendarComponent, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvInputCalendarComponent, selector: "kv-input-calendar", inputs: { isYear: "isYear", isMonthYear: "isMonthYear", minDate: "minDate", maxDate: "maxDate", defaultDate: "defaultDate", showButtonBar: "showButtonBar", showIcon: "showIcon", showTime: "showTime", selectionMode: "selectionMode" }, outputs: { onSelectionChange: "onSelectionChange", onSelectionValue: "onSelectionValue" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: ComponentProviders(KvInputCalendarComponent), viewQueries: [{ propertyName: "dateFilter", first: true, predicate: ["dateFilter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\r\n />\r\n <p-calendar\r\n\r\n dateMask\r\n (onInput)=\"onKeyDate($event)\"\r\n\r\n #dateFilter\r\n appendTo=\"body\"\r\n [class]=\"baseInputClass\"\r\n [id]=\"componentId\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [defaultDate]=\"defaultDate\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [selectionMode]=\"selectionMode\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [showIcon]=\"showIcon\"\r\n [showTime]=\"showTime\"\r\n [showOnFocus]=\"showTime || screenWidth > 1366 || selectionMode == 'range'\"\r\n [view]=\"typeView\"\r\n [dateFormat]=\"dateFormat\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onClose)=\"onInputClose($event)\"\r\n (onSelect)=\"onInputChange($event)\"\r\n styleClass=\"inputs\"\r\n [placeholder]=\"placeholder\"\r\n >\r\n </p-calendar>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["::ng-deep .p-calendar-w-btn .p-datepicker-trigger{background-color:#f2f3f5;border:none;color:#000;border:solid 1px #d1d5db;width:1.875rem}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:hover{background-color:#d9dadb}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:disabled{background-color:#f2f3f5}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:active{background-color:#c0c1c2}::ng-deep input{font-size:.875rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "component", type: i4.KvLabelComponent, selector: "kv-label", inputs: ["componentId", "label"] }, { kind: "component", type: i5.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }] }); }
|
|
135
|
+
}
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvInputCalendarComponent, decorators: [{
|
|
137
|
+
type: Component,
|
|
138
|
+
args: [{ selector: 'kv-input-calendar', providers: ComponentProviders(KvInputCalendarComponent), template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\r\n />\r\n <p-calendar\r\n\r\n dateMask\r\n (onInput)=\"onKeyDate($event)\"\r\n\r\n #dateFilter\r\n appendTo=\"body\"\r\n [class]=\"baseInputClass\"\r\n [id]=\"componentId\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [defaultDate]=\"defaultDate\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [selectionMode]=\"selectionMode\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [showIcon]=\"showIcon\"\r\n [showTime]=\"showTime\"\r\n [showOnFocus]=\"showTime || screenWidth > 1366 || selectionMode == 'range'\"\r\n [view]=\"typeView\"\r\n [dateFormat]=\"dateFormat\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onClose)=\"onInputClose($event)\"\r\n (onSelect)=\"onInputChange($event)\"\r\n styleClass=\"inputs\"\r\n [placeholder]=\"placeholder\"\r\n >\r\n </p-calendar>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["::ng-deep .p-calendar-w-btn .p-datepicker-trigger{background-color:#f2f3f5;border:none;color:#000;border:solid 1px #d1d5db;width:1.875rem}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:hover{background-color:#d9dadb}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:disabled{background-color:#f2f3f5}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:active{background-color:#c0c1c2}::ng-deep input{font-size:.875rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"] }]
|
|
139
|
+
}], ctorParameters: () => [{ type: i1.ComponentService }], propDecorators: { isYear: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], isMonthYear: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], minDate: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], maxDate: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], defaultDate: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], showButtonBar: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], showIcon: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], showTime: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], selectionMode: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], onSelectionChange: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], onSelectionValue: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}], dateFilter: [{
|
|
162
|
+
type: ViewChild,
|
|
163
|
+
args: ['dateFilter']
|
|
164
|
+
}], onWindowResize: [{
|
|
165
|
+
type: HostListener,
|
|
166
|
+
args: ['window:resize', ['$event']]
|
|
167
|
+
}] } });
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaW5wdXRzL2t2LWlucHV0LWNhbGVuZGFyL2t2LWlucHV0LWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1pbnB1dC1jYWxlbmRhci9rdi1pbnB1dC1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFZOUUsTUFBTSxPQUFPLHdCQUNYLFNBQVEsa0JBQXdCO0lBeUJoQyxZQUFZLGdCQUFrQztRQUM1QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQXZCakIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsa0JBQWEsR0FBb0MsUUFBUSxDQUFDO1FBRXpELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSW5FLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FB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QyxxQkFBcUI7UUFDaEYsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7OEdBMUtVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHFiQUZ4QixrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQywySkN2QnpELGtsQ0FxQ0E7OzJGRFphLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFNbEIsa0JBQWtCLDBCQUEwQjtxRkFNOUMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFMEIsVUFBVTtzQkFBMUMsU0FBUzt1QkFBQyxZQUFZO2dCQVl2QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENhbGVuZGFyVHlwZVZpZXcgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnRJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtaW5wdXQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQcm92aWRlcnMgfSBmcm9tICcuLi8uLi8uLi9hcGkvaGVscGVycy9jb21wb25lbnQtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWlucHV0LWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4va3YtaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgJy4uLy4uL2tlZXZvLWNvbXBvbmVudHMtc3R5bGVzLnNjc3MnLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBDb21wb25lbnRQcm92aWRlcnMoS3ZJbnB1dENhbGVuZGFyQ29tcG9uZW50KSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2SW5wdXRDYWxlbmRhckNvbXBvbmVudFxyXG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudElucHV0PERhdGU+XHJcbiAgaW1wbGVtZW50cyBPbkluaXRcclxue1xyXG4gIEBJbnB1dCgpIGlzWWVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzTW9udGhZZWFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBEYXRlO1xyXG4gIEBJbnB1dCgpIG1heERhdGUhOiBEYXRlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHREYXRlITogRGF0ZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0J1dHRvbkJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJY29uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93VGltZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8ICdyYW5nZScgPSAnc2luZ2xlJztcclxuICBcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvblZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBcclxuICBAVmlld0NoaWxkKCdkYXRlRmlsdGVyJykgcHJpdmF0ZSBkYXRlRmlsdGVyOiBhbnk7XHJcblxyXG4gIHR5cGVWaWV3OiBDYWxlbmRhclR5cGVWaWV3ID0gJ2RhdGUnO1xyXG4gIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdkZC9tbS95eSc7XHJcblxyXG4gIHNjcmVlbldpZHRoITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNZZWFyKSB7XHJcbiAgICAgIHRoaXMudHlwZVZpZXcgPSAneWVhcic7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9ICd5eSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNNb250aFllYXIpIHtcclxuICAgICAgdGhpcy50eXBlVmlldyA9ICdtb250aCc7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9ICdtbS95eSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnR5cGVWaWV3ID0gJ2RhdGUnO1xyXG4gICAgICB0aGlzLmRhdGVGb3JtYXQgPSAnZGQvbW0veXknO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5oaWRlT25SYW5nZU1vZGUoKTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25WYWx1ZS5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlT25SYW5nZU1vZGUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09ICdyYW5nZScpIHtcclxuICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlci52YWx1ZVsxXSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZUZpbHRlci5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsYXN0SW5wdXRWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgb25LZXlEYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnR5cGVWaWV3ID09PSAnZGF0ZScpIHtcclxuXHJcbiAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgIGxldCBpbnB1dFZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7IC8vIFJlbW92ZSB0dWRvIHF1ZSBuw6NvIHNlamEgZMOtZ2l0b1xyXG5cclxuICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7IC8vIFBlZ2EgYSBwb3Npw6fDo28gYXR1YWwgZG8gY3Vyc29yXHJcblxyXG4gICAgICAvLyBMaW1pdGEgYSBlbnRyYWRhIGEgOCBjYXJhY3RlcmVzIChkZG1teXl5eSlcclxuICAgICAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID4gOCkge1xyXG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCA4KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW5wdXRWYWx1ZSA9IHRoaXMubWFza0RhdGUoaW5wdXRWYWx1ZSk7XHJcbiAgICAgIGxldCBpbmRBZGljYW8gPVxyXG4gICAgICAgIGlucHV0VmFsdWUubGVuZ3RoID4gdGhpcy5sYXN0SW5wdXRWYWx1ZS5sZW5ndGggPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLmxhc3RJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZTtcclxuXHJcbiAgICAgIC8vIENhbGN1bGEgYSBkaWZlcmVuw6dhIGRlIHRhbWFuaG8gYXDDs3MgYXBsaWNhciBhIG3DoXNjYXJhXHJcbiAgICAgIGNvbnN0IG1hc2tlZExlbmd0aCA9IGlucHV0VmFsdWUubGVuZ3RoO1xyXG4gICAgICBjb25zdCBsZW5ndGhEaWZmID0gbWFza2VkTGVuZ3RoIC0gdGhpcy5sYXN0SW5wdXRWYWx1ZS5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBBdHVhbGl6YSBvIHZhbG9yIGRvIGlucHV0IHNlbSBwZXJkZXIgYSBwb3Npw6fDo28gZG8gY3Vyc29yXHJcbiAgICAgIGlucHV0RWxlbWVudC52YWx1ZSA9IGlucHV0VmFsdWU7XHJcblxyXG4gICAgICAvLyBBanVzdGEgYSBwb3Npw6fDo28gZG8gY3Vyc29yIGRlIGFjb3JkbyBjb20gYSBtdWRhbsOnYSBjYXVzYWRhIHBlbGEgbcOhc2NhcmFcclxuICAgICAgbGV0IG5ld0N1cnNvclBvc2l0aW9uID0gY3Vyc29yUG9zaXRpb24gKyBsZW5ndGhEaWZmO1xyXG5cclxuICAgICAgLy8gU2UgbyBjdXJzb3IgZXN0YXZhIGV4YXRhbWVudGUgZW0gdW1hIHBvc2nDp8OjbyBkZSBiYXJyYSBlIGZvaSB1bWEgYWRpw6fDo28sIGFqdXN0YSBwYXJhIHB1bGFyIGEgYmFycmEgKCBzb21lbnRlIG5hIGFkacOnw6NvIGRlIGNhcmFjdGVyZXMgKVxyXG4gICAgICBpZiAoaW5kQWRpY2FvKSB7XHJcbiAgICAgICAgaWYgKGN1cnNvclBvc2l0aW9uID09PSAzIHx8IGN1cnNvclBvc2l0aW9uID09PSA2KSB7XHJcbiAgICAgICAgICBuZXdDdXJzb3JQb3NpdGlvbiArPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBFdml0YSBxdWUgbyBjdXJzb3IgdsOhIGFsw6ltIGRvIGZpbmFsIGRvIHZhbG9yIGRpZ2l0YWRvXHJcbiAgICAgIGlmIChuZXdDdXJzb3JQb3NpdGlvbiA+IGlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBuZXdDdXJzb3JQb3NpdGlvbiA9IGlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERlZmluZSBhIG5vdmEgcG9zacOnw6NvIGRvIGN1cnNvclxyXG4gICAgICBpbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3Q3Vyc29yUG9zaXRpb24sIG5ld0N1cnNvclBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgc3VwZXIub25JbnB1dEJsdXIoZXZlbnQpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy50eXBlVmlldyA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7IC8vIENhc3QgcGFyYSBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC52YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBpbnB1dC52YWx1ZTsgLy8gUGVnYSBvIHZhbG9yIGRvIGlucHV0XHJcbiAgICAgICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVN0cmluZy5zcGxpdCgnLycpO1xyXG5cclxuXHJcbiAgICAgICAgLy8gVmVyaWZpY2Egc2Ugw6kgdW1hIGRhdGEgdsOhbGlkYVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGRheSAmJlxyXG4gICAgICAgICAgbW9udGggJiZcclxuICAgICAgICAgIHllYXIgJiZcclxuICAgICAgICAgIGRheS5sZW5ndGggPT09IDIgJiZcclxuICAgICAgICAgIG1vbnRoLmxlbmd0aCA9PT0gMiAmJlxyXG4gICAgICAgICAgeWVhci5sZW5ndGggPT09IDRcclxuICAgICAgICApIHtcclxuXHJcbiAgICAgICAgICBjb25zdCBvYmpEYXRlID0gbmV3IERhdGUoK3llYXIsICttb250aCAtIDEsICtkYXkpO1xyXG5cclxuICAgICAgICAgIGlmICgoIWlzTmFOKG9iakRhdGUuZ2V0VGltZSgpKSkgJiYgISgrbW9udGggPiAxMiB8fCArZGF5ID4gMzEpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlci52YWx1ZSA9IG9iakRhdGU7IC8vIEF0cmlidWkgYSBkYXRhIHNlbSBiYXJyYXMgYW8gZGF0ZUZpbHRlclxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWREYXRlOiB0cnVlLCBlcnJvTWVzc2FnZTogJ0RhdGEgSW52YWxpZGEhJyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBcclxuXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbWFza0RhdGUoZGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIC8vIEFwbGljYSBhIG3DoXNjYXJhIChkZC9tbS95eXl5KVxyXG4gICAgbGV0IGRhdGVNYXNrZWQgPSBkYXRlO1xyXG4gICAgaWYgKGRhdGUubGVuZ3RoID49IDUpIHtcclxuICAgICAgZGF0ZU1hc2tlZCA9IGRhdGUucmVwbGFjZSgvXihcXGR7Mn0pKFxcZHsyfSkoXFxkezAsNH0pLywgJyQxLyQyLyQzJyk7IC8vIEZvcm1hdGEgY29tbyBkZC9tbS95eXl5XHJcbiAgICB9IGVsc2UgaWYgKGRhdGUubGVuZ3RoID49IDMpIHtcclxuICAgICAgZGF0ZU1hc2tlZCA9IGRhdGUucmVwbGFjZSgvXihcXGR7Mn0pKFxcZHswLDJ9KS8sICckMS8kMicpOyAvLyBGb3JtYXRhIGNvbW8gZGQvbW1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlTWFza2VkO1xyXG4gIH1cclxufVxyXG4iLCI8c3Bhbj5cclxuICA8a3YtbGFiZWxcclxuICAgIFtjb21wb25lbnRJZF09XCJjb21wb25lbnRJZFwiXHJcbiAgICBbbGFiZWxdPVwibGFiZWwgJiYgbGFiZWwgKyAoc2hvd0FzdGVyaXNrID8gJyonIDogJycpXCJcclxuICAvPlxyXG4gIDxwLWNhbGVuZGFyXHJcblxyXG4gICAgZGF0ZU1hc2tcclxuICAgIChvbklucHV0KT1cIm9uS2V5RGF0ZSgkZXZlbnQpXCJcclxuXHJcbiAgICAjZGF0ZUZpbHRlclxyXG4gICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgIFtjbGFzc109XCJiYXNlSW5wdXRDbGFzc1wiXHJcbiAgICBbaWRdPVwiY29tcG9uZW50SWRcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2RlZmF1bHREYXRlXT1cImRlZmF1bHREYXRlXCJcclxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxyXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXHJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcclxuICAgIFtzaG93QnV0dG9uQmFyXT1cInNob3dCdXR0b25CYXJcIlxyXG4gICAgW3Nob3dJY29uXT1cInNob3dJY29uXCJcclxuICAgIFtzaG93VGltZV09XCJzaG93VGltZVwiXHJcbiAgICBbc2hvd09uRm9jdXNdPVwic2hvd1RpbWUgfHwgc2NyZWVuV2lkdGggPiAxMzY2IHx8IHNlbGVjdGlvbk1vZGUgPT0gJ3JhbmdlJ1wiXHJcbiAgICBbdmlld109XCJ0eXBlVmlld1wiXHJcbiAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcclxuICAgIChvbkJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXHJcbiAgICAob25DbG9zZSk9XCJvbklucHV0Q2xvc2UoJGV2ZW50KVwiXHJcbiAgICAob25TZWxlY3QpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgIHN0eWxlQ2xhc3M9XCJpbnB1dHNcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICA+XHJcbiAgPC9wLWNhbGVuZGFyPlxyXG5cclxuICA8a3YtZXJyb3IgW2hhc0Vycm9yXT1cImhhc0NvbnRyb2xFcnJvcigpXCI+e3sgZXJyb01lc3NhZ2UoKSB9fTwva3YtZXJyb3I+XHJcbjwvc3Bhbj5cclxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { BaseComponentInput } from '../../../api/base-components/base-component-input';
|
|
3
|
+
import { ComponentProviders } from '../../../api/helpers/component-providers';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../api/services/component.service";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "../../kv-error/kv-error.component";
|
|
8
|
+
import * as i4 from "../../kv-label/kv-label.component";
|
|
9
|
+
import * as i5 from "primeng/inputmask";
|
|
10
|
+
export class KvInputMaskComponent extends BaseComponentInput {
|
|
11
|
+
constructor(componentService) {
|
|
12
|
+
super(componentService);
|
|
13
|
+
this.mask = "";
|
|
14
|
+
this.onComplete = new EventEmitter();
|
|
15
|
+
}
|
|
16
|
+
onCompleteComplete($event) {
|
|
17
|
+
this.onComplete.emit($event);
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvInputMaskComponent, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvInputMaskComponent, selector: "kv-input-mask", inputs: { mask: "mask" }, outputs: { onComplete: "onComplete" }, providers: ComponentProviders(KvInputMaskComponent), usesInheritance: true, ngImport: i0, template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && (label + (showAsterisk ? '*' : ''))\"\r\n />\r\n <p-inputMask\r\n [class]=\"baseInputClass\"\r\n styleClass=\"inputs\"\r\n [inputId]=\"componentId\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n [(ngModel)]=\"value\"\r\n [mask]=\"mask\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onInput)=\"onInputInput($event)\"\r\n (onComplete)=\"onCompleteComplete($event)\"\r\n [autocomplete]=\"autocomplete\"\r\n [unmask]=\"true\"\r\n >\r\n </p-inputMask>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "component", type: i4.KvLabelComponent, selector: "kv-label", inputs: ["componentId", "label"] }, { kind: "component", type: i5.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }] }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvInputMaskComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'kv-input-mask', providers: ComponentProviders(KvInputMaskComponent), template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && (label + (showAsterisk ? '*' : ''))\"\r\n />\r\n <p-inputMask\r\n [class]=\"baseInputClass\"\r\n styleClass=\"inputs\"\r\n [inputId]=\"componentId\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n [(ngModel)]=\"value\"\r\n [mask]=\"mask\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onInput)=\"onInputInput($event)\"\r\n (onComplete)=\"onCompleteComplete($event)\"\r\n [autocomplete]=\"autocomplete\"\r\n [unmask]=\"true\"\r\n >\r\n </p-inputMask>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"] }]
|
|
25
|
+
}], ctorParameters: () => [{ type: i1.ComponentService }], propDecorators: { mask: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], onComplete: [{
|
|
28
|
+
type: Output
|
|
29
|
+
}] } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaW5wdXQtbWFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi1pbnB1dHMva3YtaW5wdXQtbWFzay9rdi1pbnB1dC1tYXNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1pbnB1dC1tYXNrL2t2LWlucHV0LW1hc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQVk5RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQTBCO0lBTWxFLFlBQVksZ0JBQWtDO1FBQzVDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBTGpCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFFakIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBSTdELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFXO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzlCLENBQUM7OEdBWlUsb0JBQW9CO2tHQUFwQixvQkFBb0IseUdBRnBCLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLGlEQ25CckQsNnNCQXdCQTs7MkZESGEsb0JBQW9CO2tCQVRoQyxTQUFTOytCQUNFLGVBQWUsYUFNZCxrQkFBa0Isc0JBQXNCO3FGQUkxQyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuLi8uLi8uLi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWlucHV0JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2hlbHBlcnMvY29tcG9uZW50LXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1pbnB1dC1tYXNrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtaW5wdXQtbWFzay5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9rdi1pbnB1dC1tYXNrLmNvbXBvbmVudC5zY3NzJyxcclxuICAgICcuLi8uLi9rZWV2by1jb21wb25lbnRzLXN0eWxlcy5zY3NzJ1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBDb21wb25lbnRQcm92aWRlcnMoS3ZJbnB1dE1hc2tDb21wb25lbnQpLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZJbnB1dE1hc2tDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50SW5wdXQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIG1hc2s6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBsZXRlQ29tcGxldGUoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KCRldmVudClcclxuICB9XHJcbn1cclxuIiwiPHNwYW4+XHJcbiAgPGt2LWxhYmVsXHJcbiAgICBbY29tcG9uZW50SWRdPVwiY29tcG9uZW50SWRcIlxyXG4gICAgW2xhYmVsXT1cImxhYmVsICYmIChsYWJlbCArIChzaG93QXN0ZXJpc2sgPyAnKicgOiAnJykpXCJcclxuICAvPlxyXG4gIDxwLWlucHV0TWFza1xyXG4gICAgW2NsYXNzXT1cImJhc2VJbnB1dENsYXNzXCJcclxuICAgIHN0eWxlQ2xhc3M9XCJpbnB1dHNcIlxyXG4gICAgW2lucHV0SWRdPVwiY29tcG9uZW50SWRcIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgIFttYXNrXT1cIm1hc2tcIlxyXG4gICAgKG9uQmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcclxuICAgIChvbklucHV0KT1cIm9uSW5wdXRJbnB1dCgkZXZlbnQpXCJcclxuICAgIChvbkNvbXBsZXRlKT1cIm9uQ29tcGxldGVDb21wbGV0ZSgkZXZlbnQpXCJcclxuICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcclxuICAgIFt1bm1hc2tdPVwidHJ1ZVwiXHJcbiAgPlxyXG4gIDwvcC1pbnB1dE1hc2s+XHJcblxyXG4gIDxrdi1lcnJvciBbaGFzRXJyb3JdPVwiaGFzQ29udHJvbEVycm9yKClcIj57eyBlcnJvTWVzc2FnZSgpIH19PC9rdi1lcnJvcj5cclxuPC9zcGFuPlxyXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiJdfQ==
|