navsearch.component.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChange, ElementRef } from '@angular/core';
  2. @Component({
  3. selector: 'app-navsearch',
  4. templateUrl: './navsearch.component.html',
  5. styleUrls: ['./navsearch.component.scss']
  6. })
  7. export class NavsearchComponent implements OnInit, OnChanges {
  8. @Input() visible: boolean;
  9. @Output() onclose = new EventEmitter<boolean>();
  10. term: string;
  11. constructor(public elem: ElementRef) { }
  12. ngOnInit() {
  13. document.addEventListener('keyup', event => {
  14. if (event.keyCode === 27) {// ESC
  15. this.closeNavSearch();
  16. }
  17. });
  18. document.addEventListener('click', event => {
  19. const contains = (this.elem.nativeElement !== event.target && this.elem.nativeElement.contains(event.target));
  20. if (!contains) {
  21. this.closeNavSearch();
  22. }
  23. });
  24. }
  25. closeNavSearch() {
  26. this.visible = false;
  27. this.onclose.emit();
  28. }
  29. ngOnChanges(changes: { [propKey: string]: SimpleChange }) {
  30. // console.log(changes['visible'].currentValue)
  31. if (changes['visible'].currentValue === true) {
  32. this.elem.nativeElement.querySelector('input').focus();
  33. }
  34. }
  35. handleForm() {
  36. console.log('Form submit: ' + this.term);
  37. }
  38. }