UNPKG

@nova-ui/bits

Version:

SolarWinds Nova Framework

83 lines 12.1 kB
// © 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