Skip to content

Vue.js component for adding a file upload button for Vuetify.

Notifications You must be signed in to change notification settings

DoritoBandito/vuetify-upload-button

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IMPORTANT NOTE

This package is no longer maintained as of the release of Vuetify 2.0.0. Vuetify 2 now includes it's own file upload component found here: https://vuetifyjs.com/en/components/file-inputs

This package will still work with Vuetify version 1.x.x and will continue to be available on NPM.

vuetify-upload-button

A Vue component for Vuetify.

This component is a file upload input with the base functionality of a Vuetify button.

Installation

npm i vuetify-upload-button

Browser

Include the script file, then install the component with Vue.use(UploadButton); e.g.:

<script type="text/javascript" src="node_modules/vuejs/dist/vue.min.js"></script>
<script type="text/javascript" src="node_modules/vuetify-upload-button/dist/upload-button.min.js"></script>
<script type="text/javascript">
  Vue.use(UploadButton);
</script>

Module

  import UploadButton from 'vuetify-upload-button';

  export default {
    components: {
      'upload-btn': UploadButton
    }
  }

IMPORTANT NOTE

In order for the ripple directive to work properly, you must import the Ripple directive.

// plugins/vuetify.js
import Vue from 'vue'
import Vuetify from 'vuetify/lib'
import { Ripple } from 'vuetify/lib/directives'

Vue.use(Vuetify, {
  // other stuff
  directives: {
    Ripple
  }
})

Usage

Once installed, it can be used in a template as simply as:

Simple Upload button

<upload-btn></upload-btn>

Upon file change, the Upload Button component emit a file-update event with the file or files as the argument, see the following example:

<template>
  <upload-btn
    @file-update="update"
  >

  </upload-btn>
</template>

<script>
  import UploadButton from 'vuetify-upload-button'

  export default {
    methods: {
      update (file) {
        // handle file here. File will be an object.
        // If multiple prop is true, it will return an object array of files.
      }
    },
    components: {
      'upload-btn': UploadButton
    }
  }
</script>

Button with icon. The 'icon' slot defaults to the right:

<upload-btn
  title="Button With Icon"
>
  <template slot="icon">
    <v-icon>add</v-icon>
  </template>
</upload-btn>

Button with left icon:

<upload-btn
  title="Button With Icon"
>
  <template slot="icon-left">
    <v-icon left>add</v-icon>
  </template>
</upload-btn>

Button as icon

<upload-btn icon>
  <template slot="icon">
    <v-icon>add</v-icon>
  </template>
</upload-btn>

You can clear the file input using a ref

<upload-btn ref="button" title="Button" />

<button @click="$refs.button.clear()" />

Props

You can use the following props

Name Description Type Default
accept HTML input accept attribute string *
block block bool false
depressed remove box shadow bool false
color vuetify color, e.g. 'primary' string 'primary'
disabled sets disabled property for input/button bool false
fixedWidth sets a fixed width for the button string null
flat sets button flat bool false
hover button has hoverable effect bool true
icon button is icon button bool false
labelClass class to apply to the label such as text color string ''
large button is large bool false
loading loading state for button bool false
maxWidth allows the button to grow based on filename length to a max string 100%
multiple allows multiple files to be uploaded, returns an array instead of single object bool false
name applies HTML name attribute string uploadFile
outline button is outline bool false
ripple button has ripple effect bool true
round button is round bool false
small button is small bool false
title text of button string 'Upload'
noTitleUpdate disabled dynamic updating of title bool false

*Removed uniqueID as a prop because it should ALWAYS have a unique id

About

Vue.js component for adding a file upload button for Vuetify.

Resources

Stars

Watchers

Forks

Packages

No packages published