UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

40 lines 5.35 kB
import { Component, ElementRef, Input, ViewChild } from '@angular/core'; import { escape, escapeRegExp } from 'lodash-es'; import * as i0 from "@angular/core"; export class HighlightComponent { constructor() { this.pattern = ''; this.text = ''; this.elementClass = 'text-info'; this.shouldTrimPattern = false; this.highlightedText = ''; } ngOnChanges() { const textNoHtml = escape(this.text || ''); const patternEventuallyTrimmed = this.shouldTrimPattern ? this.pattern?.trim() : this.pattern; const patternNoHtml = escape(patternEventuallyTrimmed || ''); const patternForRegex = escapeRegExp(patternNoHtml).replace(/\\\*/g, '.*'); this.highlightedText = textNoHtml.replace(new RegExp(patternForRegex, 'i'), `<strong class="${this.elementClass}">$&</strong>`); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HighlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HighlightComponent, selector: "c8y-highlight", inputs: { pattern: "pattern", text: "text", elementClass: "elementClass", shouldTrimPattern: "shouldTrimPattern" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["text"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<span [innerHTML]="highlightedText"></span>', isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HighlightComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-highlight', template: '<span [innerHTML]="highlightedText"></span>' }] }], propDecorators: { container: [{ type: ViewChild, args: ['text', { read: ElementRef, static: true }] }], pattern: [{ type: Input }], text: [{ type: Input }], elementClass: [{ type: Input }], shouldTrimPattern: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VhcmNoL2hpZ2hsaWdodC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFNakQsTUFBTSxPQUFPLGtCQUFrQjtJQUovQjtRQVNFLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFHYixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBR1YsaUJBQVksR0FBRyxXQUFXLENBQUM7UUFHM0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO0tBWXRCO0lBVkMsV0FBVztRQUNULE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzlGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQ3ZDLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsRUFDaEMsa0JBQWtCLElBQUksQ0FBQyxZQUFZLGVBQWUsQ0FDbkQsQ0FBQztJQUNKLENBQUM7K0dBM0JVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHVQQUNGLFVBQVUsZ0VBSDNCLDZDQUE2Qzs7NEZBRTVDLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLDZDQUE2QztpQkFDeEQ7OEJBR0MsU0FBUztzQkFEUixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJckQsT0FBTztzQkFETixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlc2NhcGUsIGVzY2FwZVJlZ0V4cCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1oaWdobGlnaHQnLFxuICB0ZW1wbGF0ZTogJzxzcGFuIFtpbm5lckhUTUxdPVwiaGlnaGxpZ2h0ZWRUZXh0XCI+PC9zcGFuPidcbn0pXG5leHBvcnQgY2xhc3MgSGlnaGxpZ2h0Q29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgndGV4dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKVxuICBwYXR0ZXJuID0gJyc7XG5cbiAgQElucHV0KClcbiAgdGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGVsZW1lbnRDbGFzcyA9ICd0ZXh0LWluZm8nO1xuXG4gIEBJbnB1dCgpXG4gIHNob3VsZFRyaW1QYXR0ZXJuID0gZmFsc2U7XG5cbiAgaGlnaGxpZ2h0ZWRUZXh0ID0gJyc7XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgdGV4dE5vSHRtbCA9IGVzY2FwZSh0aGlzLnRleHQgfHwgJycpO1xuICAgIGNvbnN0IHBhdHRlcm5FdmVudHVhbGx5VHJpbW1lZCA9IHRoaXMuc2hvdWxkVHJpbVBhdHRlcm4gPyB0aGlzLnBhdHRlcm4/LnRyaW0oKSA6IHRoaXMucGF0dGVybjtcbiAgICBjb25zdCBwYXR0ZXJuTm9IdG1sID0gZXNjYXBlKHBhdHRlcm5FdmVudHVhbGx5VHJpbW1lZCB8fCAnJyk7XG4gICAgY29uc3QgcGF0dGVybkZvclJlZ2V4ID0gZXNjYXBlUmVnRXhwKHBhdHRlcm5Ob0h0bWwpLnJlcGxhY2UoL1xcXFxcXCovZywgJy4qJyk7XG4gICAgdGhpcy5oaWdobGlnaHRlZFRleHQgPSB0ZXh0Tm9IdG1sLnJlcGxhY2UoXG4gICAgICBuZXcgUmVnRXhwKHBhdHRlcm5Gb3JSZWdleCwgJ2knKSxcbiAgICAgIGA8c3Ryb25nIGNsYXNzPVwiJHt0aGlzLmVsZW1lbnRDbGFzc31cIj4kJjwvc3Ryb25nPmBcbiAgICApO1xuICB9XG59XG4iXX0=