File

src/app/component/file-upload/file-upload.component.ts

Metadata

encapsulation ViewEncapsulation.None
host {
}
moduleId module.id
selector stbui-file-upload
styleUrls ./file-upload.component.scss
templateUrl ./file-upload.component.html

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor(sanitizer: DomSanitizer, fileUploadService: FileUploadService, firebaseService: FirebaseService)
Parameters :
Name Type Optional
sanitizer DomSanitizer No
fileUploadService FileUploadService No
firebaseService FirebaseService No

Inputs

accept
maxFileSize
url
useFirebase
Type : boolean
Default value : false

Outputs

onBeforeUpload
Type : EventEmitter
onChange
Type : EventEmitter
onRemove
Type : EventEmitter
onUpload
Type : EventEmitter

Methods

onFileSelect
onFileSelect(event)
Parameters :
Name Optional
event No
Returns : void
removePreview
removePreview()
Returns : void

Properties

currentFile
fileName
Type : string
previewUrl
progress
Type : number
import {
  Component,
  Input,
  Output,
  ViewEncapsulation,
  EventEmitter
} from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { FileUploadService } from './file-upload.service';
import { FirebaseService } from './firebase.service';
@Component({
  moduleId: module.id,
  selector: 'stbui-file-upload',
  templateUrl: './file-upload.component.html',
  styleUrls: ['./file-upload.component.scss'],
  encapsulation: ViewEncapsulation.None,
  host: {
    class: 'stbui-upload'
  }
})
export class FileUploadComponent {
  @Input() useFirebase: boolean = false;
  @Input() accept;
  @Input() maxFileSize;
  @Input() url;
  @Output() onChange = new EventEmitter();
  @Output() onBeforeUpload = new EventEmitter();
  @Output() onUpload = new EventEmitter();
  @Output() onRemove = new EventEmitter();

  currentFile;
  previewUrl;
  progress: number;
  fileName: string;

  constructor(
    private sanitizer: DomSanitizer,
    private fileUploadService: FileUploadService,
    private firebaseService: FirebaseService
  ) {}

  removePreview() {
    this.previewUrl = null;
  }

  onFileSelect(event) {
    if (this.useFirebase) {
      this.firebaseService.startUpload(event);
    } else {
      this.firebaseService.startUpload(event);
    }
  }
}
<div class="stbui-upload-container">
  <div class="stbui-upload-select" *ngIf="!previewUrl">
    <mat-icon class="stbui-upload-icon">add</mat-icon>
    <div class="stbui-upload-text">Upload</div>
    <div class="stbui-upload-inner">
      <input type="file" class="stbui-upload-input" (change)="onFileSelect($event)">
    </div>
  </div>

  <div class="stbui-upload-preview" (click)="removePreview()" *ngIf="previewUrl">
    <img [src]="this.previewUrl" />
  </div>

</div>

./file-upload.component.scss

.stbui-upload {
  display: inline-block;
  vertical-align: top;
  &-container {
    position: relative;
    border-radius: 5px;
    border: 1px dashed #d9d9d9;
   
  }
  &-select {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 128px;
    height: 128px;
  }
  &-icon {
    height: 32px;
    width: 32px;
    font-size: 32px;
    color: #999;
  }
  &-text {
    margin-top: 8px;
    color: #666;
  }
  &-inner {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
  &-input {
    width: 100%;
    height: 100%;
    cursor: pointer;
    opacity: 0;
  }
  &-preview {
    width: 128px;
    height: 128px;
    img {
      width: 100%;
      height: 100%;
    }
  }
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""