angular-feather
Version:
Feather Icons components library for your Angular Applications
38 lines • 4.89 kB
JavaScript
import { Component, ElementRef, Input, Inject, ChangeDetectorRef } from '@angular/core';
import { Icons } from './icons.provider';
import { uppercamelcase } from './utils';
export class FeatherComponent {
constructor(elem, changeDetector, icons) {
this.elem = elem;
this.changeDetector = changeDetector;
this.icons = icons;
}
ngOnChanges(changes) {
// icons are provided as an array of objects because of "multi: true"
const icons = Object.assign({}, ...this.icons);
const svg = icons[uppercamelcase(changes.name.currentValue)] || '';
if (!svg) {
console.warn(`Icon not found: ${changes.name.currentValue}\n` +
`Refer to documentation on https://github.com/michaelbazos/angular-feather`);
}
this.elem.nativeElement.innerHTML = svg;
this.changeDetector.markForCheck();
}
}
FeatherComponent.decorators = [
{ type: Component, args: [{
// tslint:disable-next-line:component-selector
selector: 'i-feather, feather-icon',
template: "<ng-content></ng-content>\n",
styles: [":host{display:inline-block;fill:none;height:24px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:24px}"]
},] }
];
FeatherComponent.ctorParameters = () => [
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: Icons, decorators: [{ type: Inject, args: [Icons,] }] }
];
FeatherComponent.propDecorators = {
name: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdGhlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mZWF0aGVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9mZWF0aGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQVN6QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQzhCLElBQWdCLEVBQ1QsY0FBaUMsRUFDN0MsS0FBWTtRQUZQLFNBQUksR0FBSixJQUFJLENBQVk7UUFDVCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDN0MsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUNsQyxDQUFDO0lBRUosV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLHFFQUFxRTtRQUNyRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFJLElBQUksQ0FBQyxLQUF5QixDQUFDLENBQUM7UUFDcEUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFFLElBQUksRUFBRSxDQUFDO1FBRXJFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLENBQUMsSUFBSSxDQUNWLG1CQUFtQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSTtnQkFDaEQsMkVBQTJFLENBQzVFLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzs7WUE3QkYsU0FBUyxTQUFDO2dCQUNULDhDQUE4QztnQkFDOUMsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsdUNBQXVDOzthQUV4Qzs7O1lBVm1CLFVBQVUsdUJBZXpCLE1BQU0sU0FBQyxVQUFVO1lBZnlCLGlCQUFpQix1QkFnQjNELE1BQU0sU0FBQyxpQkFBaUI7WUFmcEIsS0FBSyx1QkFnQlQsTUFBTSxTQUFDLEtBQUs7OzttQkFMZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgSW5qZWN0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4vaWNvbnMucHJvdmlkZXInO1xuaW1wb3J0IHsgdXBwZXJjYW1lbGNhc2UgfSBmcm9tICcuL3V0aWxzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2ktZmVhdGhlciwgZmVhdGhlci1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlYXRoZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vZmVhdGhlci5jb21wb25lbnQuc2NzcycgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVhdGhlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG5hbWUhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChJY29ucykgcHJpdmF0ZSBpY29uczogSWNvbnNcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBpY29ucyBhcmUgcHJvdmlkZWQgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBiZWNhdXNlIG9mIFwibXVsdGk6IHRydWVcIlxuICAgIGNvbnN0IGljb25zID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uKHRoaXMuaWNvbnMgYXMgYW55IGFzIG9iamVjdFtdKSk7XG4gICAgY29uc3Qgc3ZnID0gaWNvbnNbIHVwcGVyY2FtZWxjYXNlKGNoYW5nZXMubmFtZS5jdXJyZW50VmFsdWUpIF0gfHwgJyc7XG5cbiAgICBpZiAoIXN2Zykge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgSWNvbiBub3QgZm91bmQ6ICR7Y2hhbmdlcy5uYW1lLmN1cnJlbnRWYWx1ZX1cXG5gICtcbiAgICAgICAgYFJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gaHR0cHM6Ly9naXRodWIuY29tL21pY2hhZWxiYXpvcy9hbmd1bGFyLWZlYXRoZXJgXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHN2ZztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iXX0=