File

src/app/shared/click-outside/click-outside.directive.ts

Metadata

Index

Methods
Outputs
HostListeners

Constructor

constructor(_elementRef: ElementRef)
Parameters :
Name Type Optional
_elementRef ElementRef No

Outputs

bguiClickOutside
Type : EventEmitter

HostListeners

document:click
Arguments : '$event' '$event.target'

Methods

Public onClick
onClick(event: MouseEvent, targetElement: HTMLElement)
Decorators :
@HostListener('document:click', ['$event', '$event.target'])
Parameters :
Name Type Optional
event MouseEvent No
targetElement HTMLElement No
Returns : void
import {
  Directive,
  ElementRef,
  EventEmitter,
  HostListener,
  Output,
} from '@angular/core';

@Directive({
  standalone: true,
  selector: '[bguiClickOutside]',
})
export class ClickOutsideDirective {
  constructor(private _elementRef: ElementRef) {}

  @Output()
  public bguiClickOutside = new EventEmitter<MouseEvent>();

  @HostListener('document:click', ['$event', '$event.target'])
  public onClick(event: MouseEvent, targetElement: HTMLElement): void {
    if (!targetElement) {
      return;
    }

    const clickedInside =
      this._elementRef.nativeElement.contains(targetElement);
    if (!clickedInside) {
      this.bguiClickOutside.emit(event);
    }
  }
}

results matching ""

    No results matching ""