@nova-ui/bits
Version:
SolarWinds Nova Framework
83 lines • 12.1 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { Directive, ElementRef, Inject, Input, } from "@angular/core";
import escape from "lodash/escape";
import isUndefined from "lodash/isUndefined";
import { Subject } from "rxjs";
import { takeUntil } from "rxjs/operators";
import { HighlightPipe } from "../../../pipes/highlight.pipe";
import { ComboboxV2Component } from "../combobox-v2/combobox-v2.component";
import { NUI_SELECT_V2_OPTION_PARENT_COMPONENT } from "../constants";
import * as i0 from "@angular/core";
import * as i1 from "../../../pipes/highlight.pipe";
import * as i2 from "../combobox-v2/combobox-v2.component";
/**
* @ignore
* Will be renamed in scope of the NUI-5797
*/
export class ComboboxV2OptionHighlightDirective {
constructor(el, combobox, highlightPipe) {
this.el = el;
this.combobox = combobox;
this.highlightPipe = highlightPipe;
this.destroy$ = new Subject();
}
ngOnInit() {
this.updateHTML(this.combobox.inputValue);
this.combobox.valueChanged
.pipe(takeUntil(this.destroy$))
.subscribe(this.updateHTML.bind(this));
this.combobox.valueSelected
.pipe(takeUntil(this.destroy$))
.subscribe(() => this.updateHTML());
}
ngOnChanges(changes) {
if (changes.value) {
this.updateHTML(this.combobox.inputValue);
}
}
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
updateHTML(highlighted) {
const isHighlightNecessary = highlighted &&
this.combobox.getLastSelectedOption()?.viewValue !== highlighted;
this.el.nativeElement.innerHTML = (isHighlightNecessary && !isUndefined(highlighted)
? this.highlightPipe.transform(this.value, highlighted.toString())
: escape(this.value));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComboboxV2OptionHighlightDirective, deps: [{ token: i0.ElementRef }, { token: NUI_SELECT_V2_OPTION_PARENT_COMPONENT }, { token: i1.HighlightPipe }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ComboboxV2OptionHighlightDirective, selector: "[nuiComboboxV2OptionHighlight]", inputs: { value: ["nuiComboboxV2OptionHighlight", "value"] }, providers: [HighlightPipe], usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComboboxV2OptionHighlightDirective, decorators: [{
type: Directive,
args: [{
selector: "[nuiComboboxV2OptionHighlight]",
providers: [HighlightPipe],
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i2.ComboboxV2Component, decorators: [{
type: Inject,
args: [NUI_SELECT_V2_OPTION_PARENT_COMPONENT]
}] }, { type: i1.HighlightPipe }], propDecorators: { value: [{
type: Input,
args: ["nuiComboboxV2OptionHighlight"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtdjItb3B0aW9uLWhpZ2hsaWdodC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlbGVjdC12Mi9jb21ib2JveC12Mi1vcHRpb24taGlnaGxpZ2h0L2NvbWJvYm94LXYyLW9wdGlvbi1oaWdobGlnaHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDtBQUN6RCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLDhFQUE4RTtBQUM5RSw0REFBNEQ7QUFDNUQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFDdkQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBQy9FLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUVqQixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUtSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBR3JFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxrQ0FBa0M7SUFRM0MsWUFDWSxFQUEyQixFQUUzQixRQUE2QixFQUM3QixhQUE0QjtRQUg1QixPQUFFLEdBQUYsRUFBRSxDQUF5QjtRQUUzQixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQU52QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU83QyxDQUFDO0lBRUcsUUFBUTtRQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7YUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO2FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM3QztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxVQUFVLENBQUMsV0FBNkI7UUFDNUMsTUFBTSxvQkFBb0IsR0FDdEIsV0FBVztZQUNYLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsRUFBRSxTQUFTLEtBQUssV0FBVyxDQUFDO1FBRXJFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUM5QixvQkFBb0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUN4QixJQUFJLENBQUMsS0FBSyxFQUNWLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FDekI7WUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDakIsQ0FBQztJQUNoQixDQUFDOytHQW5EUSxrQ0FBa0MsNENBVS9CLHFDQUFxQzttR0FWeEMsa0NBQWtDLHVIQUZoQyxDQUFDLGFBQWEsQ0FBQzs7NEZBRWpCLGtDQUFrQztrQkFKOUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQzdCOzswQkFXUSxNQUFNOzJCQUFDLHFDQUFxQztxRUFOSCxLQUFLO3NCQUFsRCxLQUFLO3VCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIMKpIDIwMjIgU29sYXJXaW5kcyBXb3JsZHdpZGUsIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG9cbi8vICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyAgVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IGVzY2FwZSBmcm9tIFwibG9kYXNoL2VzY2FwZVwiO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gXCJsb2Rhc2gvaXNVbmRlZmluZWRcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IEhpZ2hsaWdodFBpcGUgfSBmcm9tIFwiLi4vLi4vLi4vcGlwZXMvaGlnaGxpZ2h0LnBpcGVcIjtcbmltcG9ydCB7IENvbWJvYm94VjJDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tYm9ib3gtdjIvY29tYm9ib3gtdjIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOVUlfU0VMRUNUX1YyX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSW5wdXRWYWx1ZVR5cGVzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogQGlnbm9yZVxuICogIFdpbGwgYmUgcmVuYW1lZCBpbiBzY29wZSBvZiB0aGUgTlVJLTU3OTdcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW251aUNvbWJvYm94VjJPcHRpb25IaWdobGlnaHRdXCIsXG4gICAgcHJvdmlkZXJzOiBbSGlnaGxpZ2h0UGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbWJvYm94VjJPcHRpb25IaWdobGlnaHREaXJlY3RpdmVcbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKiogUGFydCBvZiB0aGUgdGV4dCB0byBiZSBoaWdobGlnaHRlZCAqL1xuICAgIEBJbnB1dChcIm51aUNvbWJvYm94VjJPcHRpb25IaWdobGlnaHRcIikgcHVibGljIHZhbHVlOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQEluamVjdChOVUlfU0VMRUNUX1YyX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UKVxuICAgICAgICBwcml2YXRlIGNvbWJvYm94OiBDb21ib2JveFYyQ29tcG9uZW50LFxuICAgICAgICBwcml2YXRlIGhpZ2hsaWdodFBpcGU6IEhpZ2hsaWdodFBpcGVcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSFRNTCh0aGlzLmNvbWJvYm94LmlucHV0VmFsdWUpO1xuXG4gICAgICAgIHRoaXMuY29tYm9ib3gudmFsdWVDaGFuZ2VkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMudXBkYXRlSFRNTC5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLmNvbWJvYm94LnZhbHVlU2VsZWN0ZWRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVIVE1MKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUhUTUwodGhpcy5jb21ib2JveC5pbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUhUTUwoaGlnaGxpZ2h0ZWQ/OiBJbnB1dFZhbHVlVHlwZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNIaWdobGlnaHROZWNlc3NhcnkgPVxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWQgJiZcbiAgICAgICAgICAgIHRoaXMuY29tYm9ib3guZ2V0TGFzdFNlbGVjdGVkT3B0aW9uKCk/LnZpZXdWYWx1ZSAhPT0gaGlnaGxpZ2h0ZWQ7XG5cbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgIGlzSGlnaGxpZ2h0TmVjZXNzYXJ5ICYmICFpc1VuZGVmaW5lZChoaWdobGlnaHRlZClcbiAgICAgICAgICAgICAgICA/IHRoaXMuaGlnaGxpZ2h0UGlwZS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBlc2NhcGUodGhpcy52YWx1ZSlcbiAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgfVxufVxuIl19