File

projects/rebirth-ng/src/lib/overlay/overlay.component.ts

Metadata

selector re-overlay
styleUrls overlay.component.scss
templateUrl ./overlay.component.html

Index

Properties
Methods
Inputs
HostListeners

Constructor

constructor(windowRef: WindowRef, renderer: Renderer2)
Parameters :
Name Type Optional
windowRef WindowRef no
renderer Renderer2 no

Inputs

overlayOptions

Type: OverlayOptions

HostListeners

window:resize
window:resize()

Methods

addContent
addContent(options: OverlayOptions)
Parameters :
Name Type Optional
options OverlayOptions no
Returns : void
Private adjustOverlayPosition
adjustOverlayPosition()
Returns : void

Properties

overlayBody
overlayBody: ElementRef
Type : ElementRef
Decorators : ViewChild
overlayContent
overlayContent: OverlayContentComponent
Type : OverlayContentComponent
Decorators : ViewChild
import {
  Component,
  Input,
  ViewChild,
  ElementRef,
  Renderer2,
  HostListener
} from '@angular/core';
import { OverlayOptions } from './overlay-options.model';
import { WindowRef } from '../window-ref/window-ref.service';
import { OverlayContentComponent } from './overlay-content.component';
import { centerWindowPosition } from '../utils/dom-utils';

@Component({
  selector: 're-overlay',
  templateUrl: './overlay.component.html',
  styleUrls: ['./overlay.component.scss'],
})
export class OverlayComponent {
  @Input() overlayOptions: OverlayOptions;
  @ViewChild('overlayBody') overlayBody: ElementRef;
  @ViewChild(OverlayContentComponent) overlayContent: OverlayContentComponent;

  constructor(private windowRef: WindowRef, private renderer: Renderer2) {

  }


  addContent(options: OverlayOptions) {
    this.overlayOptions = options;
    if (!this.overlayOptions.html && this.overlayOptions.component) {
      this.overlayContent.addContent(this.overlayOptions);
    }
    this.adjustOverlayPosition();
  }

  @HostListener('window:resize', [])
  onWinResize() {
    this.adjustOverlayPosition();
  }

  private adjustOverlayPosition() {
    setTimeout(() => {
      const pos = centerWindowPosition(this.overlayBody, this.windowRef);
      this.renderer.setStyle(this.overlayBody.nativeElement, 'top', `${pos.top}px`);
      this.renderer.setStyle(this.overlayBody.nativeElement, 'left', `${pos.left}px`);
    }, 0);
  }
}
<div #overlayBody class="overlay-body" style="z-index: 1050;top:300px;left: 200px;">
  <div *ngIf="overlayOptions?.html" [innerHTML]="overlayOptions.html"></div>
  <re-overlay-content #overlayContent style="display: none;"></re-overlay-content>
</div>
<re-modal-backdrop [isOpen]="true" [modalOptions]="overlayOptions"></re-modal-backdrop>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""