46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
// #docplaster
|
|
// #docregion full
|
|
import { Directive, ElementRef, HostListener, Input, Renderer } from '@angular/core';
|
|
|
|
@Directive({
|
|
selector: '[myHighlight]'
|
|
})
|
|
// #docregion class
|
|
export class HighlightDirective {
|
|
private _defaultColor = 'red';
|
|
|
|
constructor(private el: ElementRef, private renderer: Renderer) { }
|
|
// #enddocregion class
|
|
|
|
// #docregion defaultColor
|
|
@Input() set defaultColor(colorName: string){
|
|
this._defaultColor = colorName || this._defaultColor;
|
|
}
|
|
// #enddocregion defaultColor
|
|
// #docregion class
|
|
|
|
// #docregion color
|
|
@Input('myHighlight') highlightColor: string;
|
|
// #enddocregion color
|
|
|
|
// #docregion mouse-enter
|
|
@HostListener('mouseenter') onMouseEnter() {
|
|
this.highlight(this.highlightColor || this._defaultColor);
|
|
}
|
|
// #enddocregion mouse-enter
|
|
@HostListener('mouseleave') onMouseLeave() {
|
|
this.highlight(null);
|
|
}
|
|
|
|
private highlight(color: string) {
|
|
this.renderer.setElementStyle(this.el.nativeElement, 'backgroundColor', color);
|
|
}
|
|
}
|
|
// #enddocregion class
|
|
// #enddocregion full
|
|
/*
|
|
// #docregion highlight
|
|
@Input() myHighlight: string;
|
|
// #enddocregion highlight
|
|
*/
|