mirror of
https://github.com/akveo/ngx-admin.git
synced 2025-09-21 21:40:49 +02:00
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Akveo. All Rights Reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*/
|
|
|
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
import { Pipe, PipeTransform } from '@angular/core';
|
|
import { icons } from 'eva-icons';
|
|
|
|
@Pipe({ name: 'eva' })
|
|
export class EvaIconsPipe implements PipeTransform {
|
|
|
|
private defaultOptions = {
|
|
height: 24,
|
|
width: 24,
|
|
fill: 'inherit',
|
|
animationHover: true,
|
|
animationInfinity: false,
|
|
};
|
|
|
|
constructor(private sanitizer: DomSanitizer) {}
|
|
|
|
transform(icon: string,
|
|
options: {
|
|
height: number;
|
|
width: number;
|
|
fill: string;
|
|
animationType?: string;
|
|
animationHover?: boolean;
|
|
animationInfinity?: boolean;
|
|
},
|
|
) {
|
|
const mergedOptions = {
|
|
...this.defaultOptions,
|
|
...options,
|
|
};
|
|
const { width, height, fill, animationType, animationHover, animationInfinity } = mergedOptions;
|
|
const animation = animationType ?
|
|
{ type: animationType, hover: animationHover, infinite: animationInfinity } :
|
|
null;
|
|
|
|
return this.sanitizer.bypassSecurityTrustHtml(icons[icon].toSvg({
|
|
width,
|
|
height,
|
|
fill,
|
|
animation,
|
|
}));
|
|
}
|
|
}
|