@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.
Files changed (66) hide show
  1. package/ace-editor/component.d.ts +52 -52
  2. package/ace-editor/directive.d.ts +39 -39
  3. package/custom-select/custom-select-item.d.ts +5 -5
  4. package/custom-select/custom-select.component.d.ts +51 -51
  5. package/debounce-model-directive/debouceInput.directive.d.ts +14 -14
  6. package/esm2022/ace-editor/component.mjs +200 -0
  7. package/esm2022/ace-editor/directive.mjs +153 -0
  8. package/{esm2020 → esm2022}/apipass-inputs.mjs +4 -4
  9. package/esm2022/custom-select/custom-select-item.mjs +9 -0
  10. package/esm2022/custom-select/custom-select.component.mjs +213 -0
  11. package/esm2022/debounce-model-directive/debouceInput.directive.mjs +34 -0
  12. package/esm2022/field/field.component.mjs +56 -0
  13. package/esm2022/input-avatar/input-avatar.component.mjs +91 -0
  14. package/esm2022/input-boolean/input-boolean.component.mjs +54 -0
  15. package/esm2022/input-file/input-file.component.mjs +82 -0
  16. package/esm2022/input-number/input-number.component.mjs +60 -0
  17. package/esm2022/input-password/input-password.component.mjs +94 -0
  18. package/esm2022/input-text/input-text.component.mjs +60 -0
  19. package/esm2022/inputs.module.mjs +150 -0
  20. package/esm2022/public-api.mjs +17 -0
  21. package/esm2022/select-box/mat-select-infinite-scroll.directive.mjs +91 -0
  22. package/esm2022/select-box/select-box.component.mjs +226 -0
  23. package/esm2022/select-enum/select-enum.component.mjs +47 -0
  24. package/esm2022/select-interpolation/select-interpolation.component.mjs +177 -0
  25. package/esm2022/value-acessor-base.mjs +30 -0
  26. package/fesm2022/apipass-inputs.mjs +1711 -0
  27. package/fesm2022/apipass-inputs.mjs.map +1 -0
  28. package/field/field.component.d.ts +15 -15
  29. package/index.d.ts +5 -5
  30. package/input-avatar/input-avatar.component.d.ts +29 -29
  31. package/input-boolean/input-boolean.component.d.ts +15 -15
  32. package/input-file/input-file.component.d.ts +31 -31
  33. package/input-number/input-number.component.d.ts +17 -17
  34. package/input-password/input-password.component.d.ts +28 -29
  35. package/input-text/input-text.component.d.ts +17 -17
  36. package/inputs.module.d.ts +36 -36
  37. package/package.json +18 -24
  38. package/public-api.d.ts +16 -16
  39. package/select-box/mat-select-infinite-scroll.directive.d.ts +26 -26
  40. package/select-box/select-box.component.d.ts +57 -57
  41. package/select-enum/select-enum.component.d.ts +12 -12
  42. package/select-interpolation/select-interpolation.component.d.ts +44 -44
  43. package/value-acessor-base.d.ts +13 -13
  44. package/esm2020/ace-editor/component.mjs +0 -199
  45. package/esm2020/ace-editor/directive.mjs +0 -150
  46. package/esm2020/custom-select/custom-select-item.mjs +0 -7
  47. package/esm2020/custom-select/custom-select.component.mjs +0 -204
  48. package/esm2020/debounce-model-directive/debouceInput.directive.mjs +0 -31
  49. package/esm2020/field/field.component.mjs +0 -51
  50. package/esm2020/input-avatar/input-avatar.component.mjs +0 -92
  51. package/esm2020/input-boolean/input-boolean.component.mjs +0 -56
  52. package/esm2020/input-file/input-file.component.mjs +0 -82
  53. package/esm2020/input-number/input-number.component.mjs +0 -62
  54. package/esm2020/input-password/input-password.component.mjs +0 -96
  55. package/esm2020/input-text/input-text.component.mjs +0 -62
  56. package/esm2020/inputs.module.mjs +0 -149
  57. package/esm2020/public-api.mjs +0 -17
  58. package/esm2020/select-box/mat-select-infinite-scroll.directive.mjs +0 -86
  59. package/esm2020/select-box/select-box.component.mjs +0 -220
  60. package/esm2020/select-enum/select-enum.component.mjs +0 -48
  61. package/esm2020/select-interpolation/select-interpolation.component.mjs +0 -169
  62. package/esm2020/value-acessor-base.mjs +0 -31
  63. package/fesm2015/apipass-inputs.mjs +0 -1704
  64. package/fesm2015/apipass-inputs.mjs.map +0 -1
  65. package/fesm2020/apipass-inputs.mjs +0 -1697
  66. 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==