52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// #docplaster
 | 
						|
// #docregion full
 | 
						|
import {Directive, ElementRef, Input} from 'angular2/core';
 | 
						|
 | 
						|
@Directive({
 | 
						|
  selector: '[myHighlight]',
 | 
						|
  host: {
 | 
						|
    '(mouseenter)': 'onMouseEnter()',
 | 
						|
    '(mouseleave)': 'onMouseLeave()'
 | 
						|
  }
 | 
						|
})
 | 
						|
 | 
						|
// #docregion class-1
 | 
						|
export class HighlightDirective {
 | 
						|
  
 | 
						|
  private _defaultColor = 'red';
 | 
						|
  private _el:HTMLElement;
 | 
						|
// #enddocregion class-1
 | 
						|
// #enddocregion full
 | 
						|
  /*
 | 
						|
// #docregion highlight
 | 
						|
  @Input() myHighlight: string;
 | 
						|
// #enddocregion highlight
 | 
						|
  */
 | 
						|
// #docregion full
 | 
						|
 | 
						|
// #docregion defaultColor
 | 
						|
  @Input() set defaultColor(colorName:string){
 | 
						|
    this._defaultColor = colorName || this._defaultColor;
 | 
						|
  }
 | 
						|
// #enddocregion defaultColor
 | 
						|
// #docregion class-1
 | 
						|
 | 
						|
// #docregion color
 | 
						|
  @Input('myHighlight') highlightColor: string;
 | 
						|
// #enddocregion color
 | 
						|
 | 
						|
// #enddocregion class-1
 | 
						|
// #docregion class-1
 | 
						|
  constructor(el: ElementRef) { this._el = el.nativeElement; }
 | 
						|
 | 
						|
// #docregion mouse-enter
 | 
						|
  onMouseEnter() { this._highlight(this.highlightColor || this._defaultColor); }
 | 
						|
// #enddocregion mouse-enter
 | 
						|
  onMouseLeave() { this._highlight(null); }
 | 
						|
 | 
						|
  private _highlight(color:string) {
 | 
						|
    this._el.style.backgroundColor = color;
 | 
						|
  }
 | 
						|
}
 | 
						|
// #enddocregion class-1
 | 
						|
// #enddocregion full
 |