@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
40 lines • 5.35 kB
JavaScript
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=