]>
Commit | Line | Data |
---|---|---|
9f95a23c | 1 | import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core'; |
11fdf7f2 | 2 | |
f67539c2 | 3 | import _ from 'lodash'; |
11fdf7f2 TL |
4 | |
5 | @Directive({ | |
39ae355f | 6 | selector: '[autofocus]' // eslint-disable-line |
11fdf7f2 TL |
7 | }) |
8 | export class AutofocusDirective implements AfterViewInit { | |
9f95a23c TL |
9 | private focus = true; |
10 | ||
11fdf7f2 TL |
11 | constructor(private elementRef: ElementRef) {} |
12 | ||
13 | ngAfterViewInit() { | |
14 | const el: HTMLInputElement = this.elementRef.nativeElement; | |
9f95a23c | 15 | if (this.focus && _.isFunction(el.focus)) { |
11fdf7f2 TL |
16 | el.focus(); |
17 | } | |
18 | } | |
9f95a23c TL |
19 | |
20 | @Input() | |
21 | public set autofocus(condition: any) { | |
22 | if (_.isBoolean(condition)) { | |
23 | this.focus = condition; | |
24 | } else if (_.isFunction(condition)) { | |
25 | this.focus = condition(); | |
26 | } | |
27 | } | |
11fdf7f2 | 28 | } |