@ng-select/ng-option-highlight
Version:
## Build
133 lines • 7.95 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
var NgOptionHighlightDirective = /** @class */ (function () {
function NgOptionHighlightDirective(elementRef, renderer) {
this.elementRef = elementRef;
this.renderer = renderer;
this.element = this.elementRef.nativeElement;
}
/**
* @return {?}
*/
NgOptionHighlightDirective.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
if (this._canHighlight) {
this._highlightLabel();
}
};
/**
* @return {?}
*/
NgOptionHighlightDirective.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.label = this.element.innerHTML;
if (this._canHighlight) {
this._highlightLabel();
}
};
/**
* @private
* @return {?}
*/
NgOptionHighlightDirective.prototype._highlightLabel = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var label = this.label;
if (!this.term) {
this._setInnerHtml(label);
return;
}
/** @type {?} */
var alternationString = this.term.replace(' ', '|');
/** @type {?} */
var termRegex = new RegExp(alternationString, 'gi');
this._setInnerHtml(label.replace(termRegex, "<span class=\"highlighted\">$&</span>"));
};
Object.defineProperty(NgOptionHighlightDirective.prototype, "_canHighlight", {
get: /**
* @private
* @return {?}
*/
function () {
return this._isDefined(this.term) && this._isDefined(this.label);
},
enumerable: true,
configurable: true
});
/**
* @private
* @param {?} html
* @return {?}
*/
NgOptionHighlightDirective.prototype._setInnerHtml = /**
* @private
* @param {?} html
* @return {?}
*/
function (html) {
this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', html);
};
/**
* @private
* @param {?} value
* @return {?}
*/
NgOptionHighlightDirective.prototype._isDefined = /**
* @private
* @param {?} value
* @return {?}
*/
function (value) {
return value !== undefined && value !== null;
};
NgOptionHighlightDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngOptionHighlight]'
},] }
];
/** @nocollapse */
NgOptionHighlightDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: Renderer2 }
]; };
NgOptionHighlightDirective.propDecorators = {
term: [{ type: Input, args: ['ngOptionHighlight',] }]
};
return NgOptionHighlightDirective;
}());
export { NgOptionHighlightDirective };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctb3B0aW9uLWhpZ2hsaWdodC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmctc2VsZWN0L25nLW9wdGlvbi1oaWdobGlnaHQvIiwic291cmNlcyI6WyJsaWIvbmctb3B0aW9uLWhpZ2hsaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkI7SUFVSSxvQ0FDWSxVQUFzQixFQUN0QixRQUFtQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUNqRCxDQUFDOzs7O0lBRUQsZ0RBQVc7OztJQUFYO1FBQ0ksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7Ozs7SUFFRCxvREFBZTs7O0lBQWY7UUFDSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDOzs7OztJQUVPLG9EQUFlOzs7O0lBQXZCOztZQUNVLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsT0FBTztTQUNWOztZQUVLLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7O1lBQy9DLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUM7UUFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDLENBQUE7SUFDekYsQ0FBQztJQUVELHNCQUFZLHFEQUFhOzs7OztRQUF6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckUsQ0FBQzs7O09BQUE7Ozs7OztJQUVPLGtEQUFhOzs7OztJQUFyQixVQUFzQixJQUFJO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRixDQUFDOzs7Ozs7SUFFTywrQ0FBVTs7Ozs7SUFBbEIsVUFBbUIsS0FBVTtRQUN6QixPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQztJQUNqRCxDQUFDOztnQkFuREosU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2xDOzs7O2dCQVJHLFVBQVU7Z0JBR1YsU0FBUzs7O3VCQVFSLEtBQUssU0FBQyxtQkFBbUI7O0lBK0M5QixpQ0FBQztDQUFBLEFBcERELElBb0RDO1NBakRZLDBCQUEwQjs7O0lBRW5DLDBDQUF5Qzs7Ozs7SUFFekMsNkNBQTZCOzs7OztJQUM3QiwyQ0FBc0I7Ozs7O0lBR2xCLGdEQUE4Qjs7Ozs7SUFDOUIsOENBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2VhcmNoSGVscGVyIGZyb20gJy4vc2VhcmNoLWhlbHBlcic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbmdPcHRpb25IaWdobGlnaHRdJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ09wdGlvbkhpZ2hsaWdodERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBASW5wdXQoJ25nT3B0aW9uSGlnaGxpZ2h0JykgdGVybTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGxhYmVsOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jYW5IaWdobGlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodExhYmVsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MO1xuICAgICAgICBpZiAodGhpcy5fY2FuSGlnaGxpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRMYWJlbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGlnaGxpZ2h0TGFiZWwoKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5sYWJlbDtcbiAgICAgICAgaWYgKCF0aGlzLnRlcm0pIHtcbiAgICAgICAgICAgIHRoaXMuX3NldElubmVySHRtbChsYWJlbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbHRlcm5hdGlvblN0cmluZyA9IHRoaXMudGVybS5yZXBsYWNlKCcgJywgJ3wnKVxuICAgICAgICBjb25zdCB0ZXJtUmVnZXggPSBuZXcgUmVnRXhwKGFsdGVybmF0aW9uU3RyaW5nLCAnZ2knKVxuICAgICAgICB0aGlzLl9zZXRJbm5lckh0bWwobGFiZWwucmVwbGFjZSh0ZXJtUmVnZXgsIGA8c3BhbiBjbGFzcz1cXFwiaGlnaGxpZ2h0ZWRcXFwiPiQmPC9zcGFuPmApKVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IF9jYW5IaWdobGlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0RlZmluZWQodGhpcy50ZXJtKSAmJiB0aGlzLl9pc0RlZmluZWQodGhpcy5sYWJlbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0SW5uZXJIdG1sKGh0bWwpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2lubmVySFRNTCcsIGh0bWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzRGVmaW5lZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsO1xuICAgIH1cbn0gICBcbiJdfQ==