@apipass/inputs 1.0.1 → 1.0.8
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/ace-editor/component.d.ts +52 -52
- package/ace-editor/directive.d.ts +39 -39
- package/custom-select/custom-select-item.d.ts +5 -5
- package/custom-select/custom-select.component.d.ts +51 -51
- package/debounce-model-directive/debouceInput.directive.d.ts +14 -14
- package/esm2022/ace-editor/component.mjs +200 -0
- package/esm2022/ace-editor/directive.mjs +153 -0
- package/{esm2020 → esm2022}/apipass-inputs.mjs +4 -4
- package/esm2022/custom-select/custom-select-item.mjs +9 -0
- package/esm2022/custom-select/custom-select.component.mjs +213 -0
- package/esm2022/debounce-model-directive/debouceInput.directive.mjs +34 -0
- package/esm2022/field/field.component.mjs +56 -0
- package/esm2022/input-avatar/input-avatar.component.mjs +91 -0
- package/esm2022/input-boolean/input-boolean.component.mjs +54 -0
- package/esm2022/input-file/input-file.component.mjs +82 -0
- package/esm2022/input-number/input-number.component.mjs +60 -0
- package/esm2022/input-password/input-password.component.mjs +94 -0
- package/esm2022/input-text/input-text.component.mjs +60 -0
- package/esm2022/inputs.module.mjs +150 -0
- package/esm2022/public-api.mjs +17 -0
- package/esm2022/select-box/mat-select-infinite-scroll.directive.mjs +91 -0
- package/esm2022/select-box/select-box.component.mjs +226 -0
- package/esm2022/select-enum/select-enum.component.mjs +47 -0
- package/esm2022/select-interpolation/select-interpolation.component.mjs +177 -0
- package/esm2022/value-acessor-base.mjs +30 -0
- package/fesm2022/apipass-inputs.mjs +1711 -0
- package/fesm2022/apipass-inputs.mjs.map +1 -0
- package/field/field.component.d.ts +15 -15
- package/index.d.ts +5 -5
- package/input-avatar/input-avatar.component.d.ts +29 -29
- package/input-boolean/input-boolean.component.d.ts +15 -15
- package/input-file/input-file.component.d.ts +31 -31
- package/input-number/input-number.component.d.ts +17 -17
- package/input-password/input-password.component.d.ts +28 -29
- package/input-text/input-text.component.d.ts +17 -17
- package/inputs.module.d.ts +36 -36
- package/package.json +18 -24
- package/public-api.d.ts +16 -16
- package/select-box/mat-select-infinite-scroll.directive.d.ts +26 -26
- package/select-box/select-box.component.d.ts +57 -57
- package/select-enum/select-enum.component.d.ts +12 -12
- package/select-interpolation/select-interpolation.component.d.ts +44 -44
- package/value-acessor-base.d.ts +13 -13
- package/esm2020/ace-editor/component.mjs +0 -199
- package/esm2020/ace-editor/directive.mjs +0 -150
- package/esm2020/custom-select/custom-select-item.mjs +0 -7
- package/esm2020/custom-select/custom-select.component.mjs +0 -204
- package/esm2020/debounce-model-directive/debouceInput.directive.mjs +0 -31
- package/esm2020/field/field.component.mjs +0 -51
- package/esm2020/input-avatar/input-avatar.component.mjs +0 -92
- package/esm2020/input-boolean/input-boolean.component.mjs +0 -56
- package/esm2020/input-file/input-file.component.mjs +0 -82
- package/esm2020/input-number/input-number.component.mjs +0 -62
- package/esm2020/input-password/input-password.component.mjs +0 -96
- package/esm2020/input-text/input-text.component.mjs +0 -62
- package/esm2020/inputs.module.mjs +0 -149
- package/esm2020/public-api.mjs +0 -17
- package/esm2020/select-box/mat-select-infinite-scroll.directive.mjs +0 -86
- package/esm2020/select-box/select-box.component.mjs +0 -220
- package/esm2020/select-enum/select-enum.component.mjs +0 -48
- package/esm2020/select-interpolation/select-interpolation.component.mjs +0 -169
- package/esm2020/value-acessor-base.mjs +0 -31
- package/fesm2015/apipass-inputs.mjs +0 -1704
- package/fesm2015/apipass-inputs.mjs.map +0 -1
- package/fesm2020/apipass-inputs.mjs +0 -1697
- package/fesm2020/apipass-inputs.mjs.map +0 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Directive, ElementRef, EventEmitter, Input, NgZone, Output } from '@angular/core';
|
|
2
|
+
import 'brace';
|
|
3
|
+
import 'brace/theme/monokai';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
class AceEditorDirective {
|
|
6
|
+
zone;
|
|
7
|
+
textChanged = new EventEmitter();
|
|
8
|
+
textChange = new EventEmitter();
|
|
9
|
+
_options = {};
|
|
10
|
+
_readOnly = false;
|
|
11
|
+
_theme = 'monokai';
|
|
12
|
+
_mode = 'html';
|
|
13
|
+
_autoUpdateContent = true;
|
|
14
|
+
_durationBeforeCallback = 0;
|
|
15
|
+
_text = '';
|
|
16
|
+
editor;
|
|
17
|
+
oldText;
|
|
18
|
+
timeoutSaving;
|
|
19
|
+
constructor(elementRef, zone) {
|
|
20
|
+
this.zone = zone;
|
|
21
|
+
const el = elementRef.nativeElement;
|
|
22
|
+
this.zone.runOutsideAngular(() => {
|
|
23
|
+
this.editor = ace.edit(el);
|
|
24
|
+
});
|
|
25
|
+
this.editor.$blockScrolling = Infinity;
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.init();
|
|
29
|
+
this.initEvents();
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this.editor.destroy();
|
|
33
|
+
}
|
|
34
|
+
init() {
|
|
35
|
+
this.editor.setOptions(this._options || {});
|
|
36
|
+
this.editor.setTheme(`ace/theme/${this._theme}`);
|
|
37
|
+
this.setMode(this._mode);
|
|
38
|
+
this.editor.setReadOnly(this._readOnly);
|
|
39
|
+
}
|
|
40
|
+
initEvents() {
|
|
41
|
+
this.editor.on('change', () => { this.updateText(); });
|
|
42
|
+
this.editor.on('paste', () => { this.updateText(); });
|
|
43
|
+
}
|
|
44
|
+
updateText() {
|
|
45
|
+
const newVal = this.editor.getValue();
|
|
46
|
+
if (newVal === this.oldText) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (!this._durationBeforeCallback) {
|
|
50
|
+
this._text = newVal;
|
|
51
|
+
this.zone.run(() => {
|
|
52
|
+
this.textChange.emit(newVal);
|
|
53
|
+
this.textChanged.emit(newVal);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
if (this.timeoutSaving != null) {
|
|
58
|
+
clearTimeout(this.timeoutSaving);
|
|
59
|
+
}
|
|
60
|
+
this.timeoutSaving = setTimeout(() => {
|
|
61
|
+
this._text = newVal;
|
|
62
|
+
this.zone.run(() => {
|
|
63
|
+
this.textChange.emit(newVal);
|
|
64
|
+
this.textChanged.emit(newVal);
|
|
65
|
+
});
|
|
66
|
+
this.timeoutSaving = null;
|
|
67
|
+
}, this._durationBeforeCallback);
|
|
68
|
+
}
|
|
69
|
+
this.oldText = newVal;
|
|
70
|
+
}
|
|
71
|
+
set options(options) {
|
|
72
|
+
this._options = options;
|
|
73
|
+
this.editor.setOptions(options || {});
|
|
74
|
+
}
|
|
75
|
+
set readOnly(readOnly) {
|
|
76
|
+
this._readOnly = readOnly;
|
|
77
|
+
this.editor.setReadOnly(readOnly);
|
|
78
|
+
}
|
|
79
|
+
set theme(theme) {
|
|
80
|
+
this._theme = theme;
|
|
81
|
+
this.editor.setTheme(`ace/theme/${theme}`);
|
|
82
|
+
}
|
|
83
|
+
set mode(mode) {
|
|
84
|
+
this.setMode(mode);
|
|
85
|
+
}
|
|
86
|
+
setMode(mode) {
|
|
87
|
+
this._mode = mode;
|
|
88
|
+
if (typeof this._mode === 'object') {
|
|
89
|
+
this.editor.getSession().setMode(this._mode);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.editor.getSession().setMode(`ace/mode/${this._mode}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
get text() {
|
|
96
|
+
return this._text;
|
|
97
|
+
}
|
|
98
|
+
set text(text) {
|
|
99
|
+
this.setText(text);
|
|
100
|
+
}
|
|
101
|
+
setText(text) {
|
|
102
|
+
if (this._text !== text) {
|
|
103
|
+
if (text === null || text === undefined) {
|
|
104
|
+
text = '';
|
|
105
|
+
}
|
|
106
|
+
if (this._autoUpdateContent) {
|
|
107
|
+
this._text = text;
|
|
108
|
+
this.editor.setValue(text);
|
|
109
|
+
this.editor.clearSelection();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
set autoUpdateContent(status) {
|
|
114
|
+
this._autoUpdateContent = status;
|
|
115
|
+
}
|
|
116
|
+
set durationBeforeCallback(num) {
|
|
117
|
+
this.setDurationBeforeCallback(num);
|
|
118
|
+
}
|
|
119
|
+
setDurationBeforeCallback(num) {
|
|
120
|
+
this._durationBeforeCallback = num;
|
|
121
|
+
}
|
|
122
|
+
get aceEditor() {
|
|
123
|
+
return this.editor;
|
|
124
|
+
}
|
|
125
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AceEditorDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
126
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: AceEditorDirective, selector: "[ace-editor]", inputs: { options: "options", readOnly: "readOnly", theme: "theme", mode: "mode", text: "text", autoUpdateContent: "autoUpdateContent", durationBeforeCallback: "durationBeforeCallback" }, outputs: { textChanged: "textChanged", textChange: "textChange" }, ngImport: i0 });
|
|
127
|
+
}
|
|
128
|
+
export { AceEditorDirective };
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AceEditorDirective, decorators: [{
|
|
130
|
+
type: Directive,
|
|
131
|
+
args: [{
|
|
132
|
+
selector: '[ace-editor]'
|
|
133
|
+
}]
|
|
134
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { textChanged: [{
|
|
135
|
+
type: Output
|
|
136
|
+
}], textChange: [{
|
|
137
|
+
type: Output
|
|
138
|
+
}], options: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], readOnly: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], theme: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], mode: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], text: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], autoUpdateContent: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], durationBeforeCallback: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}] } });
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9hY2UtZWRpdG9yL2RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzdHLE9BQU8sT0FBTyxDQUFBO0FBQ2QsT0FBTyxxQkFBcUIsQ0FBQTs7QUFJNUIsTUFHYSxrQkFBa0I7SUFjeUI7SUFiNUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFDaEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFDekMsUUFBUSxHQUFRLEVBQUUsQ0FBQTtJQUNsQixTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQ2pCLE1BQU0sR0FBRyxTQUFTLENBQUE7SUFDbEIsS0FBSyxHQUFHLE1BQU0sQ0FBQTtJQUNkLGtCQUFrQixHQUFHLElBQUksQ0FBQTtJQUN6Qix1QkFBdUIsR0FBRyxDQUFDLENBQUE7SUFDM0IsS0FBSyxHQUFHLEVBQUUsQ0FBQTtJQUNWLE1BQU0sQ0FBSztJQUNYLE9BQU8sQ0FBSztJQUNaLGFBQWEsQ0FBSztJQUVsQixZQUFhLFVBQXNCLEVBQW1CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2hFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUE7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzVCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFBO0lBQ3hDLENBQUM7SUFFRCxRQUFRO1FBQ04s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SUFFRCxJQUFhLGlCQUFpQixDQUFFLE1BQVc7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQTtJQUNsQyxDQUFDO0lBRUQsSUFBYSxzQkFBc0IsQ0FBRSxHQUFXO1FBQzlDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQseUJBQXlCLENBQUUsR0FBVztRQUNwQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQzt1R0F4SVUsa0JBQWtCOzJGQUFsQixrQkFBa0I7O1NBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6QjtzSEFFVyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBcUVNLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sUUFBUTtzQkFBcEIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLElBQUk7c0JBQWhCLEtBQUs7Z0JBY0YsSUFBSTtzQkFEUCxLQUFLO2dCQXVCTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBSU8sc0JBQXNCO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0ICdicmFjZSdcclxuaW1wb3J0ICdicmFjZS90aGVtZS9tb25va2FpJ1xyXG5cclxuZGVjbGFyZSBsZXQgYWNlOiBhbnlcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FjZS1lZGl0b3JdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNlRWRpdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBPdXRwdXQoKSB0ZXh0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKVxyXG4gIEBPdXRwdXQoKSB0ZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXHJcbiAgX29wdGlvbnM6IGFueSA9IHt9XHJcbiAgX3JlYWRPbmx5ID0gZmFsc2VcclxuICBfdGhlbWUgPSAnbW9ub2thaSdcclxuICBfbW9kZSA9ICdodG1sJ1xyXG4gIF9hdXRvVXBkYXRlQ29udGVudCA9IHRydWVcclxuICBfZHVyYXRpb25CZWZvcmVDYWxsYmFjayA9IDBcclxuICBfdGV4dCA9ICcnXHJcbiAgZWRpdG9yOiBhbnlcclxuICBvbGRUZXh0OiBhbnlcclxuICB0aW1lb3V0U2F2aW5nOiBhbnlcclxuXHJcbiAgY29uc3RydWN0b3IgKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lKSB7XHJcbiAgICBjb25zdCBlbCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgdGhpcy5lZGl0b3IgPSBhY2UuZWRpdChlbClcclxuICAgIH0pXHJcbiAgICB0aGlzLmVkaXRvci4kYmxvY2tTY3JvbGxpbmcgPSBJbmZpbml0eVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0KClcclxuICAgIHRoaXMuaW5pdEV2ZW50cygpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvci5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIGluaXQgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0T3B0aW9ucyh0aGlzLl9vcHRpb25zIHx8IHt9KVxyXG4gICAgdGhpcy5lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoaXMuX3RoZW1lfWApXHJcbiAgICB0aGlzLnNldE1vZGUodGhpcy5fbW9kZSlcclxuICAgIHRoaXMuZWRpdG9yLnNldFJlYWRPbmx5KHRoaXMuX3JlYWRPbmx5KVxyXG4gIH1cclxuXHJcbiAgaW5pdEV2ZW50cyAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvci5vbignY2hhbmdlJywgKCkgPT4geyB0aGlzLnVwZGF0ZVRleHQoKSB9KVxyXG4gICAgdGhpcy5lZGl0b3Iub24oJ3Bhc3RlJywgKCkgPT4geyB0aGlzLnVwZGF0ZVRleHQoKSB9KVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGV4dCAoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdWYWwgPSB0aGlzLmVkaXRvci5nZXRWYWx1ZSgpXHJcbiAgICBpZiAobmV3VmFsID09PSB0aGlzLm9sZFRleHQpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX2R1cmF0aW9uQmVmb3JlQ2FsbGJhY2spIHtcclxuICAgICAgdGhpcy5fdGV4dCA9IG5ld1ZhbFxyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnRleHRDaGFuZ2UuZW1pdChuZXdWYWwpXHJcbiAgICAgICAgdGhpcy50ZXh0Q2hhbmdlZC5lbWl0KG5ld1ZhbClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRTYXZpbmcgIT0gbnVsbCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRTYXZpbmcpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudGltZW91dFNhdmluZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3RleHQgPSBuZXdWYWxcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudGV4dENoYW5nZS5lbWl0KG5ld1ZhbClcclxuICAgICAgICAgIHRoaXMudGV4dENoYW5nZWQuZW1pdChuZXdWYWwpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRpbWVvdXRTYXZpbmcgPSBudWxsXHJcbiAgICAgIH0sIHRoaXMuX2R1cmF0aW9uQmVmb3JlQ2FsbGJhY2spXHJcbiAgICB9XHJcbiAgICB0aGlzLm9sZFRleHQgPSBuZXdWYWxcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zIChvcHRpb25zOiBhbnkpIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zXHJcbiAgICB0aGlzLmVkaXRvci5zZXRPcHRpb25zKG9wdGlvbnMgfHwge30pXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgcmVhZE9ubHkgKHJlYWRPbmx5OiBhbnkpIHtcclxuICAgIHRoaXMuX3JlYWRPbmx5ID0gcmVhZE9ubHlcclxuICAgIHRoaXMuZWRpdG9yLnNldFJlYWRPbmx5KHJlYWRPbmx5KVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHRoZW1lICh0aGVtZTogYW55KSB7XHJcbiAgICB0aGlzLl90aGVtZSA9IHRoZW1lXHJcbiAgICB0aGlzLmVkaXRvci5zZXRUaGVtZShgYWNlL3RoZW1lLyR7dGhlbWV9YClcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBtb2RlIChtb2RlOiBhbnkpIHtcclxuICAgIHRoaXMuc2V0TW9kZShtb2RlKVxyXG4gIH1cclxuXHJcbiAgc2V0TW9kZSAobW9kZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9tb2RlID0gbW9kZVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLl9tb2RlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICB0aGlzLmVkaXRvci5nZXRTZXNzaW9uKCkuc2V0TW9kZSh0aGlzLl9tb2RlKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0b3IuZ2V0U2Vzc2lvbigpLnNldE1vZGUoYGFjZS9tb2RlLyR7dGhpcy5fbW9kZX1gKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgdGV4dCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90ZXh0XHJcbiAgfVxyXG5cclxuICBzZXQgdGV4dCAodGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNldFRleHQodGV4dClcclxuICB9XHJcblxyXG4gIHNldFRleHQgKHRleHQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3RleHQgIT09IHRleHQpIHtcclxuICAgICAgaWYgKHRleHQgPT09IG51bGwgfHwgdGV4dCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGV4dCA9ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLl9hdXRvVXBkYXRlQ29udGVudCkge1xyXG4gICAgICAgIHRoaXMuX3RleHQgPSB0ZXh0XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUodGV4dClcclxuICAgICAgICB0aGlzLmVkaXRvci5jbGVhclNlbGVjdGlvbigpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhdXRvVXBkYXRlQ29udGVudCAoc3RhdHVzOiBhbnkpIHtcclxuICAgIHRoaXMuX2F1dG9VcGRhdGVDb250ZW50ID0gc3RhdHVzXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgZHVyYXRpb25CZWZvcmVDYWxsYmFjayAobnVtOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2V0RHVyYXRpb25CZWZvcmVDYWxsYmFjayhudW0pXHJcbiAgfVxyXG5cclxuICBzZXREdXJhdGlvbkJlZm9yZUNhbGxiYWNrIChudW06IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZHVyYXRpb25CZWZvcmVDYWxsYmFjayA9IG51bVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFjZUVkaXRvciAoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpcGFzcy1pbnB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2FwaXBhc3MtaW5wdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class CustomSelectItem {
|
|
2
|
+
id;
|
|
3
|
+
text;
|
|
4
|
+
constructor(id, text) {
|
|
5
|
+
this.id = id;
|
|
6
|
+
this.text = text;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlbGVjdC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9jdXN0b20tc2VsZWN0L2N1c3RvbS1zZWxlY3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3BCLEVBQUUsQ0FBMkI7SUFDN0IsSUFBSSxDQUFRO0lBRW5CLFlBQWEsRUFBNkIsRUFBRSxJQUFZO1FBQ3RELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEN1c3RvbVNlbGVjdEl0ZW0ge1xyXG4gIHB1YmxpYyBpZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxyXG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmdcclxuXHJcbiAgY29uc3RydWN0b3IgKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsLCB0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuaWQgPSBpZFxyXG4gICAgdGhpcy50ZXh0ID0gdGV4dFxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { CustomSelectItem } from './custom-select-item';
|
|
4
|
+
import { ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
import * as i4 from "@angular/material/form-field";
|
|
10
|
+
import * as i5 from "@angular/material/input";
|
|
11
|
+
import * as i6 from "ngx-drag-drop";
|
|
12
|
+
import * as i7 from "@apipass/pipes";
|
|
13
|
+
class CustomSelectComponent {
|
|
14
|
+
sso;
|
|
15
|
+
scrollStrategy;
|
|
16
|
+
_triggerRect;
|
|
17
|
+
disabled = false;
|
|
18
|
+
items = [];
|
|
19
|
+
allowTyping = false;
|
|
20
|
+
allowRemove = false;
|
|
21
|
+
allowAddItem = true;
|
|
22
|
+
addItemLabel = 'Add New Item';
|
|
23
|
+
placeHolder = 'Select';
|
|
24
|
+
findPlaceHolder = 'Find item';
|
|
25
|
+
searchText = '';
|
|
26
|
+
onSelect = new EventEmitter();
|
|
27
|
+
onUnSelect = new EventEmitter();
|
|
28
|
+
onAddItem = new EventEmitter();
|
|
29
|
+
trigger;
|
|
30
|
+
input;
|
|
31
|
+
opened = false;
|
|
32
|
+
selectedItem;
|
|
33
|
+
innerValue;
|
|
34
|
+
selectedModelValue;
|
|
35
|
+
edited = false;
|
|
36
|
+
tabindex = '0';
|
|
37
|
+
onBlur(target) {
|
|
38
|
+
if (this.allowTyping) {
|
|
39
|
+
if (this.value) {
|
|
40
|
+
if (this.edited) {
|
|
41
|
+
this.writeValue(this.value);
|
|
42
|
+
this.selectedItem = new CustomSelectItem(this.value, this.value);
|
|
43
|
+
this.onSelect.next(this.selectedItem);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.writeValue(undefined);
|
|
48
|
+
this.onSelect.next(undefined);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (target?.relatedTarget?.classList.contains('search-input-item')) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.setTriggerRect();
|
|
55
|
+
this.opened = false;
|
|
56
|
+
}
|
|
57
|
+
constructor(sso) {
|
|
58
|
+
this.sso = sso;
|
|
59
|
+
this.scrollStrategy = this.sso.block();
|
|
60
|
+
}
|
|
61
|
+
ngAfterViewInit() {
|
|
62
|
+
setTimeout(() => {
|
|
63
|
+
this.setTriggerRect();
|
|
64
|
+
}, 300);
|
|
65
|
+
}
|
|
66
|
+
setTriggerRect() {
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
this._triggerRect = this.trigger?.nativeElement.getBoundingClientRect();
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
selectItem(item) {
|
|
72
|
+
this.opened = false;
|
|
73
|
+
this.selectedItem = item;
|
|
74
|
+
this.edited = false;
|
|
75
|
+
this.selectedModelValue = item.text;
|
|
76
|
+
this.value = item.text;
|
|
77
|
+
this.searchText = '';
|
|
78
|
+
this.onSelect.next(item);
|
|
79
|
+
}
|
|
80
|
+
addItem() {
|
|
81
|
+
this.opened = false;
|
|
82
|
+
this.searchText = '';
|
|
83
|
+
this.onAddItem.next(undefined);
|
|
84
|
+
}
|
|
85
|
+
keyPress() {
|
|
86
|
+
this.setTriggerRect();
|
|
87
|
+
if (this.allowTyping) {
|
|
88
|
+
this.opened = false;
|
|
89
|
+
this.edited = true;
|
|
90
|
+
this.selectedModelValue = this.value;
|
|
91
|
+
this.searchText = '';
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.edited = false;
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
clicked() {
|
|
99
|
+
this.setTriggerRect();
|
|
100
|
+
this.opened = true;
|
|
101
|
+
this.searchText = '';
|
|
102
|
+
}
|
|
103
|
+
onTouchedCallback = () => {
|
|
104
|
+
};
|
|
105
|
+
onChangeCallback = () => {
|
|
106
|
+
};
|
|
107
|
+
get value() {
|
|
108
|
+
return this.innerValue;
|
|
109
|
+
}
|
|
110
|
+
set value(value) {
|
|
111
|
+
this.innerValue = value;
|
|
112
|
+
this.onChangeCallback(value);
|
|
113
|
+
this.onSelect.next(value);
|
|
114
|
+
}
|
|
115
|
+
writeValue(value) {
|
|
116
|
+
if (value !== this.innerValue) {
|
|
117
|
+
if (!this.selectedItem?.text || !value) {
|
|
118
|
+
this.selectedItem = new CustomSelectItem(null, value);
|
|
119
|
+
}
|
|
120
|
+
this.innerValue = value;
|
|
121
|
+
this.selectedModelValue = value;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
registerOnChange(fn) {
|
|
125
|
+
this.onChangeCallback = fn;
|
|
126
|
+
}
|
|
127
|
+
registerOnTouched(fn) {
|
|
128
|
+
this.onTouchedCallback = fn;
|
|
129
|
+
}
|
|
130
|
+
setDisabledState(isDisabled) {
|
|
131
|
+
this.disabled = isDisabled;
|
|
132
|
+
}
|
|
133
|
+
arrowClick(event) {
|
|
134
|
+
event.stopPropagation();
|
|
135
|
+
this.setTriggerRect();
|
|
136
|
+
if (this.opened) {
|
|
137
|
+
this.opened = false;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
this.opened = true;
|
|
141
|
+
this.searchText = '';
|
|
142
|
+
this.input?.nativeElement.focus();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
removeClick(event) {
|
|
146
|
+
event.stopPropagation();
|
|
147
|
+
this.opened = false;
|
|
148
|
+
this.searchText = '';
|
|
149
|
+
this.innerValue = null;
|
|
150
|
+
this.onUnSelect.next(undefined);
|
|
151
|
+
}
|
|
152
|
+
onDrop($event) {
|
|
153
|
+
this.searchText = '';
|
|
154
|
+
if (!this.value) {
|
|
155
|
+
this.value = '';
|
|
156
|
+
}
|
|
157
|
+
this.value += `{{${$event.data}}}`;
|
|
158
|
+
this.edited = true;
|
|
159
|
+
this.onBlur(undefined);
|
|
160
|
+
}
|
|
161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: CustomSelectComponent, deps: [{ token: i1.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: CustomSelectComponent, selector: "custom-select", inputs: { disabled: "disabled", items: "items", allowTyping: "allowTyping", allowRemove: "allowRemove", allowAddItem: "allowAddItem", addItemLabel: "addItemLabel", placeHolder: "placeHolder", findPlaceHolder: "findPlaceHolder", searchText: "searchText" }, outputs: { onSelect: "onSelect", onUnSelect: "onUnSelect", onAddItem: "onAddItem" }, host: { listeners: { "blur": "onBlur($event.target)" }, properties: { "attr.tabindex": "this.tabindex" } }, providers: [{
|
|
163
|
+
provide: NG_VALUE_ACCESSOR,
|
|
164
|
+
useExisting: forwardRef(() => CustomSelectComponent),
|
|
165
|
+
multi: true
|
|
166
|
+
}], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"custom-select-input\" #trigger>\r\n <mat-form-field cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"custom-select-component\" [ngClass]=\"{'select-open' : opened}\" appearance=\"fill\" autocomplete=\"off\">\r\n <input matInput #input\r\n [placeholder]=\"placeHolder\"\r\n (focus)=\"opened = true\"\r\n (blur)=\"onBlur($event)\"\r\n [(ngModel)]=\"value\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n [disabled]=\"disabled\"\r\n (keyup)=keyPress()\r\n (click)=\"clicked()\"\r\n dndDropzone\r\n (dndDrop)=\"onDrop($event)\"\r\n autocomplete=\"off\"\r\n />\r\n <span *ngIf=\"allowRemove\" title=\"Remover\" class=\"remove-icon\" (click)=\"removeClick($event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <span class=\"open-icon\" (click)=\"arrowClick($event)\">\r\n <i class=\"fas\" [ngClass]=\"{'fa-caret-down' : !opened, 'fa-caret-up' : opened}\"></i>\r\n </span>\r\n </mat-form-field>\r\n</div>\r\n<div class=\"custom-select-component\">\r\n\r\n <ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayPanelClass]=\"'custom-select-overlay-panel'\"\r\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"opened\"\r\n [cdkConnectedOverlayMinWidth]=\"_triggerRect?.width!\">\r\n <ul class=\"ul-ac\">\r\n <li class=\"li-search search-input-item\">\r\n <mat-form-field class=\"apipass-input-text search-input-item\" appearance=\"fill\">\r\n <input matInput class=\"search-input-item\"\r\n [placeholder]=\"findPlaceHolder\"\r\n [(ngModel)]=\"searchText\"\r\n (blur)=\"onBlur($event)\"\r\n aria-autocomplete=\"none\"\r\n autocomplete=\"off\"\r\n />\r\n </mat-form-field>\r\n </li>\r\n\r\n <li class=\"clickable\" *ngFor=\"let i of items | selectFilter:searchText:'text'\"\r\n (click)=\"selectItem(i)\"\r\n (mousedown)=\"selectItem(i)\">\r\n {{i.text}}\r\n </li>\r\n\r\n <li *ngIf=\"allowAddItem\" class=\"li-add\" (mousedown)=\"addItem()\" (click)=\"addItem()\">\r\n <span class=\"fa fa-plus-circle\"></span>\r\n <span>{{addItemLabel}}</span>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n</div>\r\n", styles: ["::ng-deep .custom-select-overlay-panel,.custom-select-input,.custom-select-component{cursor:pointer}::ng-deep .custom-select-overlay-panel input,.custom-select-input input,.custom-select-component input{background:#FFF!important;height:37px}::ng-deep .custom-select-overlay-panel .ul-ac,.custom-select-input .ul-ac,.custom-select-component .ul-ac{max-height:16rem;overflow:auto;background:#fff;border:1px solid #ccc;box-sizing:border-box;list-style:none;padding:0;width:100%;position:relative;margin-top:-1px}::ng-deep .custom-select-overlay-panel .ul-ac li,.custom-select-input .ul-ac li,.custom-select-component .ul-ac li{text-align:left;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:10px;font-size:12px}::ng-deep .custom-select-overlay-panel .ul-ac li:hover,.custom-select-input .ul-ac li:hover,.custom-select-component .ul-ac li:hover{background:#bbbcbc}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex,.custom-select-input .ul-ac li .mat-form-field-flex,.custom-select-component .ul-ac li .mat-form-field-flex{height:37px!important}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex input,.custom-select-input .ul-ac li .mat-form-field-flex input,.custom-select-component .ul-ac li .mat-form-field-flex input{height:auto}::ng-deep .custom-select-overlay-panel .ul-ac .li-add,.custom-select-input .ul-ac .li-add,.custom-select-component .ul-ac .li-add{border-top:1px solid lightgray}::ng-deep .custom-select-overlay-panel .ul-ac .li-add .fa,.custom-select-input .ul-ac .li-add .fa,.custom-select-component .ul-ac .li-add .fa{padding-right:5px;color:#ff8f17}::ng-deep .custom-select-overlay-panel .selected,.custom-select-input .selected,.custom-select-component .selected{background-color:#898a8a!important}::ng-deep .custom-select-overlay-panel .selected .fa,.custom-select-input .selected .fa,.custom-select-component .selected .fa{color:#fff!important}::ng-deep .custom-select-overlay-panel .remove-icon i,.custom-select-input .remove-icon i,.custom-select-component .remove-icon i{color:red;margin-right:10px}::ng-deep .custom-select-overlay-panel .open-icon,.custom-select-input .open-icon,.custom-select-component .open-icon{cursor:pointer}::ng-deep .custom-select-overlay-panel .open-icon i,.custom-select-input .open-icon i,.custom-select-component .open-icon i{color:#0000008a}::ng-deep .custom-select-overlay-panel .li-search,.custom-select-input .li-search,.custom-select-component .li-search{cursor:default!important;border-bottom:1px solid #CCC!important}::ng-deep .custom-select-overlay-panel .li-search:hover,.custom-select-input .li-search:hover,.custom-select-component .li-search:hover{background:#FFF!important}::ng-deep .custom-select-overlay-panel .select-open .mat-form-field-flex,.custom-select-input .select-open .mat-form-field-flex,.custom-select-component .select-open .mat-form-field-flex{border-radius:6px 6px 0 0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.DndDropzoneDirective, selector: "[dndDropzone]", inputs: ["dndDropzone", "dndEffectAllowed", "dndAllowExternal", "dndHorizontal", "dndDragoverClass", "dndDropzoneDisabledClass", "dndDisableIf", "dndDisableDropIf"], outputs: ["dndDragover", "dndDrop"] }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i7.SelectFilterPipe, name: "selectFilter" }] });
|
|
167
|
+
}
|
|
168
|
+
export { CustomSelectComponent };
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: CustomSelectComponent, decorators: [{
|
|
170
|
+
type: Component,
|
|
171
|
+
args: [{ selector: 'custom-select', providers: [{
|
|
172
|
+
provide: NG_VALUE_ACCESSOR,
|
|
173
|
+
useExisting: forwardRef(() => CustomSelectComponent),
|
|
174
|
+
multi: true
|
|
175
|
+
}], template: "<div class=\"custom-select-input\" #trigger>\r\n <mat-form-field cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"custom-select-component\" [ngClass]=\"{'select-open' : opened}\" appearance=\"fill\" autocomplete=\"off\">\r\n <input matInput #input\r\n [placeholder]=\"placeHolder\"\r\n (focus)=\"opened = true\"\r\n (blur)=\"onBlur($event)\"\r\n [(ngModel)]=\"value\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n [disabled]=\"disabled\"\r\n (keyup)=keyPress()\r\n (click)=\"clicked()\"\r\n dndDropzone\r\n (dndDrop)=\"onDrop($event)\"\r\n autocomplete=\"off\"\r\n />\r\n <span *ngIf=\"allowRemove\" title=\"Remover\" class=\"remove-icon\" (click)=\"removeClick($event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <span class=\"open-icon\" (click)=\"arrowClick($event)\">\r\n <i class=\"fas\" [ngClass]=\"{'fa-caret-down' : !opened, 'fa-caret-up' : opened}\"></i>\r\n </span>\r\n </mat-form-field>\r\n</div>\r\n<div class=\"custom-select-component\">\r\n\r\n <ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayPanelClass]=\"'custom-select-overlay-panel'\"\r\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"opened\"\r\n [cdkConnectedOverlayMinWidth]=\"_triggerRect?.width!\">\r\n <ul class=\"ul-ac\">\r\n <li class=\"li-search search-input-item\">\r\n <mat-form-field class=\"apipass-input-text search-input-item\" appearance=\"fill\">\r\n <input matInput class=\"search-input-item\"\r\n [placeholder]=\"findPlaceHolder\"\r\n [(ngModel)]=\"searchText\"\r\n (blur)=\"onBlur($event)\"\r\n aria-autocomplete=\"none\"\r\n autocomplete=\"off\"\r\n />\r\n </mat-form-field>\r\n </li>\r\n\r\n <li class=\"clickable\" *ngFor=\"let i of items | selectFilter:searchText:'text'\"\r\n (click)=\"selectItem(i)\"\r\n (mousedown)=\"selectItem(i)\">\r\n {{i.text}}\r\n </li>\r\n\r\n <li *ngIf=\"allowAddItem\" class=\"li-add\" (mousedown)=\"addItem()\" (click)=\"addItem()\">\r\n <span class=\"fa fa-plus-circle\"></span>\r\n <span>{{addItemLabel}}</span>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n</div>\r\n", styles: ["::ng-deep .custom-select-overlay-panel,.custom-select-input,.custom-select-component{cursor:pointer}::ng-deep .custom-select-overlay-panel input,.custom-select-input input,.custom-select-component input{background:#FFF!important;height:37px}::ng-deep .custom-select-overlay-panel .ul-ac,.custom-select-input .ul-ac,.custom-select-component .ul-ac{max-height:16rem;overflow:auto;background:#fff;border:1px solid #ccc;box-sizing:border-box;list-style:none;padding:0;width:100%;position:relative;margin-top:-1px}::ng-deep .custom-select-overlay-panel .ul-ac li,.custom-select-input .ul-ac li,.custom-select-component .ul-ac li{text-align:left;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:10px;font-size:12px}::ng-deep .custom-select-overlay-panel .ul-ac li:hover,.custom-select-input .ul-ac li:hover,.custom-select-component .ul-ac li:hover{background:#bbbcbc}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex,.custom-select-input .ul-ac li .mat-form-field-flex,.custom-select-component .ul-ac li .mat-form-field-flex{height:37px!important}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex input,.custom-select-input .ul-ac li .mat-form-field-flex input,.custom-select-component .ul-ac li .mat-form-field-flex input{height:auto}::ng-deep .custom-select-overlay-panel .ul-ac .li-add,.custom-select-input .ul-ac .li-add,.custom-select-component .ul-ac .li-add{border-top:1px solid lightgray}::ng-deep .custom-select-overlay-panel .ul-ac .li-add .fa,.custom-select-input .ul-ac .li-add .fa,.custom-select-component .ul-ac .li-add .fa{padding-right:5px;color:#ff8f17}::ng-deep .custom-select-overlay-panel .selected,.custom-select-input .selected,.custom-select-component .selected{background-color:#898a8a!important}::ng-deep .custom-select-overlay-panel .selected .fa,.custom-select-input .selected .fa,.custom-select-component .selected .fa{color:#fff!important}::ng-deep .custom-select-overlay-panel .remove-icon i,.custom-select-input .remove-icon i,.custom-select-component .remove-icon i{color:red;margin-right:10px}::ng-deep .custom-select-overlay-panel .open-icon,.custom-select-input .open-icon,.custom-select-component .open-icon{cursor:pointer}::ng-deep .custom-select-overlay-panel .open-icon i,.custom-select-input .open-icon i,.custom-select-component .open-icon i{color:#0000008a}::ng-deep .custom-select-overlay-panel .li-search,.custom-select-input .li-search,.custom-select-component .li-search{cursor:default!important;border-bottom:1px solid #CCC!important}::ng-deep .custom-select-overlay-panel .li-search:hover,.custom-select-input .li-search:hover,.custom-select-component .li-search:hover{background:#FFF!important}::ng-deep .custom-select-overlay-panel .select-open .mat-form-field-flex,.custom-select-input .select-open .mat-form-field-flex,.custom-select-component .select-open .mat-form-field-flex{border-radius:6px 6px 0 0!important}\n"] }]
|
|
176
|
+
}], ctorParameters: function () { return [{ type: i1.ScrollStrategyOptions }]; }, propDecorators: { disabled: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], items: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], allowTyping: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], allowRemove: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], allowAddItem: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], addItemLabel: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], placeHolder: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], findPlaceHolder: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], searchText: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], onSelect: [{
|
|
195
|
+
type: Output
|
|
196
|
+
}], onUnSelect: [{
|
|
197
|
+
type: Output
|
|
198
|
+
}], onAddItem: [{
|
|
199
|
+
type: Output
|
|
200
|
+
}], trigger: [{
|
|
201
|
+
type: ViewChild,
|
|
202
|
+
args: ['trigger']
|
|
203
|
+
}], input: [{
|
|
204
|
+
type: ViewChild,
|
|
205
|
+
args: ['input', { read: ElementRef }]
|
|
206
|
+
}], tabindex: [{
|
|
207
|
+
type: HostBinding,
|
|
208
|
+
args: ['attr.tabindex']
|
|
209
|
+
}], onBlur: [{
|
|
210
|
+
type: HostListener,
|
|
211
|
+
args: ['blur', ['$event.target']]
|
|
212
|
+
}] } });
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2N1c3RvbS1zZWxlY3QvY3VzdG9tLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2N1c3RvbS1zZWxlY3QvY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25KLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN2RCxPQUFPLEVBQWtCLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7Ozs7Ozs7OztBQUU1RSxNQVdhLHFCQUFxQjtJQWlERjtJQWhEOUIsY0FBYyxDQUFnQjtJQUM5QixZQUFZLENBQXdCO0lBRTNCLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDVCxLQUFLLEdBQXVCLEVBQUUsQ0FBQTtJQUNyQyxXQUFXLEdBQUcsS0FBSyxDQUFBO0lBQ25CLFdBQVcsR0FBRyxLQUFLLENBQUE7SUFDbkIsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUNuQixZQUFZLEdBQUcsY0FBYyxDQUFBO0lBQzdCLFdBQVcsR0FBRyxRQUFRLENBQUE7SUFDdEIsZUFBZSxHQUFHLFdBQVcsQ0FBQTtJQUM3QixVQUFVLEdBQUcsRUFBRSxDQUFBO0lBRWQsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFBO0lBQy9DLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFBO0lBQ3BDLFNBQVMsR0FBRyxJ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ZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xyXG5pbXBvcnQgeyBDdXN0b21TZWxlY3RJdGVtIH0gZnJvbSAnLi9jdXN0b20tc2VsZWN0LWl0ZW0nXHJcbmltcG9ydCB7IFNjcm9sbFN0cmF0ZWd5LCBTY3JvbGxTdHJhdGVneU9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3VzdG9tLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICdjdXN0b20tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tU2VsZWN0Q29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5XHJcbiAgX3RyaWdnZXJSZWN0OiBDbGllbnRSZWN0IHwgdW5kZWZpbmVkXHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2VcclxuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IEN1c3RvbVNlbGVjdEl0ZW1bXSA9IFtdXHJcbiAgQElucHV0KCkgYWxsb3dUeXBpbmcgPSBmYWxzZVxyXG4gIEBJbnB1dCgpIGFsbG93UmVtb3ZlID0gZmFsc2VcclxuICBASW5wdXQoKSBhbGxvd0FkZEl0ZW0gPSB0cnVlXHJcbiAgQElucHV0KCkgYWRkSXRlbUxhYmVsID0gJ0FkZCBOZXcgSXRlbSdcclxuICBASW5wdXQoKSBwbGFjZUhvbGRlciA9ICdTZWxlY3QnXHJcbiAgQElucHV0KCkgZmluZFBsYWNlSG9sZGVyID0gJ0ZpbmQgaXRlbSdcclxuICBASW5wdXQoKSBzZWFyY2hUZXh0ID0gJydcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21TZWxlY3RJdGVtPigpXHJcbiAgQE91dHB1dCgpIG9uVW5TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG4gIEBPdXRwdXQoKSBvbkFkZEl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG5cclxuICBAVmlld0NoaWxkKCd0cmlnZ2VyJykgdHJpZ2dlcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGlucHV0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXHJcblxyXG4gIHB1YmxpYyBvcGVuZWQgPSBmYWxzZVxyXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW06IEN1c3RvbVNlbGVjdEl0ZW0gfCB1bmRlZmluZWRcclxuICBwcml2YXRlIGlubmVyVmFsdWU6IGFueVxyXG4gIHByaXZhdGUgc2VsZWN0ZWRNb2RlbFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWRcclxuXHJcbiAgcHJpdmF0ZSBlZGl0ZWQgPSBmYWxzZVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSB0YWJpbmRleCA9ICcwJ1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInLCBbJyRldmVudC50YXJnZXQnXSkgb25CbHVyICh0YXJnZXQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWxsb3dUeXBpbmcpIHtcclxuICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0ZWQpIHtcclxuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBuZXcgQ3VzdG9tU2VsZWN0SXRlbSh0aGlzLnZhbHVlLCB0aGlzLnZhbHVlKVxyXG4gICAgICAgICAgdGhpcy5vblNlbGVjdC5uZXh0KHRoaXMuc2VsZWN0ZWRJdGVtKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLndyaXRlVmFsdWUodW5kZWZpbmVkKVxyXG4gICAgICAgIHRoaXMub25TZWxlY3QubmV4dCh1bmRlZmluZWQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQ/LnJlbGF0ZWRUYXJnZXQ/LmNsYXNzTGlzdC5jb250YWlucygnc2VhcmNoLWlucHV0LWl0ZW0nKSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuc2V0VHJpZ2dlclJlY3QoKVxyXG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IgKHByaXZhdGUgcmVhZG9ubHkgc3NvOiBTY3JvbGxTdHJhdGVneU9wdGlvbnMpIHtcclxuICAgIHRoaXMuc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLnNzby5ibG9jaygpXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0VHJpZ2dlclJlY3QoKVxyXG4gICAgfSwgMzAwKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUcmlnZ2VyUmVjdCAoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fdHJpZ2dlclJlY3QgPSB0aGlzLnRyaWdnZXI/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0SXRlbSAoaXRlbTogQ3VzdG9tU2VsZWN0SXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtXHJcbiAgICB0aGlzLmVkaXRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLnNlbGVjdGVkTW9kZWxWYWx1ZSA9IGl0ZW0udGV4dFxyXG4gICAgdGhpcy52YWx1ZSA9IGl0ZW0udGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJydcclxuICAgIHRoaXMub25TZWxlY3QubmV4dChpdGVtKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEl0ZW0gKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJydcclxuICAgIHRoaXMub25BZGRJdGVtLm5leHQodW5kZWZpbmVkKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGtleVByZXNzICgpOiBhbnkge1xyXG4gICAgdGhpcy5zZXRUcmlnZ2VyUmVjdCgpXHJcbiAgICBpZiAodGhpcy5hbGxvd1R5cGluZykge1xyXG4gICAgICB0aGlzLm9wZW5lZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuZWRpdGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkTW9kZWxWYWx1ZSA9IHRoaXMudmFsdWVcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJydcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdGVkID0gZmFsc2VcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tlZCAoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFRyaWdnZXJSZWN0KClcclxuICAgIHRoaXMub3BlbmVkID0gdHJ1ZVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJydcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUgKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lclZhbHVlXHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUgKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlXHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpXHJcbiAgICB0aGlzLm9uU2VsZWN0Lm5leHQodmFsdWUpXHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlICh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtPy50ZXh0IHx8ICF2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbmV3IEN1c3RvbVNlbGVjdEl0ZW0obnVsbCwgdmFsdWUpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWVcclxuICAgICAgdGhpcy5zZWxlY3RlZE1vZGVsVmFsdWUgPSB2YWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm5cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkIChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm5cclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUgKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXJyb3dDbGljayAoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgIHRoaXMuc2V0VHJpZ2dlclJlY3QoKVxyXG4gICAgaWYgKHRoaXMub3BlbmVkKSB7XHJcbiAgICAgIHRoaXMub3BlbmVkID0gZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJ1xyXG4gICAgICB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVDbGljayAoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgIHRoaXMub3BlbmVkID0gZmFsc2VcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnXHJcbiAgICB0aGlzLmlubmVyVmFsdWUgPSBudWxsXHJcbiAgICB0aGlzLm9uVW5TZWxlY3QubmV4dCh1bmRlZmluZWQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Ecm9wICgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJydcclxuICAgIGlmICghdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJydcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgKz0gYHt7JHskZXZlbnQuZGF0YX19fWBcclxuICAgIHRoaXMuZWRpdGVkID0gdHJ1ZVxyXG4gICAgdGhpcy5vbkJsdXIodW5kZWZpbmVkKVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdC1pbnB1dFwiICN0cmlnZ2VyPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjZGtPdmVybGF5T3JpZ2luICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCIgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWNvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0LW9wZW4nIDogb3BlbmVkfVwiIGFwcGVhcmFuY2U9XCJmaWxsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgI2lucHV0XHJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAoZm9jdXMpPVwib3BlbmVkID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgKGtleXVwKT1rZXlQcmVzcygpXHJcbiAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrZWQoKVwiXHJcbiAgICAgICAgICAgZG5kRHJvcHpvbmVcclxuICAgICAgICAgICAoZG5kRHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgIC8+XHJcbiAgICA8c3BhbiAqbmdJZj1cImFsbG93UmVtb3ZlXCIgdGl0bGU9XCJSZW1vdmVyXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIChjbGljayk9XCJyZW1vdmVDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm9wZW4taWNvblwiIChjbGljayk9XCJhcnJvd0NsaWNrKCRldmVudClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhc1wiIFtuZ0NsYXNzXT1cInsnZmEtY2FyZXQtZG93bicgOiAhb3BlbmVkLCAnZmEtY2FyZXQtdXAnIDogb3BlbmVkfVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImN1c3RvbS1zZWxlY3QtY29tcG9uZW50XCI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5XHJcbiAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzc109XCInY3VzdG9tLXNlbGVjdC1vdmVybGF5LXBhbmVsJ1wiXHJcbiAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3lcIlxyXG4gICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxyXG4gICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwib3BlbmVkXCJcclxuICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aF09XCJfdHJpZ2dlclJlY3Q/LndpZHRoIVwiPlxyXG4gICAgPHVsIGNsYXNzPVwidWwtYWNcIj5cclxuICAgICAgPGxpIGNsYXNzPVwibGktc2VhcmNoIHNlYXJjaC1pbnB1dC1pdGVtXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYXBpcGFzcy1pbnB1dC10ZXh0IHNlYXJjaC1pbnB1dC1pdGVtXCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBjbGFzcz1cInNlYXJjaC1pbnB1dC1pdGVtXCJcclxuICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmluZFBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvbGk+XHJcblxyXG4gICAgICA8bGkgY2xhc3M9XCJjbGlja2FibGVcIiAqbmdGb3I9XCJsZXQgaSBvZiBpdGVtcyB8IHNlbGVjdEZpbHRlcjpzZWFyY2hUZXh0Oid0ZXh0J1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpKVwiXHJcbiAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdEl0ZW0oaSlcIj5cclxuICAgICAgICB7e2kudGV4dH19XHJcbiAgICAgIDwvbGk+XHJcblxyXG4gICAgICA8bGkgKm5nSWY9XCJhbGxvd0FkZEl0ZW1cIiBjbGFzcz1cImxpLWFkZFwiIChtb3VzZWRvd24pPVwiYWRkSXRlbSgpXCIgKGNsaWNrKT1cImFkZEl0ZW0oKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+e3thZGRJdGVtTGFiZWx9fTwvc3Bhbj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { NgModel } from '@angular/forms';
|
|
3
|
+
import { debounceTime, distinctUntilChanged, skip } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
class DebouceInputDirective {
|
|
7
|
+
ngModel;
|
|
8
|
+
debounceTime = 500;
|
|
9
|
+
onDebounceTriggered = new EventEmitter();
|
|
10
|
+
subscription;
|
|
11
|
+
constructor(ngModel) {
|
|
12
|
+
this.ngModel = ngModel;
|
|
13
|
+
this.subscription = this.ngModel.control.valueChanges.pipe(skip(1), distinctUntilChanged(), debounceTime(this.debounceTime)).subscribe((value) => { this.onDebounceTriggered.emit(value); });
|
|
14
|
+
}
|
|
15
|
+
ngOnDestroy() {
|
|
16
|
+
if (this.subscription) {
|
|
17
|
+
this.subscription.unsubscribe();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: DebouceInputDirective, deps: [{ token: i1.NgModel }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: DebouceInputDirective, selector: "[debounceInput]", inputs: { debounceTime: "debounceTime" }, outputs: { onDebounceTriggered: "onDebounceTriggered" }, ngImport: i0 });
|
|
22
|
+
}
|
|
23
|
+
export { DebouceInputDirective };
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: DebouceInputDirective, decorators: [{
|
|
25
|
+
type: Directive,
|
|
26
|
+
args: [{
|
|
27
|
+
selector: '[debounceInput]'
|
|
28
|
+
}]
|
|
29
|
+
}], ctorParameters: function () { return [{ type: i1.NgModel }]; }, propDecorators: { debounceTime: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], onDebounceTriggered: [{
|
|
32
|
+
type: Output
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VjZUlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvZGVib3VuY2UtbW9kZWwtZGlyZWN0aXZlL2RlYm91Y2VJbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7O0FBRXpFLE1BR2EscUJBQXFCO0lBU0Y7SUFQdkIsWUFBWSxHQUFHLEdBQUcsQ0FBQTtJQUdsQixtQkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFBO0lBRTdDLFlBQVksQ0FBYztJQUVqQyxZQUE4QixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDeEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLG9CQUFvQixFQUFFLEVBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQ2hDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEUsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDaEM7SUFDSCxDQUFDO3VHQXJCVSxxQkFBcUI7MkZBQXJCLHFCQUFxQjs7U0FBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7OEZBR1EsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkZWJvdW5jZUlucHV0XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIERlYm91Y2VJbnB1dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVib3VuY2VUaW1lID0gNTAwXHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkRlYm91bmNlVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcclxuXHJcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yIChwcml2YXRlIHJlYWRvbmx5IG5nTW9kZWw6IE5nTW9kZWwpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5uZ01vZGVsLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHNraXAoMSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSlcclxuICAgICkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4geyB0aGlzLm9uRGVib3VuY2VUcmlnZ2VyZWQuZW1pdCh2YWx1ZSkgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
class FieldComponent {
|
|
6
|
+
/**
|
|
7
|
+
* Texto para label do Input
|
|
8
|
+
*/
|
|
9
|
+
label = '';
|
|
10
|
+
/**
|
|
11
|
+
* Estado do input no formulário para validar quando
|
|
12
|
+
* é necessário exibir as mensagens de erro.
|
|
13
|
+
*/
|
|
14
|
+
state;
|
|
15
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: FieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: FieldComponent, selector: "app-field", inputs: { label: "label", state: "state" }, ngImport: i0, template: `
|
|
17
|
+
<div [ngClass]="{'has-error':state && !state.valid && (!state.pristine || state.touched) && state.errors}">
|
|
18
|
+
<label class="label-text" *ngIf="label">{{ label }}</label>
|
|
19
|
+
|
|
20
|
+
<!-- Input, textarea or select -->
|
|
21
|
+
<ng-content></ng-content>
|
|
22
|
+
|
|
23
|
+
<span *ngIf="state && !state.valid && !state.pristine && state.touched && state.errors" class="help-block text-danger">
|
|
24
|
+
<span *ngIf="state.hasError('required')">Este campo é obrigatório</span>
|
|
25
|
+
<span *ngIf="!state.hasError('required') && state.hasError('validateEmail')">E-mail inválido</span>
|
|
26
|
+
<span *ngIf="!state.hasError('required') && state.hasError('minlength')">Tamanho mínimo inválido</span>
|
|
27
|
+
</span>
|
|
28
|
+
</div>
|
|
29
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
30
|
+
}
|
|
31
|
+
export { FieldComponent };
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: FieldComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{
|
|
35
|
+
selector: 'app-field',
|
|
36
|
+
template: `
|
|
37
|
+
<div [ngClass]="{'has-error':state && !state.valid && (!state.pristine || state.touched) && state.errors}">
|
|
38
|
+
<label class="label-text" *ngIf="label">{{ label }}</label>
|
|
39
|
+
|
|
40
|
+
<!-- Input, textarea or select -->
|
|
41
|
+
<ng-content></ng-content>
|
|
42
|
+
|
|
43
|
+
<span *ngIf="state && !state.valid && !state.pristine && state.touched && state.errors" class="help-block text-danger">
|
|
44
|
+
<span *ngIf="state.hasError('required')">Este campo é obrigatório</span>
|
|
45
|
+
<span *ngIf="!state.hasError('required') && state.hasError('validateEmail')">E-mail inválido</span>
|
|
46
|
+
<span *ngIf="!state.hasError('required') && state.hasError('minlength')">Tamanho mínimo inválido</span>
|
|
47
|
+
</span>
|
|
48
|
+
</div>
|
|
49
|
+
`
|
|
50
|
+
}]
|
|
51
|
+
}], propDecorators: { label: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], state: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}] } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9maWVsZC9maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7QUFFNUMsTUFpQmEsY0FBYztJQUN6Qjs7T0FFRztJQUNNLEtBQUssR0FBRyxFQUFFLENBQUE7SUFFbkI7OztPQUdHO0lBQ00sS0FBSyxDQUF5Qjt1R0FWNUIsY0FBYzsyRkFBZCxjQUFjLDZGQWZmOzs7Ozs7Ozs7Ozs7O0tBYVA7O1NBRVEsY0FBYzsyRkFBZCxjQUFjO2tCQWpCMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0tBYVA7aUJBQ0o7OEJBS1UsS0FBSztzQkFBYixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmllbGQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2hhcy1lcnJvcic6c3RhdGUgJiYgIXN0YXRlLnZhbGlkICYmICghc3RhdGUucHJpc3RpbmUgfHwgc3RhdGUudG91Y2hlZCkgJiYgc3RhdGUuZXJyb3JzfVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbC10ZXh0XCIgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cclxuXHJcbiAgICAgIDwhLS0gSW5wdXQsIHRleHRhcmVhIG9yIHNlbGVjdCAtLT5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJzdGF0ZSAmJiAhc3RhdGUudmFsaWQgJiYgIXN0YXRlLnByaXN0aW5lICYmIHN0YXRlLnRvdWNoZWQgJiYgc3RhdGUuZXJyb3JzXCIgY2xhc3M9XCJoZWxwLWJsb2NrIHRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGF0ZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPkVzdGUgY2FtcG8gw6kgb2JyaWdhdMOzcmlvPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXN0YXRlLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIHN0YXRlLmhhc0Vycm9yKCd2YWxpZGF0ZUVtYWlsJylcIj5FLW1haWwgaW52w6FsaWRvPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXN0YXRlLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIHN0YXRlLmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlRhbWFuaG8gbcOtbmltbyBpbnbDoWxpZG88L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmllbGRDb21wb25lbnQge1xyXG4gIC8qKlxyXG4gICAqIFRleHRvIHBhcmEgbGFiZWwgZG8gSW5wdXRcclxuICAgKi9cclxuICBASW5wdXQoKSBsYWJlbCA9ICcnXHJcblxyXG4gIC8qKlxyXG4gICAqIEVzdGFkbyBkbyBpbnB1dCBubyBmb3JtdWzDoXJpbyBwYXJhIHZhbGlkYXIgcXVhbmRvXHJcbiAgICogw6kgbmVjZXNzw6FyaW8gZXhpYmlyIGFzIG1lbnNhZ2VucyBkZSBlcnJvLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN0YXRlOiBGb3JtQ29udHJvbCB8IHVuZGVmaW5lZFxyXG59XHJcbiJdfQ==
|