@pepperi/lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.1.
70 lines (69 loc) • 8.19 kB
JavaScript
import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import * as i0 from "@angular/core";
import * as i1 from "./icon-registry.service";
const _c0 = ["*"];
export class PepperiIconComponent {
constructor(renderer, element, iconRegistry, document) {
this.renderer = renderer;
this.element = element;
this.iconRegistry = iconRegistry;
this.document = document;
this.fillColor = null;
}
set name(iconName) {
if (this.svgIcon) {
this.element.nativeElement.removeChild(this.svgIcon);
}
const svgData = this.iconRegistry.getIcon(iconName);
this.svgIcon = this.svgElementFromString(svgData);
this.element.nativeElement.appendChild(this.svgIcon);
this.renderer.addClass(this.svgIcon, 'svg-icon');
this.setFill();
}
set fill(value) {
this.fillColor = value;
this.setFill();
}
svgElementFromString(svgContent) {
const div = this.document.createElement('DIV');
div.innerHTML = svgContent;
return div.querySelector('svg') || this.document.createElementNS('http://www.w3.org/2000/svg', 'path');
}
setFill() {
if (this.svgIcon && this.fillColor) {
this.renderer.setStyle(this.svgIcon, 'fill', this.fillColor);
}
}
}
PepperiIconComponent.ɵfac = function PepperiIconComponent_Factory(t) { return new (t || PepperiIconComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.PepperiIconRegistry), i0.ɵɵdirectiveInject(DOCUMENT, 8)); };
PepperiIconComponent.ɵcmp = i0.ɵɵdefineComponent({ type: PepperiIconComponent, selectors: [["pep-icon"]], inputs: { name: "name", fill: "fill" }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function PepperiIconComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵprojectionDef();
i0.ɵɵprojection(0);
} }, styles: ["[_nghost-%COMP%] {\n display: inline-grid;\n }\n\n [_nghost-%COMP%] svg { width: 1.5rem; height: 1.5rem }"], changeDetection: 0 });
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(PepperiIconComponent, [{
type: Component,
args: [{
selector: 'pep-icon',
template: `
<ng-content></ng-content>
`,
styles: [`
:host {
display: inline-grid;
}
:host::ng-deep svg { width: 1.5rem; height: 1.5rem }
`],
changeDetection: ChangeDetectionStrategy.OnPush
}]
}], function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.PepperiIconRegistry }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [DOCUMENT]
}] }]; }, { name: [{
type: Input
}], fill: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wZXBwZXJpLWxpYi9pY29uL2ljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQTJCLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUVuSixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFnQjNDLE1BQU0sT0FBTyxvQkFBb0I7SUF1QjdCLFlBQ1ksUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsWUFBaUMsRUFDSCxRQUFhO1FBSDNDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDSCxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBMUIvQyxjQUFTLEdBQUcsSUFBSSxDQUFDO0lBMkJ6QixDQUFDO0lBeEJELElBQ0ksSUFBSSxDQUFDLFFBQWdCO1FBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUNJLElBQUksQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBU08sb0JBQW9CLENBQUMsVUFBa0I7UUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsR0FBRyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFDM0IsT0FBTyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFTyxPQUFPO1FBQ1gsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7d0ZBeENRLG9CQUFvQiw4SUEyQkwsUUFBUTt5REEzQnZCLG9CQUFvQjs7UUFYekIsa0JBQVk7O2tEQVdQLG9CQUFvQjtjQWRoQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRTs7S0FFVDtnQkFDRCxNQUFNLEVBQUUsQ0FBQzs7Ozs7O0tBTVIsQ0FBQztnQkFDRixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNsRDs7c0JBNEJRLFFBQVE7O3NCQUFJLE1BQU07dUJBQUMsUUFBUTt3QkF0QjVCLElBQUk7a0JBRFAsS0FBSztZQWNGLElBQUk7a0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgVmlld0VuY2Fwc3VsYXRpb24sIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQZXBwZXJpSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncGVwLWljb24nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYFxyXG4gICAgICAgIDpob3N0IHtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWdyaWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCBzdmcgeyB3aWR0aDogMS41cmVtOyBoZWlnaHQ6IDEuNXJlbSB9XHJcbiAgICBgXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXBwZXJpSWNvbkNvbXBvbmVudCB7XHJcbiAgICBwcml2YXRlIGZpbGxDb2xvciA9IG51bGw7XHJcbiAgICBwcml2YXRlIHN2Z0ljb246IFNWR0VsZW1lbnQ7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBuYW1lKGljb25OYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5zdmdJY29uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuc3ZnSWNvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN2Z0RhdGEgPSB0aGlzLmljb25SZWdpc3RyeS5nZXRJY29uKGljb25OYW1lKTtcclxuICAgICAgICB0aGlzLnN2Z0ljb24gPSB0aGlzLnN2Z0VsZW1lbnRGcm9tU3RyaW5nKHN2Z0RhdGEpO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc3ZnSWNvbik7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnN2Z0ljb24sICdzdmctaWNvbicpO1xyXG5cclxuICAgICAgICB0aGlzLnNldEZpbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGZpbGwodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZmlsbENvbG9yID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRGaWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcclxuICAgICAgICBwcml2YXRlIGljb25SZWdpc3RyeTogUGVwcGVyaUljb25SZWdpc3RyeSxcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnkpIHtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN2Z0VsZW1lbnRGcm9tU3RyaW5nKHN2Z0NvbnRlbnQ6IHN0cmluZyk6IFNWR0VsZW1lbnQge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IHN2Z0NvbnRlbnQ7XHJcbiAgICAgICAgcmV0dXJuIGRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKSB8fCB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAncGF0aCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0RmlsbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zdmdJY29uICYmIHRoaXMuZmlsbENvbG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zdmdJY29uLCAnZmlsbCcsIHRoaXMuZmlsbENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19