UNPKG

@ng-select/ng-option-highlight

Version:

## Build

111 lines 7.03 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, Input, Renderer2 } from '@angular/core'; export class NgOptionHighlightDirective { /** * @param {?} elementRef * @param {?} renderer */ constructor(elementRef, renderer) { this.elementRef = elementRef; this.renderer = renderer; this.element = this.elementRef.nativeElement; } /** * @return {?} */ ngOnChanges() { if (this._canHighlight) { this._highlightLabel(); } } /** * @return {?} */ ngAfterViewInit() { this.label = this.element.innerHTML; if (this._canHighlight) { this._highlightLabel(); } } /** * @private * @return {?} */ _highlightLabel() { /** @type {?} */ const label = this.label; if (!this.term) { this._setInnerHtml(label); return; } /** @type {?} */ const alternationString = this.term.replace(' ', '|'); /** @type {?} */ const termRegex = new RegExp(alternationString, 'gi'); this._setInnerHtml(label.replace(termRegex, `<span class=\"highlighted\">$&</span>`)); } /** * @private * @return {?} */ get _canHighlight() { return this._isDefined(this.term) && this._isDefined(this.label); } /** * @private * @param {?} html * @return {?} */ _setInnerHtml(html) { this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', html); } /** * @private * @param {?} value * @return {?} */ _isDefined(value) { return value !== undefined && value !== null; } } NgOptionHighlightDirective.decorators = [ { type: Directive, args: [{ selector: '[ngOptionHighlight]' },] } ]; /** @nocollapse */ NgOptionHighlightDirective.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 } ]; NgOptionHighlightDirective.propDecorators = { term: [{ type: Input, args: ['ngOptionHighlight',] }] }; if (false) { /** @type {?} */ NgOptionHighlightDirective.prototype.term; /** * @type {?} * @private */ NgOptionHighlightDirective.prototype.element; /** * @type {?} * @private */ NgOptionHighlightDirective.prototype.label; /** * @type {?} * @private */ NgOptionHighlightDirective.prototype.elementRef; /** * @type {?} * @private */ NgOptionHighlightDirective.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctb3B0aW9uLWhpZ2hsaWdodC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmctc2VsZWN0L25nLW9wdGlvbi1oaWdobGlnaHQvIiwic291cmNlcyI6WyJsaWIvbmctb3B0aW9uLWhpZ2hsaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFLdkIsTUFBTSxPQUFPLDBCQUEwQjs7Ozs7SUFPbkMsWUFDWSxVQUFzQixFQUN0QixRQUFtQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUNqRCxDQUFDOzs7O0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDOzs7O0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7Ozs7O0lBRU8sZUFBZTs7Y0FDYixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUs7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLE9BQU87U0FDVjs7Y0FFSyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDOztjQUMvQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsdUNBQXVDLENBQUMsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7Ozs7O0lBRUQsSUFBWSxhQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQzs7Ozs7O0lBRU8sYUFBYSxDQUFDLElBQUk7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Ozs7OztJQUVPLFVBQVUsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQ2pELENBQUM7OztZQW5ESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQzs7OztZQVJHLFVBQVU7WUFHVixTQUFTOzs7bUJBUVIsS0FBSyxTQUFDLG1CQUFtQjs7OztJQUExQiwwQ0FBeUM7Ozs7O0lBRXpDLDZDQUE2Qjs7Ozs7SUFDN0IsMkNBQXNCOzs7OztJQUdsQixnREFBOEI7Ozs7O0lBQzlCLDhDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNlYXJjaEhlbHBlciBmcm9tICcuL3NlYXJjaC1oZWxwZXInO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW25nT3B0aW9uSGlnaGxpZ2h0XSdcbn0pXG5leHBvcnQgY2xhc3MgTmdPcHRpb25IaWdobGlnaHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuXG4gICAgQElucHV0KCduZ09wdGlvbkhpZ2hsaWdodCcpIHRlcm06IHN0cmluZztcblxuICAgIHByaXZhdGUgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBsYWJlbDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5fY2FuSGlnaGxpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRMYWJlbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmxhYmVsID0gdGhpcy5lbGVtZW50LmlubmVySFRNTDtcbiAgICAgICAgaWYgKHRoaXMuX2NhbkhpZ2hsaWdodCkge1xuICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0TGFiZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2hpZ2hsaWdodExhYmVsKCkge1xuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMubGFiZWw7XG4gICAgICAgIGlmICghdGhpcy50ZXJtKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRJbm5lckh0bWwobGFiZWwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWx0ZXJuYXRpb25TdHJpbmcgPSB0aGlzLnRlcm0ucmVwbGFjZSgnICcsICd8JylcbiAgICAgICAgY29uc3QgdGVybVJlZ2V4ID0gbmV3IFJlZ0V4cChhbHRlcm5hdGlvblN0cmluZywgJ2dpJylcbiAgICAgICAgdGhpcy5fc2V0SW5uZXJIdG1sKGxhYmVsLnJlcGxhY2UodGVybVJlZ2V4LCBgPHNwYW4gY2xhc3M9XFxcImhpZ2hsaWdodGVkXFxcIj4kJjwvc3Bhbj5gKSlcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBfY2FuSGlnaGxpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNEZWZpbmVkKHRoaXMudGVybSkgJiYgdGhpcy5faXNEZWZpbmVkKHRoaXMubGFiZWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldElubmVySHRtbChodG1sKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpbm5lckhUTUwnLCBodG1sKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0RlZmluZWQodmFsdWU6IGFueSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbDtcbiAgICB9XG59ICAgXG4iXX0=