@striven-erp/striven-fileviewer
Version:
A pure javascript fileviewer made for Striven ERP
170 lines (125 loc) ⢠4.24 kB
Markdown
<h1 align="center">Striven File Viewer</h1>
<p align="center">
<img src="./file-view.gif" />
</p>
<p align="center">
<img src="https://img.shields.io/github/size/striven-erp/striven-fileviewer/dist/strivenfileviewer.js"/>
<img src="https://img.shields.io/github/issues-raw/striven-erp/striven-fileviewer" />
<img alt="GitHub top language" src="https://img.shields.io/github/languages/top/striven-erp/striven-fileviewer">
<img src="https://img.shields.io/npm/v/@striven-erp/striven-fileviewer" />
</p>
## Supported Frameworks
š„ [Knockout](#implementing-with-knockout)
|
ā [Vue](#implementing-with-vue)
## Getting Started
### Install Package
```sh
$ npm install @striven-erp/striven-fileviewer
```
### Initialize File Viewer
The element that is passed in will be bound to an ```onclick``` event that triggers the file view lightbox.
```js
import { StrivenFileViewer } from '@striven-erp/striven-fileviewer';
const viewerOptions = {
path: './assets/images/image.jpeg',
name: 'image',
type: 'jpeg'
}
const fileviewer = new StrivenFileViewer(fileviewerEl, viewerOptions);
```
### Initializing with a View Element
Alternatively, you can pass an element that you want the file to displayed in. This will disable the lightbox feature.
```js
import { StrivenFileViewer } from '@striven-erp/striven-fileviewer';
const viewerOptions = {
path: './assets/images/image.jpeg',
name: 'image',
type: 'jpeg'
}
const fileviewer = new StrivenFileViewer(fileviewerEl, viewerOptions, viewEl);
```
## Implementing with Vue
### Import the Vue Directive
```js
import Vue from 'vue';
import App from './App.vue'
import { VueStrivenFileViewer } from '@striven-erp/striven-fileviewer';
new VueStrivenFileViewer(Vue);
new Vue({
render: h => h(App),
}).$mount('#app')
```
### Bind the directive to the element
```html
<a vue-fileviewer="viewerOptions" href="#" />
```
```js
export default {
data () {
return {
viewerOptions: {
path: './assets/images/image.jpeg',
name: 'image',
type: 'jpeg'
}
}
}
}
```
### Binding with a view element
```html
<a vue-fileviewer="viewerOptions" href="#" />
```
```js
export default {
data () {
return {
viewerOptions: {
path: './assets/images/image.jpeg',
name: 'image',
type: 'jpeg',
viewer: document.getElementById('view-element');
}
}
}
}
```
## Implementing with Knockout
### Import the Knockout Binding
```js
import ko from 'knockout';
import { KoStrivenFileViewer } from '@striven-erp/striven-fileviewer';
new KoStrivenFileViewer(ko);
```
### Template the binding
Attach the binding to the element you want the ```StrivenFileViewer``` to attach the ```onclick``` event to.
```html
<a href="#" data-bind="fileViewer: imagePath">View this File</a>
```
#### Binding with a view element
```html
<a href="#" data-bind="fileviewer: imagePath, viewElement: viewElement">View this File</a>
```
#### Example View Model
```js
function AppViewModel() {
this.imagePath = './path/to/the/file.jpeg/';
this.viewElement = document.getElementById('view-element');
}
ko.applyBindings(new AppViewModel());
```
## File Viewer Properties
|Property|Type|Description|
|:-:|:-:|:-:|
|path|```String```|Path to the file to view.|
|name|```String```|Name of the viewing file <br /> Download purposes.|
|type|```String```|Extension of the viewing file <br /> Viewing behavior purposes.|
|useSVG|```Boolean```|Use default SVG icons provided <br /> If ```false```, must pass class names|
|downloadIconClass|```String```|Class name for icon <br /> **Example:** ```fa fa-download```|
|closeIconClass|```String```|Class name for icon <br /> **Example:** ```fa fa-close```|
## File Viewer Methods
|Method|Return Type|Description|
|:-:|:-:|:-:|
|downloadFile|None|Manually invoke the downloading of the referenced file|
|viewFile|None|Manually invoke the click event that views the file|