@metadev/lux 0.27.0 → 0.28.0
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/LICENSE +1 -1
- package/README.md +1 -1
- package/esm2022/lib/autocomplete/autocomplete.component.mjs +488 -488
- package/esm2022/lib/autocomplete-list/autocomplete-list.component.mjs +258 -258
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +77 -77
- package/esm2022/lib/checkbox/checkbox.component.mjs +156 -156
- package/esm2022/lib/datasource.mjs +1 -1
- package/esm2022/lib/datetime/datetime.component.mjs +312 -312
- package/esm2022/lib/filter/filter.component.mjs +158 -158
- package/esm2022/lib/geolocation/geolocation.component.mjs +423 -423
- package/esm2022/lib/geolocation/geolocation.service.mjs +122 -122
- package/esm2022/lib/geolocation/openlayer-loader.service.mjs +61 -61
- package/esm2022/lib/helperFns.mjs +117 -117
- package/esm2022/lib/input/input.component.mjs +469 -469
- package/esm2022/lib/input/regexp.service.mjs +194 -194
- package/esm2022/lib/lang.mjs +8 -8
- package/esm2022/lib/lux.module.mjs +118 -118
- package/esm2022/lib/map/geopoint.mjs +1 -1
- package/esm2022/lib/map/map.component.mjs +275 -275
- package/esm2022/lib/modal/modal-backdrop.mjs +24 -24
- package/esm2022/lib/modal/modal-config.mjs +11 -11
- package/esm2022/lib/modal/modal-dismiss-reasons.mjs +5 -5
- package/esm2022/lib/modal/modal-ref.mjs +100 -100
- package/esm2022/lib/modal/modal-stack.mjs +181 -181
- package/esm2022/lib/modal/modal-window.mjs +118 -118
- package/esm2022/lib/modal/modal.service.mjs +27 -27
- package/esm2022/lib/modal/util.mjs +81 -81
- package/esm2022/lib/pagination/pagination.component.mjs +144 -144
- package/esm2022/lib/pagination/pagination.mjs +1 -1
- package/esm2022/lib/radiogroup/radiogroup.component.mjs +129 -129
- package/esm2022/lib/select/select.component.mjs +148 -148
- package/esm2022/lib/tooltip/placement.mjs +7 -7
- package/esm2022/lib/tooltip/tooltip-context.mjs +1 -1
- package/esm2022/lib/tooltip/tooltip.component.mjs +21 -21
- package/esm2022/lib/tooltip/tooltip.directive.mjs +69 -69
- package/esm2022/lib/tooltip/tooltip.service.mjs +136 -136
- package/esm2022/lib/tooltip/tooltop-content.mjs +8 -8
- package/esm2022/lib/voice-recognition/voice-recognition.directive.mjs +79 -79
- package/esm2022/lib/window/window.service.mjs +45 -45
- package/esm2022/metadev-lux.mjs +4 -4
- package/esm2022/public-api.mjs +20 -20
- package/fesm2022/metadev-lux.mjs +4372 -4372
- package/fesm2022/metadev-lux.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/autocomplete/autocomplete.component.d.ts +81 -81
- package/lib/autocomplete-list/autocomplete-list.component.d.ts +65 -65
- package/lib/breadcrumb/breadcrumb.component.d.ts +22 -22
- package/lib/checkbox/checkbox.component.d.ts +47 -47
- package/lib/datasource.d.ts +13 -13
- package/lib/datetime/datetime.component.d.ts +69 -69
- package/lib/filter/filter.component.d.ts +51 -51
- package/lib/geolocation/geolocation.component.d.ts +123 -123
- package/lib/geolocation/geolocation.service.d.ts +32 -32
- package/lib/geolocation/openlayer-loader.service.d.ts +7 -7
- package/lib/helperFns.d.ts +15 -15
- package/lib/input/input.component.d.ts +108 -108
- package/lib/input/regexp.service.d.ts +15 -15
- package/lib/lang.d.ts +2 -2
- package/lib/lux.module.d.ts +27 -27
- package/lib/map/geopoint.d.ts +7 -7
- package/lib/map/map.component.d.ts +39 -39
- package/lib/modal/modal-backdrop.d.ts +8 -8
- package/lib/modal/modal-config.d.ts +14 -14
- package/lib/modal/modal-dismiss-reasons.d.ts +4 -4
- package/lib/modal/modal-ref.d.ts +41 -41
- package/lib/modal/modal-stack.d.ts +31 -31
- package/lib/modal/modal-window.d.ts +28 -28
- package/lib/modal/modal.service.d.ts +19 -19
- package/lib/modal/util.d.ts +40 -40
- package/lib/pagination/pagination.component.d.ts +52 -52
- package/lib/pagination/pagination.d.ts +10 -10
- package/lib/radiogroup/radiogroup.component.d.ts +37 -37
- package/lib/select/select.component.d.ts +38 -38
- package/lib/tooltip/placement.d.ts +7 -7
- package/lib/tooltip/tooltip-context.d.ts +3 -3
- package/lib/tooltip/tooltip.component.d.ts +11 -11
- package/lib/tooltip/tooltip.directive.d.ts +27 -27
- package/lib/tooltip/tooltip.service.d.ts +20 -20
- package/lib/tooltip/tooltop-content.d.ts +6 -6
- package/lib/voice-recognition/voice-recognition.directive.d.ts +16 -16
- package/lib/window/window.service.d.ts +11 -11
- package/package.json +3 -4
- package/public-api.d.ts +18 -18
|
@@ -1,148 +1,148 @@
|
|
|
1
|
-
import { Component, Input, EventEmitter, Output, forwardRef } from '@angular/core';
|
|
2
|
-
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "../input/input.component";
|
|
6
|
-
let sequencer = 0;
|
|
7
|
-
export class SelectComponent {
|
|
8
|
-
id = 'stringList' + sequencer++;
|
|
9
|
-
disabled = false;
|
|
10
|
-
required = false;
|
|
11
|
-
/** Allow multiple elements */
|
|
12
|
-
multiple = true;
|
|
13
|
-
value = [];
|
|
14
|
-
valueChange = new EventEmitter();
|
|
15
|
-
placeholder = 'Add new';
|
|
16
|
-
/** If set, check there is no duplicates in the data. */
|
|
17
|
-
unique = true;
|
|
18
|
-
/** Validation function for new items. Returns error or null if valid */
|
|
19
|
-
validateItem = (_) => null;
|
|
20
|
-
newEntry = '';
|
|
21
|
-
error = null;
|
|
22
|
-
isValidNewEntry = false;
|
|
23
|
-
touched = false;
|
|
24
|
-
constructor() { }
|
|
25
|
-
// ControlValueAccessor Interface
|
|
26
|
-
onChange = (value) => { };
|
|
27
|
-
onTouched = () => { };
|
|
28
|
-
writeValue(value) {
|
|
29
|
-
this.value = value;
|
|
30
|
-
}
|
|
31
|
-
registerOnChange(onChange) {
|
|
32
|
-
this.onChange = onChange;
|
|
33
|
-
}
|
|
34
|
-
registerOnTouched(onTouched) {
|
|
35
|
-
this.onTouched = onTouched;
|
|
36
|
-
}
|
|
37
|
-
markAsTouched() {
|
|
38
|
-
if (!this.touched) {
|
|
39
|
-
this.onTouched();
|
|
40
|
-
this.touched = true;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
setDisabledState(disabled) {
|
|
44
|
-
this.disabled = disabled;
|
|
45
|
-
}
|
|
46
|
-
// End ControlValueAccessor Interface
|
|
47
|
-
// Validator interface
|
|
48
|
-
registerOnValidatorChange() { }
|
|
49
|
-
validate(control) {
|
|
50
|
-
const value = control.value;
|
|
51
|
-
if (this.required &&
|
|
52
|
-
(value === '' || value === null || value === undefined)) {
|
|
53
|
-
return { required: { value, reason: 'Required field.' } };
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
// End of Validator interface
|
|
58
|
-
get canAdd() {
|
|
59
|
-
return this.multiple || this.value.length === 0;
|
|
60
|
-
}
|
|
61
|
-
add(val) {
|
|
62
|
-
this.value.push(val);
|
|
63
|
-
this.newEntry = '';
|
|
64
|
-
this.markAsTouched();
|
|
65
|
-
this.valueChange.emit(this.value);
|
|
66
|
-
}
|
|
67
|
-
remove(index) {
|
|
68
|
-
if (this.value.length > index) {
|
|
69
|
-
this.value.splice(index, 1);
|
|
70
|
-
this.markAsTouched();
|
|
71
|
-
this.valueChange.emit(this.value);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
onKeyPress(event) {
|
|
75
|
-
if (event.key === 'Enter' && !this.error && this.newEntry !== '') {
|
|
76
|
-
// Add on pressing Enter/Return
|
|
77
|
-
this.markAsTouched();
|
|
78
|
-
this.add(this.newEntry);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
onChangeNewEntry(newValue) {
|
|
82
|
-
this.markAsTouched();
|
|
83
|
-
if (!newValue) {
|
|
84
|
-
this.isValidNewEntry = false;
|
|
85
|
-
this.error = null;
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (this.unique) {
|
|
89
|
-
const found = (this.value || []).find((it) => it === newValue);
|
|
90
|
-
this.isValidNewEntry = !found;
|
|
91
|
-
this.error = found
|
|
92
|
-
? `Value '${newValue}' is already in. Cannot add duplicates.`
|
|
93
|
-
: null;
|
|
94
|
-
if (!this.isValidNewEntry) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
this.error = this.validateItem(newValue);
|
|
99
|
-
this.isValidNewEntry = !this.error;
|
|
100
|
-
}
|
|
101
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
102
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
103
|
-
{
|
|
104
|
-
provide: NG_VALUE_ACCESSOR,
|
|
105
|
-
multi: true,
|
|
106
|
-
useExisting: forwardRef(() => SelectComponent)
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
provide: NG_VALIDATORS,
|
|
110
|
-
multi: true,
|
|
111
|
-
useExisting: forwardRef(() => SelectComponent)
|
|
112
|
-
}
|
|
113
|
-
], ngImport: i0, template: "<div class=\"lux-select\">\n <ul class=\"list\">\n <li *ngFor=\"let item of value; let i = index\">\n <span>{{ item }}</span>\n <button *ngIf=\"!disabled\"\n class=\"remove\"\n type=\"button\"\n (click)=\"remove(i)\"\n [attr.aria-label]=\"'Remove ' + item\"\n >Remove</button>\n </li>\n </ul>\n <div class=\"add-new-item\" *ngIf=\"!disabled\">\n <lux-input\n id=\"{{ id + 'addNew' }}\"\n type=\"string\"\n [placeholder]=\"placeholder\"\n [attr.aria-label]=\"placeholder\"\n [disabled]=\"disabled\"\n [(value)]=\"newEntry\"\n (keyPress)=\"onKeyPress($event)\"\n (valueChange)=\"onChangeNewEntry($event)\"\n >\n </lux-input>\n <div *ngIf=\"canAdd\">\n <button *ngIf=\"isValidNewEntry\" type=\"button\" (click)=\"add(newEntry)\">Add</button>\n </div>\n <div class=\"error\">\n {{ error }}\n </div>\n </div>\n</div>\n", styles: [".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #BBB}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }] });
|
|
114
|
-
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
116
|
-
type: Component,
|
|
117
|
-
args: [{ selector: 'lux-select', providers: [
|
|
118
|
-
{
|
|
119
|
-
provide: NG_VALUE_ACCESSOR,
|
|
120
|
-
multi: true,
|
|
121
|
-
useExisting: forwardRef(() => SelectComponent)
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
provide: NG_VALIDATORS,
|
|
125
|
-
multi: true,
|
|
126
|
-
useExisting: forwardRef(() => SelectComponent)
|
|
127
|
-
}
|
|
128
|
-
], template: "<div class=\"lux-select\">\n <ul class=\"list\">\n <li *ngFor=\"let item of value; let i = index\">\n <span>{{ item }}</span>\n <button *ngIf=\"!disabled\"\n class=\"remove\"\n type=\"button\"\n (click)=\"remove(i)\"\n [attr.aria-label]=\"'Remove ' + item\"\n >Remove</button>\n </li>\n </ul>\n <div class=\"add-new-item\" *ngIf=\"!disabled\">\n <lux-input\n id=\"{{ id + 'addNew' }}\"\n type=\"string\"\n [placeholder]=\"placeholder\"\n [attr.aria-label]=\"placeholder\"\n [disabled]=\"disabled\"\n [(value)]=\"newEntry\"\n (keyPress)=\"onKeyPress($event)\"\n (valueChange)=\"onChangeNewEntry($event)\"\n >\n </lux-input>\n <div *ngIf=\"canAdd\">\n <button *ngIf=\"isValidNewEntry\" type=\"button\" (click)=\"add(newEntry)\">Add</button>\n </div>\n <div class=\"error\">\n {{ error }}\n </div>\n </div>\n</div>\n", styles: [".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #BBB}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}\n"] }]
|
|
129
|
-
}], ctorParameters:
|
|
130
|
-
type: Input
|
|
131
|
-
}], disabled: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], required: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], multiple: [{
|
|
136
|
-
type: Input
|
|
137
|
-
}], value: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}], valueChange: [{
|
|
140
|
-
type: Output
|
|
141
|
-
}], placeholder: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], unique: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], validateItem: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXhCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQW1CbEIsTUFBTSxPQUFPLGVBQWU7SUFDakIsRUFBRSxHQUFHLFlBQVksR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsOEJBQThCO0lBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUNwQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztJQUM1QyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLHdEQUF3RDtJQUMvQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLHdFQUF3RTtJQUMvRCxZQUFZLEdBQTZCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFFOUQsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDYixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRWhCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFeEIsZ0JBQWUsQ0FBQztJQUVoQixpQ0FBaUM7SUFDakMsUUFBUSxHQUFHLENBQUMsS0FBSyxF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QUFnQixDQUFDO3lCQUMvQztxQkFDRjswRUFHUSxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmxldCBzZXF1ZW5jZXIgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsdXgtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgaWQgPSAnc3RyaW5nTGlzdCcgKyBzZXF1ZW5jZXIrKztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgLyoqIEFsbG93IG11bHRpcGxlIGVsZW1lbnRzICovXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gdHJ1ZTtcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZ1tdID0gW107XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ0FkZCBuZXcnO1xuICAvKiogSWYgc2V0LCBjaGVjayB0aGVyZSBpcyBubyBkdXBsaWNhdGVzIGluIHRoZSBkYXRhLiAqL1xuICBASW5wdXQoKSB1bmlxdWUgPSB0cnVlO1xuICAvKiogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgbmV3IGl0ZW1zLiBSZXR1cm5zIGVycm9yIG9yIG51bGwgaWYgdmFsaWQgKi9cbiAgQElucHV0KCkgdmFsaWRhdGVJdGVtOiAoaXRlbTogc3RyaW5nKSA9PiBzdHJpbmcgPSAoXykgPT4gbnVsbDtcblxuICBuZXdFbnRyeSA9ICcnO1xuICBlcnJvciA9IG51bGw7XG4gIGlzVmFsaWROZXdFbnRyeSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2VcbiAgb25DaGFuZ2UgPSAodmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG4gIC8vIEVuZCBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2VcblxuICAvLyBWYWxpZGF0b3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoKTogdm9pZCB7fVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1aXJlZCAmJlxuICAgICAgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHsgdmFsdWUsIHJlYXNvbjogJ1JlcXVpcmVkIGZpZWxkLicgfSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBFbmQgb2YgVmFsaWRhdG9yIGludGVyZmFjZVxuXG4gIGdldCBjYW5BZGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgfHwgdGhpcy52YWx1ZS5sZW5ndGggPT09IDA7XG4gIH1cbiAgYWRkKHZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZS5wdXNoKHZhbCk7XG4gICAgdGhpcy5uZXdFbnRyeSA9ICcnO1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuICByZW1vdmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB0aGlzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIXRoaXMuZXJyb3IgJiYgdGhpcy5uZXdFbnRyeSAhPT0gJycpIHtcbiAgICAgIC8vIEFkZCBvbiBwcmVzc2luZyBFbnRlci9SZXR1cm5cbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5hZGQodGhpcy5uZXdFbnRyeSk7XG4gICAgfVxuICB9XG4gIG9uQ2hhbmdlTmV3RW50cnkobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGlmICghbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuaXNWYWxpZE5ld0VudHJ5ID0gZmFsc2U7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudW5pcXVlKSB7XG4gICAgICBjb25zdCBmb3VuZCA9ICh0aGlzLnZhbHVlIHx8IFtdKS5maW5kKChpdCkgPT4gaXQgPT09IG5ld1ZhbHVlKTtcbiAgICAgIHRoaXMuaXNWYWxpZE5ld0VudHJ5ID0gIWZvdW5kO1xuICAgICAgdGhpcy5lcnJvciA9IGZvdW5kXG4gICAgICAgID8gYFZhbHVlICcke25ld1ZhbHVlfScgaXMgYWxyZWFkeSBpbi4gQ2Fubm90IGFkZCBkdXBsaWNhdGVzLmBcbiAgICAgICAgOiBudWxsO1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWROZXdFbnRyeSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSB0aGlzLnZhbGlkYXRlSXRlbShuZXdWYWx1ZSk7XG4gICAgdGhpcy5pc1ZhbGlkTmV3RW50cnkgPSAhdGhpcy5lcnJvcjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImx1eC1zZWxlY3RcIj5cbiAgPHVsIGNsYXNzPVwibGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPHNwYW4+e3sgaXRlbSB9fTwvc3Bhbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCIhZGlzYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGkpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZSAnICsgaXRlbVwiXG4gICAgICAgICAgICA+UmVtb3ZlPC9idXR0b24+XG4gICAgPC9saT5cbiAgPC91bD5cbiAgPGRpdiBjbGFzcz1cImFkZC1uZXctaXRlbVwiICpuZ0lmPVwiIWRpc2FibGVkXCI+XG4gICAgPGx1eC1pbnB1dFxuICAgICAgaWQ9XCJ7eyBpZCArICdhZGROZXcnIH19XCJcbiAgICAgIHR5cGU9XCJzdHJpbmdcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFsodmFsdWUpXT1cIm5ld0VudHJ5XCJcbiAgICAgIChrZXlQcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlTmV3RW50cnkoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbHV4LWlucHV0PlxuICAgIDxkaXYgKm5nSWY9XCJjYW5BZGRcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJpc1ZhbGlkTmV3RW50cnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZChuZXdFbnRyeSlcIj5BZGQ8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIj5cbiAgICAgIHt7IGVycm9yIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
1
|
+
import { Component, Input, EventEmitter, Output, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../input/input.component";
|
|
6
|
+
let sequencer = 0;
|
|
7
|
+
export class SelectComponent {
|
|
8
|
+
id = 'stringList' + sequencer++;
|
|
9
|
+
disabled = false;
|
|
10
|
+
required = false;
|
|
11
|
+
/** Allow multiple elements */
|
|
12
|
+
multiple = true;
|
|
13
|
+
value = [];
|
|
14
|
+
valueChange = new EventEmitter();
|
|
15
|
+
placeholder = 'Add new';
|
|
16
|
+
/** If set, check there is no duplicates in the data. */
|
|
17
|
+
unique = true;
|
|
18
|
+
/** Validation function for new items. Returns error or null if valid */
|
|
19
|
+
validateItem = (_) => null;
|
|
20
|
+
newEntry = '';
|
|
21
|
+
error = null;
|
|
22
|
+
isValidNewEntry = false;
|
|
23
|
+
touched = false;
|
|
24
|
+
constructor() { }
|
|
25
|
+
// ControlValueAccessor Interface
|
|
26
|
+
onChange = (value) => { };
|
|
27
|
+
onTouched = () => { };
|
|
28
|
+
writeValue(value) {
|
|
29
|
+
this.value = value;
|
|
30
|
+
}
|
|
31
|
+
registerOnChange(onChange) {
|
|
32
|
+
this.onChange = onChange;
|
|
33
|
+
}
|
|
34
|
+
registerOnTouched(onTouched) {
|
|
35
|
+
this.onTouched = onTouched;
|
|
36
|
+
}
|
|
37
|
+
markAsTouched() {
|
|
38
|
+
if (!this.touched) {
|
|
39
|
+
this.onTouched();
|
|
40
|
+
this.touched = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
setDisabledState(disabled) {
|
|
44
|
+
this.disabled = disabled;
|
|
45
|
+
}
|
|
46
|
+
// End ControlValueAccessor Interface
|
|
47
|
+
// Validator interface
|
|
48
|
+
registerOnValidatorChange() { }
|
|
49
|
+
validate(control) {
|
|
50
|
+
const value = control.value;
|
|
51
|
+
if (this.required &&
|
|
52
|
+
(value === '' || value === null || value === undefined)) {
|
|
53
|
+
return { required: { value, reason: 'Required field.' } };
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
// End of Validator interface
|
|
58
|
+
get canAdd() {
|
|
59
|
+
return this.multiple || this.value.length === 0;
|
|
60
|
+
}
|
|
61
|
+
add(val) {
|
|
62
|
+
this.value.push(val);
|
|
63
|
+
this.newEntry = '';
|
|
64
|
+
this.markAsTouched();
|
|
65
|
+
this.valueChange.emit(this.value);
|
|
66
|
+
}
|
|
67
|
+
remove(index) {
|
|
68
|
+
if (this.value.length > index) {
|
|
69
|
+
this.value.splice(index, 1);
|
|
70
|
+
this.markAsTouched();
|
|
71
|
+
this.valueChange.emit(this.value);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
onKeyPress(event) {
|
|
75
|
+
if (event.key === 'Enter' && !this.error && this.newEntry !== '') {
|
|
76
|
+
// Add on pressing Enter/Return
|
|
77
|
+
this.markAsTouched();
|
|
78
|
+
this.add(this.newEntry);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
onChangeNewEntry(newValue) {
|
|
82
|
+
this.markAsTouched();
|
|
83
|
+
if (!newValue) {
|
|
84
|
+
this.isValidNewEntry = false;
|
|
85
|
+
this.error = null;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (this.unique) {
|
|
89
|
+
const found = (this.value || []).find((it) => it === newValue);
|
|
90
|
+
this.isValidNewEntry = !found;
|
|
91
|
+
this.error = found
|
|
92
|
+
? `Value '${newValue}' is already in. Cannot add duplicates.`
|
|
93
|
+
: null;
|
|
94
|
+
if (!this.isValidNewEntry) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
this.error = this.validateItem(newValue);
|
|
99
|
+
this.isValidNewEntry = !this.error;
|
|
100
|
+
}
|
|
101
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: SelectComponent, selector: "lux-select", inputs: { id: "id", disabled: "disabled", required: "required", multiple: "multiple", value: "value", placeholder: "placeholder", unique: "unique", validateItem: "validateItem" }, outputs: { valueChange: "valueChange" }, providers: [
|
|
103
|
+
{
|
|
104
|
+
provide: NG_VALUE_ACCESSOR,
|
|
105
|
+
multi: true,
|
|
106
|
+
useExisting: forwardRef(() => SelectComponent)
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
provide: NG_VALIDATORS,
|
|
110
|
+
multi: true,
|
|
111
|
+
useExisting: forwardRef(() => SelectComponent)
|
|
112
|
+
}
|
|
113
|
+
], ngImport: i0, template: "<div class=\"lux-select\">\n <ul class=\"list\">\n <li *ngFor=\"let item of value; let i = index\">\n <span>{{ item }}</span>\n <button *ngIf=\"!disabled\"\n class=\"remove\"\n type=\"button\"\n (click)=\"remove(i)\"\n [attr.aria-label]=\"'Remove ' + item\"\n >Remove</button>\n </li>\n </ul>\n <div class=\"add-new-item\" *ngIf=\"!disabled\">\n <lux-input\n id=\"{{ id + 'addNew' }}\"\n type=\"string\"\n [placeholder]=\"placeholder\"\n [attr.aria-label]=\"placeholder\"\n [disabled]=\"disabled\"\n [(value)]=\"newEntry\"\n (keyPress)=\"onKeyPress($event)\"\n (valueChange)=\"onChangeNewEntry($event)\"\n >\n </lux-input>\n <div *ngIf=\"canAdd\">\n <button *ngIf=\"isValidNewEntry\" type=\"button\" (click)=\"add(newEntry)\">Add</button>\n </div>\n <div class=\"error\">\n {{ error }}\n </div>\n </div>\n</div>\n", styles: [".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #BBB}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }] });
|
|
114
|
+
}
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SelectComponent, decorators: [{
|
|
116
|
+
type: Component,
|
|
117
|
+
args: [{ selector: 'lux-select', providers: [
|
|
118
|
+
{
|
|
119
|
+
provide: NG_VALUE_ACCESSOR,
|
|
120
|
+
multi: true,
|
|
121
|
+
useExisting: forwardRef(() => SelectComponent)
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
provide: NG_VALIDATORS,
|
|
125
|
+
multi: true,
|
|
126
|
+
useExisting: forwardRef(() => SelectComponent)
|
|
127
|
+
}
|
|
128
|
+
], template: "<div class=\"lux-select\">\n <ul class=\"list\">\n <li *ngFor=\"let item of value; let i = index\">\n <span>{{ item }}</span>\n <button *ngIf=\"!disabled\"\n class=\"remove\"\n type=\"button\"\n (click)=\"remove(i)\"\n [attr.aria-label]=\"'Remove ' + item\"\n >Remove</button>\n </li>\n </ul>\n <div class=\"add-new-item\" *ngIf=\"!disabled\">\n <lux-input\n id=\"{{ id + 'addNew' }}\"\n type=\"string\"\n [placeholder]=\"placeholder\"\n [attr.aria-label]=\"placeholder\"\n [disabled]=\"disabled\"\n [(value)]=\"newEntry\"\n (keyPress)=\"onKeyPress($event)\"\n (valueChange)=\"onChangeNewEntry($event)\"\n >\n </lux-input>\n <div *ngIf=\"canAdd\">\n <button *ngIf=\"isValidNewEntry\" type=\"button\" (click)=\"add(newEntry)\">Add</button>\n </div>\n <div class=\"error\">\n {{ error }}\n </div>\n </div>\n</div>\n", styles: [".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #BBB}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}\n"] }]
|
|
129
|
+
}], ctorParameters: () => [], propDecorators: { id: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], disabled: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], required: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], multiple: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], value: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], valueChange: [{
|
|
140
|
+
type: Output
|
|
141
|
+
}], placeholder: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], unique: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], validateItem: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}] } });
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXhCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQW1CbEIsTUFBTSxPQUFPLGVBQWU7SUFDakIsRUFBRSxHQUFHLFlBQVksR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsOEJBQThCO0lBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUNwQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztJQUM1QyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLHdEQUF3RDtJQUMvQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLHdFQUF3RTtJQUMvRCxZQUFZLEdBQTZCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFFOUQsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDYixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRWhCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFeEIsZ0JBQWUsQ0FBQztJQUVoQixpQ0FBaUM7SUFDakMsUUFBUSxHQUFHLENBQUMsS0FBSyxF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QUFnQixDQUFDO3lCQUMvQztxQkFDRjt3REFHUSxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmxldCBzZXF1ZW5jZXIgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsdXgtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgaWQgPSAnc3RyaW5nTGlzdCcgKyBzZXF1ZW5jZXIrKztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgLyoqIEFsbG93IG11bHRpcGxlIGVsZW1lbnRzICovXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gdHJ1ZTtcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZ1tdID0gW107XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ0FkZCBuZXcnO1xuICAvKiogSWYgc2V0LCBjaGVjayB0aGVyZSBpcyBubyBkdXBsaWNhdGVzIGluIHRoZSBkYXRhLiAqL1xuICBASW5wdXQoKSB1bmlxdWUgPSB0cnVlO1xuICAvKiogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgbmV3IGl0ZW1zLiBSZXR1cm5zIGVycm9yIG9yIG51bGwgaWYgdmFsaWQgKi9cbiAgQElucHV0KCkgdmFsaWRhdGVJdGVtOiAoaXRlbTogc3RyaW5nKSA9PiBzdHJpbmcgPSAoXykgPT4gbnVsbDtcblxuICBuZXdFbnRyeSA9ICcnO1xuICBlcnJvciA9IG51bGw7XG4gIGlzVmFsaWROZXdFbnRyeSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2VcbiAgb25DaGFuZ2UgPSAodmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG4gIC8vIEVuZCBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2VcblxuICAvLyBWYWxpZGF0b3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoKTogdm9pZCB7fVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1aXJlZCAmJlxuICAgICAgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHsgdmFsdWUsIHJlYXNvbjogJ1JlcXVpcmVkIGZpZWxkLicgfSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBFbmQgb2YgVmFsaWRhdG9yIGludGVyZmFjZVxuXG4gIGdldCBjYW5BZGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgfHwgdGhpcy52YWx1ZS5sZW5ndGggPT09IDA7XG4gIH1cbiAgYWRkKHZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZS5wdXNoKHZhbCk7XG4gICAgdGhpcy5uZXdFbnRyeSA9ICcnO1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuICByZW1vdmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB0aGlzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIXRoaXMuZXJyb3IgJiYgdGhpcy5uZXdFbnRyeSAhPT0gJycpIHtcbiAgICAgIC8vIEFkZCBvbiBwcmVzc2luZyBFbnRlci9SZXR1cm5cbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5hZGQodGhpcy5uZXdFbnRyeSk7XG4gICAgfVxuICB9XG4gIG9uQ2hhbmdlTmV3RW50cnkobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGlmICghbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuaXNWYWxpZE5ld0VudHJ5ID0gZmFsc2U7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudW5pcXVlKSB7XG4gICAgICBjb25zdCBmb3VuZCA9ICh0aGlzLnZhbHVlIHx8IFtdKS5maW5kKChpdCkgPT4gaXQgPT09IG5ld1ZhbHVlKTtcbiAgICAgIHRoaXMuaXNWYWxpZE5ld0VudHJ5ID0gIWZvdW5kO1xuICAgICAgdGhpcy5lcnJvciA9IGZvdW5kXG4gICAgICAgID8gYFZhbHVlICcke25ld1ZhbHVlfScgaXMgYWxyZWFkeSBpbi4gQ2Fubm90IGFkZCBkdXBsaWNhdGVzLmBcbiAgICAgICAgOiBudWxsO1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWROZXdFbnRyeSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSB0aGlzLnZhbGlkYXRlSXRlbShuZXdWYWx1ZSk7XG4gICAgdGhpcy5pc1ZhbGlkTmV3RW50cnkgPSAhdGhpcy5lcnJvcjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImx1eC1zZWxlY3RcIj5cbiAgPHVsIGNsYXNzPVwibGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPHNwYW4+e3sgaXRlbSB9fTwvc3Bhbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCIhZGlzYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGkpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZSAnICsgaXRlbVwiXG4gICAgICAgICAgICA+UmVtb3ZlPC9idXR0b24+XG4gICAgPC9saT5cbiAgPC91bD5cbiAgPGRpdiBjbGFzcz1cImFkZC1uZXctaXRlbVwiICpuZ0lmPVwiIWRpc2FibGVkXCI+XG4gICAgPGx1eC1pbnB1dFxuICAgICAgaWQ9XCJ7eyBpZCArICdhZGROZXcnIH19XCJcbiAgICAgIHR5cGU9XCJzdHJpbmdcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFsodmFsdWUpXT1cIm5ld0VudHJ5XCJcbiAgICAgIChrZXlQcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlTmV3RW50cnkoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbHV4LWlucHV0PlxuICAgIDxkaXYgKm5nSWY9XCJjYW5BZGRcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJpc1ZhbGlkTmV3RW50cnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZChuZXdFbnRyeSlcIj5BZGQ8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIj5cbiAgICAgIHt7IGVycm9yIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export var Placement;
|
|
2
|
-
(function (Placement) {
|
|
3
|
-
Placement["Top"] = "top";
|
|
4
|
-
Placement["Bottom"] = "bottom";
|
|
5
|
-
Placement["Left"] = "left";
|
|
6
|
-
Placement["Right"] = "right";
|
|
7
|
-
})(Placement || (Placement = {}));
|
|
1
|
+
export var Placement;
|
|
2
|
+
(function (Placement) {
|
|
3
|
+
Placement["Top"] = "top";
|
|
4
|
+
Placement["Bottom"] = "bottom";
|
|
5
|
+
Placement["Left"] = "left";
|
|
6
|
+
Placement["Right"] = "right";
|
|
7
|
+
})(Placement || (Placement = {}));
|
|
8
8
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvdG9vbHRpcC9wbGFjZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNuQix3QkFBVyxDQUFBO0lBQ1gsOEJBQWlCLENBQUE7SUFDakIsMEJBQWEsQ0FBQTtJQUNiLDRCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxXLFNBQVMsS0FBVCxTQUFTLFFBS3BCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUGxhY2VtZW50IHtcbiAgVG9wID0gJ3RvcCcsXG4gIEJvdHRvbSA9ICdib3R0b20nLFxuICBMZWZ0ID0gJ2xlZnQnLFxuICBSaWdodCA9ICdyaWdodCdcbn1cbmV4cG9ydCB0eXBlIFBsYWNlbWVudFZhbHVlID0gJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbSc7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvdG9vbHRpcC90b29sdGlwLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTHV4VG9vbHRpcENvbnRleHQge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Default Tooltip Component
|
|
5
|
-
*/
|
|
6
|
-
export class TooltipComponent {
|
|
7
|
-
context;
|
|
8
|
-
constructor() { }
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Default Tooltip Component
|
|
5
|
+
*/
|
|
6
|
+
export class TooltipComponent {
|
|
7
|
+
context;
|
|
8
|
+
constructor() { }
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: TooltipComponent, selector: "ng-component", inputs: { context: "context" }, ngImport: i0, template: `
|
|
11
11
|
<span class="lux-tooltip" style="transition: opacity 200ms">{{context.message}}</span>
|
|
12
|
-
`, isInline: true });
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
15
|
-
type: Component,
|
|
16
|
-
args: [{
|
|
12
|
+
`, isInline: true });
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{
|
|
17
17
|
template: `
|
|
18
18
|
<span class="lux-tooltip" style="transition: opacity 200ms">{{context.message}}</span>
|
|
19
|
-
`
|
|
20
|
-
}]
|
|
21
|
-
}], ctorParameters:
|
|
22
|
-
type: Input
|
|
23
|
-
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
`
|
|
20
|
+
}]
|
|
21
|
+
}], ctorParameters: () => [], propDecorators: { context: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}] } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sdXgvc3JjL2xpYi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRDs7R0FFRztBQU1ILE1BQU0sT0FBTyxnQkFBZ0I7SUFFaEIsT0FBTyxDQUFvQjtJQUVwQyxnQkFBaUIsQ0FBQzt1R0FKVCxnQkFBZ0I7MkZBQWhCLGdCQUFnQixvRkFKZjs7S0FFVDs7MkZBRVEsZ0JBQWdCO2tCQUw1QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRTs7S0FFVDtpQkFDSjt3REFHWSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMdXhUb29sdGlwQ29udGV4dCB9IGZyb20gJy4vdG9vbHRpcC1jb250ZXh0JztcblxuLyoqXG4gKiBEZWZhdWx0IFRvb2x0aXAgQ29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibHV4LXRvb2x0aXBcIiBzdHlsZT1cInRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXNcIj57e2NvbnRleHQubWVzc2FnZX19PC9zcGFuPlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCB7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0OiBMdXhUb29sdGlwQ29udGV4dDtcblxuICAgIGNvbnN0cnVjdG9yKCkgIHsgfVxuXG59XG4iXX0=
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
import { HostListener, Input, Directive, ElementRef } from '@angular/core';
|
|
2
|
-
import { TooltipService } from './tooltip.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./tooltip.service";
|
|
5
|
-
/**
|
|
6
|
-
* Tooltip directive
|
|
7
|
-
*/
|
|
8
|
-
export class LuxTooltipDirective {
|
|
9
|
-
elHost;
|
|
10
|
-
tooltipService;
|
|
11
|
-
/** Tooltip title */
|
|
12
|
-
luxTooltip;
|
|
13
|
-
/** Component, TemplateRef or String */
|
|
14
|
-
content;
|
|
15
|
-
/** Placement */
|
|
16
|
-
placement;
|
|
17
|
-
tooltipRef;
|
|
18
|
-
constructor(elHost, tooltipService) {
|
|
19
|
-
this.elHost = elHost;
|
|
20
|
-
this.tooltipService = tooltipService;
|
|
21
|
-
}
|
|
22
|
-
onMouseEnter() {
|
|
23
|
-
if (!this.tooltipRef) {
|
|
24
|
-
this.tooltipRef = this.show(this.content, this.elHost, this.placement);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
onMouseLeave() {
|
|
28
|
-
if (this.tooltipRef) {
|
|
29
|
-
this.remove(this.tooltipRef);
|
|
30
|
-
this.tooltipRef = null;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
onClick() {
|
|
34
|
-
if (this.tooltipRef) {
|
|
35
|
-
this.remove(this.tooltipRef);
|
|
36
|
-
this.tooltipRef = null;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
show(component, elHost, placement) {
|
|
40
|
-
return this.tooltipService.appendComponentToBody(component, elHost, placement);
|
|
41
|
-
}
|
|
42
|
-
remove(tooltipRef) {
|
|
43
|
-
this.tooltipService.removeComponentFromBody(tooltipRef);
|
|
44
|
-
}
|
|
45
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
46
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
49
|
-
type: Directive,
|
|
50
|
-
args: [{
|
|
51
|
-
selector: '[luxTooltip]'
|
|
52
|
-
}]
|
|
53
|
-
}], ctorParameters:
|
|
54
|
-
type: Input
|
|
55
|
-
}], content: [{
|
|
56
|
-
type: Input
|
|
57
|
-
}], placement: [{
|
|
58
|
-
type: Input
|
|
59
|
-
}], onMouseEnter: [{
|
|
60
|
-
type: HostListener,
|
|
61
|
-
args: ['mouseenter']
|
|
62
|
-
}], onMouseLeave: [{
|
|
63
|
-
type: HostListener,
|
|
64
|
-
args: ['mouseleave']
|
|
65
|
-
}], onClick: [{
|
|
66
|
-
type: HostListener,
|
|
67
|
-
args: ['click']
|
|
68
|
-
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { HostListener, Input, Directive, ElementRef } from '@angular/core';
|
|
2
|
+
import { TooltipService } from './tooltip.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./tooltip.service";
|
|
5
|
+
/**
|
|
6
|
+
* Tooltip directive
|
|
7
|
+
*/
|
|
8
|
+
export class LuxTooltipDirective {
|
|
9
|
+
elHost;
|
|
10
|
+
tooltipService;
|
|
11
|
+
/** Tooltip title */
|
|
12
|
+
luxTooltip;
|
|
13
|
+
/** Component, TemplateRef or String */
|
|
14
|
+
content;
|
|
15
|
+
/** Placement */
|
|
16
|
+
placement;
|
|
17
|
+
tooltipRef;
|
|
18
|
+
constructor(elHost, tooltipService) {
|
|
19
|
+
this.elHost = elHost;
|
|
20
|
+
this.tooltipService = tooltipService;
|
|
21
|
+
}
|
|
22
|
+
onMouseEnter() {
|
|
23
|
+
if (!this.tooltipRef) {
|
|
24
|
+
this.tooltipRef = this.show(this.content, this.elHost, this.placement);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
onMouseLeave() {
|
|
28
|
+
if (this.tooltipRef) {
|
|
29
|
+
this.remove(this.tooltipRef);
|
|
30
|
+
this.tooltipRef = null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
onClick() {
|
|
34
|
+
if (this.tooltipRef) {
|
|
35
|
+
this.remove(this.tooltipRef);
|
|
36
|
+
this.tooltipRef = null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
show(component, elHost, placement) {
|
|
40
|
+
return this.tooltipService.appendComponentToBody(component, elHost, placement);
|
|
41
|
+
}
|
|
42
|
+
remove(tooltipRef) {
|
|
43
|
+
this.tooltipService.removeComponentFromBody(tooltipRef);
|
|
44
|
+
}
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: LuxTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i1.TooltipService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
46
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: LuxTooltipDirective, selector: "[luxTooltip]", inputs: { luxTooltip: "luxTooltip", content: "content", placement: "placement" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "click": "onClick()" } }, ngImport: i0 });
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: LuxTooltipDirective, decorators: [{
|
|
49
|
+
type: Directive,
|
|
50
|
+
args: [{
|
|
51
|
+
selector: '[luxTooltip]'
|
|
52
|
+
}]
|
|
53
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TooltipService }], propDecorators: { luxTooltip: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], content: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], placement: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], onMouseEnter: [{
|
|
60
|
+
type: HostListener,
|
|
61
|
+
args: ['mouseenter']
|
|
62
|
+
}], onMouseLeave: [{
|
|
63
|
+
type: HostListener,
|
|
64
|
+
args: ['mouseleave']
|
|
65
|
+
}], onClick: [{
|
|
66
|
+
type: HostListener,
|
|
67
|
+
args: ['click']
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sdXgvc3JjL2xpYi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFJbkQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBYXBCO0lBQ0E7SUFiVixvQkFBb0I7SUFDWCxVQUFVLENBQU07SUFFekIsdUNBQXVDO0lBQzlCLE9BQU8sQ0FBTTtJQUV0QixnQkFBZ0I7SUFDUCxTQUFTLENBQWlCO0lBRW5DLFVBQVUsQ0FBb0I7SUFFOUIsWUFDVSxNQUFrQixFQUNsQixjQUE4QjtRQUQ5QixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQ2xCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUNyQyxDQUFDO0lBRXdCLFlBQVk7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBRTJCLFlBQVk7UUFDdEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVzQixPQUFPO1FBQzVCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxJQUFJLENBQ0YsU0FBYyxFQUNkLE1BQWtCLEVBQ2xCLFNBQXlCO1FBRXpCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FDOUMsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBNkI7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRCxDQUFDO3VHQW5EVSxtQkFBbUI7MkZBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7NEdBR1UsVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFTc0IsWUFBWTtzQkFBdkMsWUFBWTt1QkFBQyxZQUFZO2dCQU1FLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWTtnQkFPSCxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIb3N0TGlzdGVuZXIsIElucHV0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVG9vbHRpcFNlcnZpY2UgfSBmcm9tICcuL3Rvb2x0aXAuc2VydmljZSc7XG5pbXBvcnQgeyBQbGFjZW1lbnRWYWx1ZSB9IGZyb20gJy4vcGxhY2VtZW50JztcbmltcG9ydCB7IFRvb2x0aXBDb250ZW50UmVmIH0gZnJvbSAnLi90b29sdG9wLWNvbnRlbnQnO1xuXG4vKipcbiAqIFRvb2x0aXAgZGlyZWN0aXZlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tsdXhUb29sdGlwXSdcbn0pXG5leHBvcnQgY2xhc3MgTHV4VG9vbHRpcERpcmVjdGl2ZSB7XG4gIC8qKiBUb29sdGlwIHRpdGxlICovXG4gIEBJbnB1dCgpIGx1eFRvb2x0aXA6IGFueTtcblxuICAvKiogQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiBvciBTdHJpbmcgKi9cbiAgQElucHV0KCkgY29udGVudDogYW55O1xuXG4gIC8qKiBQbGFjZW1lbnQgKi9cbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnRWYWx1ZTtcblxuICB0b29sdGlwUmVmOiBUb29sdGlwQ29udGVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsSG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHRvb2x0aXBTZXJ2aWNlOiBUb29sdGlwU2VydmljZVxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudG9vbHRpcFJlZikge1xuICAgICAgdGhpcy50b29sdGlwUmVmID0gdGhpcy5zaG93KHRoaXMuY29udGVudCwgdGhpcy5lbEhvc3QsIHRoaXMucGxhY2VtZW50KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgIHRoaXMucmVtb3ZlKHRoaXMudG9vbHRpcFJlZik7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwUmVmKSB7XG4gICAgICB0aGlzLnJlbW92ZSh0aGlzLnRvb2x0aXBSZWYpO1xuICAgICAgdGhpcy50b29sdGlwUmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzaG93KFxuICAgIGNvbXBvbmVudDogYW55LFxuICAgIGVsSG9zdDogRWxlbWVudFJlZixcbiAgICBwbGFjZW1lbnQ6IFBsYWNlbWVudFZhbHVlXG4gICk6IFRvb2x0aXBDb250ZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy50b29sdGlwU2VydmljZS5hcHBlbmRDb21wb25lbnRUb0JvZHkoXG4gICAgICBjb21wb25lbnQsXG4gICAgICBlbEhvc3QsXG4gICAgICBwbGFjZW1lbnRcbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlKHRvb2x0aXBSZWY6IFRvb2x0aXBDb250ZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwU2VydmljZS5yZW1vdmVDb21wb25lbnRGcm9tQm9keSh0b29sdGlwUmVmKTtcbiAgfVxufVxuIl19
|