Angular component library which allow you to easily integrate powerful filestack-api into your app.
Table of Contents
- Overview
- Usage
- Documentation
- Development
- Contributing
filestack-angular is a wrapper on filestack-js sdk which allow you to integrate with Filestack service in just a few lines of code. Almost all you are able to do with filestack-js you can also do using this component.
This repository a contains angular workspace with two projects:
filestack-angularlibrary which containsFilestackAngularModulepublished via npmexampleangular app to show examples of usingFilestackModulefeatures
FilestackAngularModule consists of
- FilestackService - wrapper for a filestack-js client class with added support for an observables
- FilestackTransformPipe - Pipe for easily creating url with transformations in your template
- PickerOverlayComponent - Filestack picker component that will open in overlay mode
- PickerInlineComponent - Filestack picker component that will open in a provided html container
- PickerDropPaneComponent - Filestack drop pane component that will open in a provided html container which can be also used independently if needed
Install it through NPM
npm install filestack-js npm install @filestack/angularInclude FilestackModule in app.module.ts
import{BrowserModule}from'@angular/platform-browser';import{NgModule}from'@angular/core';import{AppComponent}from'./app.component';import{FilestackModule}from'@filestack/angular'; @NgModule({declarations: [AppComponent],imports: [BrowserModule,FilestackModule.forRoot({apikey: YOUR_APIKEY,options: ClientConfig})],bootstrap: [AppComponent]})exportclassAppModule{}Use in .html file
<ng-picker-overlayapikey="YOUR_API_KEY"></ng-picker-overlay>The compiled filestack angular module is also available through our cdn
https://static.filestackapi.com/filestack-angular/{MODULE_VERSION}/filestack-angular.umd.min.js and map file to module
https://static.filestackapi.com/filestack-angular/{MODULE_VERSION}/filestack-angular.umd.min.js.map where{MODULE_VERSION} is desired version of this package
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| apikey | String | True | Filestack api key | |
| options | Object | Check pickerOptions | ||
| clientOptions.cname | String | Check cname | ||
| clientOptions.security | Object(Security) | Check security | ||
| clientOptions.sessionCache | Boolean | Check sessionCache | ||
| file | InputFile | |||
| source | String | Filestack handle or external url. Use it for 'transform', 'remove', 'metadata' or 'preview' action |
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| uploadSuccess | Subject | A subject that emits on uploadSuccess event | ||
| uploadError | Subject | A subject that emits on uploadError event |
The FilestackService is an adapter on filestack-js client class and allows you to work with Observables instead of promises. Methods get the same input params as client class method.
| method | return | description |
|---|---|---|
| init | void | Init filestack client with your apikey |
| picker | PickerInstance | Open or close picker instance |
| transform | string | Create a transformation url |
| retrieve | Observable | Retrieve an info about a filestack handle |
| metadata | Observable | Access files via their Filestack handles |
| storeURL | Observable | Get info about a filestack handle metadata |
| upload | Observable | Upload a file to the Filestack |
| remove | Observable | Remove a file from the Filestack |
| removeMetadata | Observable | Remove a file only from the Filestack system. The file remains in storage. |
| preview | HTMLIFrameElement | Window |
| logout | Observable | Clear cloud session from picker procviders |
| setClientInstance | ClientInstance | Put an existing client instance into filestack service |
Below you can find some basic examples.
You can also find and try these examples in angular-filestack-example app
To run it locally type
ng serve filestack-angular-example then visit
http://localhost:4200/ component.ts
exportclassAppComponentimplementsOnInit{apikey: string;ngOnInit(){this.apikey='YOUR_API_KEY';}}component.html
<ng-picker-overlay[apikey]="apikey"></ng-picker-overlay>component.ts
exportclassAppComponentimplementsOnInit{apikey: string;ngOnInit(){this.apikey='YOUR_API_KEY';this.onSuccess=(res)=>console.log('###onSuccess',res);this.onError=(err)=>console.log('###onErr',err);}onUploadSuccess(res: object){console.log('###uploadSuccess',res);}onUploadError(err: any){console.log('###uploadError',err);}}component.html
<ng-picker-overlay[apikey]="apikey" (uploadSuccess)="onUploadSuccess($event)" (uploadError)="onUploadError($event)"><button>Open picker</button></ng-picker-overlay>component.ts
exportclassAppComponentimplementsOnInit{apikey: string;ngOnInit(){this.apikey='YOUR_API_KEY';}onUploadSuccess(res: object){console.log('###uploadSuccess',res);}onUploadError(err: any){console.log('###uploadError',err);}}component.html
<ng-picker-inline[apikey]="apikey" (uploadSuccess)="onUploadSuccess($event)" (uploadError)="onUploadError($event)"><button>Open picker</button></ng-picker-inline>component.ts
exportclassAppComponentimplementsOnInit{apikey: string;ngOnInit(){this.apikey='YOUR_API_KEY';}onUploadSuccess(res: object){console.log('###uploadSuccess',res);}onUploadError(err: any){console.log('###uploadError',err);}}component.html
<ng-picker-drop-pane[apikey]="apikey" (uploadSuccess)="onUploadSuccess($event)" (uploadError)="onUploadError($event)"></ng-picker-drop-pane>component.ts
... import{TransformOptions}from'filestack-js';exportclassAppComponentimplementsOnInit{transformOptions: TransformOptions;constructor(privatefilestackService: FilestackService){}ngOnInit(){this.transformOptions={resize: {width: 400},sepia: {tone: 80}}}}component.html
<imgsrc="{{'5aYkEQJSQCmYShsoCnZN' | filestackTransform: transformOptions}}">component.ts
exportclassAppComponentimplementsOnInit{file: any;constructor(privatefilestackService: FilestackService){}ngOnInit(){this.filestackService.init('YOUR_API_KEY');}fileChanged(e){this.file=e.target.files[0];}uploadFile(){this.filestackService.upload(this.file).subscribe(res=>console.log(res));}}component.html
<inputtype='file' (change)="fileChanged($event)"><button(click)="uploadFile()">Upload file</button>You can find necessary info about avalaible options for actions (Client class methods) at https://filestack.github.io/filestack-js/
After adding changes to FilestackAngularModule in /projects/filestack-angular/src
you need to build this module
ng build filestack-angular this command will produce /dist which conatins ready to use filestack module
you can check correctness of it by checking examples from example app:
Update api key in
/projects/example/src/app/app.component.tsstart app locally
ng serve example - visit http://localhost:4200/
Any of your contributions or ideas are more than welcome. Please consider that we follow the conventional commits specification to ensure consistent commit messages and changelog formatting.