File

projects/common/lib/components/thumbnail/thumbnail.component.ts

Implements

OnInit

Metadata

encapsulation ViewEncapsulation.None
selector common-thumbnail
styleUrls ./thumbnail.scss
templateUrl ./thumbnail.html

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor(viewContainerRef: ViewContainerRef)
Parameters :
Name Type Optional
viewContainerRef ViewContainerRef No

Inputs

imageObject
Type : CommonImage
reviewMode
Type : boolean
Default value : false

Outputs

deleteImage
Type : EventEmitter<CommonImage>

Methods

delete
delete(evt: any)
Parameters :
Name Type Optional
evt any No
Returns : void
hideFullSizeView
hideFullSizeView()
Returns : void
ngOnInit
ngOnInit()
Returns : void
showFullSizeView
showFullSizeView()
Returns : void

Properties

Public fullSizeViewModal
Type : ModalDirective
Decorators :
@ViewChild('fullSizeViewModal')
scaledWidth
Type : number
Default value : 300
Private viewContainerRef
Type : ViewContainerRef

Design Guidelines

Lorem ipsum dolor sit amet consectetur adipisicing elit. Sapiente, magnam ipsam. Sit quasi natus architecto rerum unde non provident! Quia nisi facere amet iste mollitia voluptatem non molestias esse optio?

Aperiam fugiat consectetur temporibus, iste repellat, quisquam sapiente nisi distinctio optio, autem nemo tenetur error eum voluptatibus ab accusamus quis voluptatum blanditiis. Quam et ut reprehenderit vitae nobis, at ipsum!

Exercitationem pariatur animi repudiandae corporis obcaecati ratione ducimus beatae quam, nostrum magnam unde numquam quidem cupiditate odit id. Beatae alias molestiae, optio incidunt harum quia voluptates deserunt sequi. Nesciunt, optio.

import { Component, ViewChild, OnInit, Input, Output, EventEmitter, ViewContainerRef, ViewEncapsulation } from '@angular/core';
import { ModalDirective } from 'ngx-bootstrap/modal';
import { CommonImage } from '../../models/images.model';

@Component({
  selector: 'common-thumbnail',
  templateUrl: './thumbnail.html',
  styleUrls: ['./thumbnail.scss'],
  encapsulation: ViewEncapsulation.None
})
export class ThumbnailComponent implements OnInit {
  @Input() imageObject: CommonImage;
  @Input() reviewMode: boolean = false;
  @Output() deleteImage: EventEmitter<CommonImage> = new EventEmitter<CommonImage>();
  @ViewChild('fullSizeViewModal') public fullSizeViewModal: ModalDirective;

  private viewContainerRef: ViewContainerRef;
  constructor(viewContainerRef: ViewContainerRef) {
    this.viewContainerRef = viewContainerRef;
  }

  scaledWidth: number = 300;
  ngOnInit() {

    const scaledWidthString: string = (180 * this.imageObject.naturalWidth / this.imageObject.naturalHeight).toFixed(0);
    this.scaledWidth = parseInt(scaledWidthString, 10);

    if (this.scaledWidth > 250) {
      this.scaledWidth = 250;
    } else if (this.scaledWidth < 30) {
      this.scaledWidth = 100;
    }

    if (isNaN(this.scaledWidth)) {
      this.scaledWidth = 300;
    }
  }

  delete(evt: any) {
    this.deleteImage.emit(this.imageObject);
  }

  showFullSizeView() {
    this.fullSizeViewModal.config.backdrop = false;
    this.fullSizeViewModal.show();
  }

  hideFullSizeView() {
    this.fullSizeViewModal.hide();
  }

}
<div class="thumbnail-container">
  <img [src]="imageObject.fileContent" alt="" tabindex="0"
    [ngClass]="{'image-thumbnail': scaledWidth <= 300, 'image-thumbnail-width-priority': scaledWidth > 300}"
    (click)="showFullSizeView()">
  <div class="action-strip" *ngIf="!reviewMode">
    <a href="javascript:void(0)" (click)="delete($event)" class='text-danger' tabindex="0">Remove</a>
  </div>
</div>

<div bsModal #fullSizeViewModal="bs-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title">{{imageObject.name}}</h4>
        <button type="button" class="close" (click)="hideFullSizeView()" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <div class="row">
          <div class="col-md-12" >
            <img [src]="imageObject.fileContent" alt="{{imageObject.name}}" class="center-block img-fluid">
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""