├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── LICENSE ├── README.md ├── _config.yml ├── assets ├── README.md └── variables.scss ├── components ├── InsertButton.vue ├── README.md ├── SelectFileIconType.vue ├── SimpleUploader.vue ├── TableUploader.vue ├── ThumbnailUploader.vue ├── fileUploader copy.vue ├── fileUploader.vue └── language.js ├── content └── doc.md ├── layouts ├── README.md ├── default.vue └── error.vue ├── middleware └── README.md ├── nuxt.config.js ├── package-lock.json ├── package.json ├── pages ├── README.md ├── documentation.vue ├── index.vue ├── simple.vue ├── table.vue └── thumbnail.vue ├── plugins └── README.md ├── static ├── README.md ├── favicon.ico ├── icon.png ├── v.png ├── vue-file-uploader.png └── vuetify-logo.svg ├── store └── README.md ├── tsconfig.json └── vue-shim.d.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "env": { 3 | "browser": true, 4 | "es2021": true 5 | }, 6 | "extends": [ 7 | "eslint:recommended", 8 | "plugin:vue/essential" 9 | ], 10 | "parserOptions": { 11 | "ecmaVersion": 12, 12 | "sourceType": "module" 13 | }, 14 | "plugins": [ 15 | "vue" 16 | ], 17 | "rules": { 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | /logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless 79 | 80 | # IDE / Editor 81 | .idea 82 | 83 | # Service worker 84 | sw.* 85 | 86 | # macOS 87 | .DS_Store 88 | 89 | # Vim swap files 90 | *.swp 91 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 ali jahanpak 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![vue-file-uploader](https://img.techpowerup.org/200626/vue-file-uploader038.png) 2 | 3 | 4 | # vue-file-uploader 5 | 6 | > Complete and simple file uploader with image compressor in Vue.js 7 | 8 | + Choice Theme : Thumbnail, Simple, Table 9 | + Add custom fields (Title, Description, Tags, ...) 10 | + Image compressor 11 | + Select level for Image compressor 12 | + Mange file extensions 13 | + Manage files count 14 | + Manage files size 15 | + Multi languages support 16 | + Add custom language 17 | + Right to left support 18 | + Multi file upload 19 | + Responsive 20 | + ... 21 | 22 | ## Examples 23 | - [Demo](https://friendly-varahamihira-45c09f.netlify.app) 24 | 25 | ## Documentation 26 | - [Documentation](https://friendly-varahamihira-45c09f.netlify.app/documentation) 27 | 28 | ## Install 29 | ```bash 30 | # install 31 | $ npm install handy-uploader 32 | 33 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /assets/README.md: -------------------------------------------------------------------------------- 1 | # ASSETS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked). 8 | -------------------------------------------------------------------------------- /assets/variables.scss: -------------------------------------------------------------------------------- 1 | // Ref: https://github.com/nuxt-community/vuetify-module#customvariables 2 | // 3 | // The variables you want to modify 4 | // $font-size-root: 20px; 5 | -------------------------------------------------------------------------------- /components/InsertButton.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 55 | -------------------------------------------------------------------------------- /components/README.md: -------------------------------------------------------------------------------- 1 | # COMPONENTS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | The components directory contains your Vue.js Components. 6 | 7 | _Nuxt.js doesn't supercharge these components._ 8 | -------------------------------------------------------------------------------- /components/SelectFileIconType.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 31 | -------------------------------------------------------------------------------- /components/SimpleUploader.vue: -------------------------------------------------------------------------------- 1 | 115 | 116 | 161 | -------------------------------------------------------------------------------- /components/TableUploader.vue: -------------------------------------------------------------------------------- 1 | 86 | 87 | 136 | -------------------------------------------------------------------------------- /components/ThumbnailUploader.vue: -------------------------------------------------------------------------------- 1 | 120 | 121 | 166 | -------------------------------------------------------------------------------- /components/fileUploader copy.vue: -------------------------------------------------------------------------------- 1 | 537 | 538 | 1040 | -------------------------------------------------------------------------------- /components/fileUploader.vue: -------------------------------------------------------------------------------- 1 | 353 | 354 | 881 | -------------------------------------------------------------------------------- /components/language.js: -------------------------------------------------------------------------------- 1 | export default{ 2 | en:{ 3 | insertFile: 'Insert File', 4 | insertNewFile: 'Insert New File', 5 | add: 'Add', 6 | delete: 'Delete', 7 | edit: 'Edit', 8 | deleteDialog:{ 9 | message: 'Are you sure you want to delete the file?', 10 | cancel: 'cancel', 11 | }, 12 | table:{ 13 | thumb: 'Thumb', 14 | name: 'Name', 15 | size: 'Size', 16 | tags: 'tags', 17 | action:{ 18 | action: 'Action', 19 | deleteTooltip: 'Delete' 20 | } 21 | }, 22 | size:{ 23 | kb: 'KB', 24 | mb: 'MB', 25 | }, 26 | maxFileSizeAlert: 'Max file Size is', 27 | maxFileCountAlert: 'Max file Count is', 28 | fileName: 'File Name', 29 | fileDescription: 'File Description', 30 | fileTags: 'File Tags', 31 | }, 32 | fa:{ 33 | insertFile: 'افزودن فایل', 34 | insertNewFile: 'افزودن فایل جدید', 35 | add: 'افزودن', 36 | delete: 'حذف', 37 | edit: 'ویرایش', 38 | deleteDialog:{ 39 | message: 'آیا برای حذف فایل اطمینان دارید؟', 40 | cancel: 'لغو', 41 | }, 42 | table:{ 43 | thumb: 'پیش نمایش', 44 | name: 'نام', 45 | size: 'حجم', 46 | action:{ 47 | action: 'عملیات', 48 | deleteTooltip: 'حذف' 49 | } 50 | }, 51 | size:{ 52 | kb: 'کیلو بایت', 53 | mb: 'مگابایت' 54 | }, 55 | maxSizeAlert: 'حداکثر حجم فایل انتحابی ', 56 | maxFileCountAlert: 'حداکثر تعداد فایل انتخابی', 57 | fileName: 'نام فایل', 58 | fileDescription: 'توضیحات فایل', 59 | fileTags: 'برچسب فایل', 60 | }, 61 | fr:{ 62 | insertFile: 'Insérer un fichier', 63 | insertNewFile: 'Insérer un nouveau fichier', 64 | add: 'Ajouter', 65 | delete: 'Supprimer', 66 | edit: 'Éditer', 67 | deleteDialog:{ 68 | message: 'Voulez-vous vraiment supprimer le fichier?', 69 | cancel: 'Annuler', 70 | }, 71 | table:{ 72 | thumb: 'la vignette', 73 | name: 'Nom', 74 | size: 'Taille', 75 | action:{ 76 | action: 'Action', 77 | deleteTooltip: 'Supprimer' 78 | } 79 | }, 80 | size:{ 81 | kb: 'KB', 82 | mb: 'MB', 83 | }, 84 | maxSizeAlert: 'La taille maximale du fichier est', 85 | maxFileCountAlert: 'Le nombre maximal de fichiers est', 86 | fileName: 'Nom de fichier', 87 | fileDescription: 'description du fichier', 88 | fileTags: 'Balises de fichier', 89 | }, 90 | ch:{ 91 | insertFile: '插入档案', 92 | insertNewFile: '插入新文件', 93 | add: '加', 94 | delete: '删除', 95 | edit: '编辑', 96 | deleteDialog:{ 97 | message: '您确定要删除文件吗?', 98 | cancel: '取消', 99 | }, 100 | table:{ 101 | thumb: '缩图', 102 | name: '名称', 103 | size: '尺寸', 104 | action:{ 105 | action: '行动', 106 | deleteTooltip: '删除' 107 | } 108 | }, 109 | size:{ 110 | kb: 'KB', 111 | mb: 'MB', 112 | }, 113 | maxSizeAlert: '档案大小上限为', 114 | maxFileCountAlert: '现“最大文件数”为', 115 | fileName: '文档名称', 116 | fileDescription: '文件描述', 117 | fileTags: '文件标签', 118 | }, 119 | ar:{ 120 | insertFile: 'إدراج ملف', 121 | insertNewFile: 'إدراج ملف جديد', 122 | add: 'أضف', 123 | delete: 'حذف', 124 | edit: 'تعديل', 125 | deleteDialog:{ 126 | message: 'هل أنت متأكد أنك تريد حذف الملف؟', 127 | cancel: 'إلغاء', 128 | }, 129 | table:{ 130 | thumb: 'ظفري', 131 | name: 'اسم', 132 | size: 'بحجم', 133 | action:{ 134 | action: 'عمل', 135 | deleteTooltip: 'حذف' 136 | } 137 | }, 138 | size:{ 139 | kb: 'کیلو بایت', 140 | mb: 'ميغا بايت' 141 | }, 142 | maxSizeAlert: 'الحجم الأقصى للملف هو', 143 | maxFileCountAlert: 'الحد الأقصى لعدد الملفات هو', 144 | fileName: 'اسم الملف', 145 | fileDescription: 'وصف الملف', 146 | fileTags: 'علامات الملف', 147 | }, 148 | } 149 | -------------------------------------------------------------------------------- /content/doc.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Why I don't care about the starbucks cup in Game of Thrones 3 | --- 4 | 5 | Hey Everyone, this is simple a test blog post to show you 6 | the functionality of nuxt markdown blog. 7 | 8 | --- 9 | -------------------------------------------------------------------------------- /layouts/README.md: -------------------------------------------------------------------------------- 1 | # LAYOUTS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your Application Layouts. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts). 8 | -------------------------------------------------------------------------------- /layouts/default.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 66 | -------------------------------------------------------------------------------- /layouts/error.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 39 | 40 | 45 | -------------------------------------------------------------------------------- /middleware/README.md: -------------------------------------------------------------------------------- 1 | # MIDDLEWARE 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your application middleware. 6 | Middleware let you define custom functions that can be run before rendering either a page or a group of pages. 7 | 8 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing#middleware). 9 | -------------------------------------------------------------------------------- /nuxt.config.js: -------------------------------------------------------------------------------- 1 | import colors from 'vuetify/es5/util/colors' 2 | import hljs from 'highlight.js'; 3 | 4 | export default { 5 | mode: 'spa', 6 | /* 7 | ** Headers of the page 8 | */ 9 | generate: { 10 | fallback: true 11 | }, 12 | head: { 13 | titleTemplate: 'Handy Uploader', 14 | title: process.env.npm_package_name || '', 15 | meta: [ 16 | { charset: 'utf-8' }, 17 | { name: 'viewport', content: 'width=device-width, initial-scale=1' }, 18 | { hid: 'description', name: 'description', content: process.env.npm_package_description || '' } 19 | ], 20 | link: [ 21 | { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' } 22 | ] 23 | }, 24 | /* 25 | ** Customize the progress-bar color 26 | */ 27 | loading: { color: '#fff' }, 28 | /* 29 | ** Global CSS 30 | */ 31 | css: [ 32 | 'highlight.js/styles/github.css' 33 | ], 34 | /* 35 | ** Plugins to load before mounting the App 36 | */ 37 | plugins: [ 38 | ], 39 | /* 40 | ** Nuxt.js dev-modules 41 | */ 42 | buildModules: [ 43 | '@nuxt/typescript-build', 44 | '@nuxtjs/vuetify', 45 | '@nuxtjs/markdownit', 46 | ], 47 | 48 | markdownit: { 49 | highlight: function (str, lang) { 50 | if (lang && hljs.getLanguage(lang)) { 51 | try { 52 | return '
' +
 53 |             hljs.highlight(lang, str, true).value +
 54 |             '
'; 55 | } catch (__) {} 56 | } 57 | 58 | return '
' + md.utils.escapeHtml(str) + '
'; 59 | } 60 | }, 61 | /* 62 | ** Nuxt.js modules 63 | */ 64 | modules: [ 65 | // Doc: https://axios.nuxtjs.org/usage 66 | ], 67 | /* 68 | ** Axios module configuration 69 | ** See https://axios.nuxtjs.org/options 70 | */ 71 | axios: { 72 | }, 73 | /* 74 | ** vuetify module configuration 75 | ** https://github.com/nuxt-community/vuetify-module 76 | */ 77 | vuetify: { 78 | customVariables: ['~/assets/variables.scss'], 79 | theme: { 80 | themes: { 81 | dark: { 82 | primary: colors.blue.darken2, 83 | accent: colors.grey.darken3, 84 | secondary: colors.amber.darken3, 85 | info: colors.teal.lighten1, 86 | warning: colors.amber.base, 87 | error: colors.deepOrange.accent4, 88 | success: colors.green.accent3 89 | } 90 | } 91 | } 92 | }, 93 | /* 94 | ** Build configuration 95 | */ 96 | build: { 97 | /* 98 | ** You can extend webpack config here 99 | */ 100 | 101 | extend (config, ctx) { 102 | 103 | } 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-file-uploader", 3 | "version": "1.1.1", 4 | "description": "Complete and simple file uploader with image compressor in Vue.js. ", 5 | "author": "Ali Jahanapak", 6 | "private": true, 7 | "scripts": { 8 | "dev": "nuxt-ts", 9 | "build": "nuxt-ts build", 10 | "start": "nuxt-ts start", 11 | "generate": "nuxt-ts generate" 12 | }, 13 | "dependencies": { 14 | "@nuxt/typescript-runtime": "^0.4.8", 15 | "@nuxtjs/markdownit": "^1.2.9", 16 | "highlightjs": "^9.16.2", 17 | "markdown-it": "^11.0.0", 18 | "markdown-it-attrs": "^3.0.3", 19 | "markdown-it-div": "^1.1.0", 20 | "nuxt": "^2.15.4" 21 | }, 22 | "devDependencies": { 23 | "@nuxt/typescript-build": "^0.6.7", 24 | "@nuxtjs/vuetify": "^1.0.0", 25 | "eslint": "^7.23.0", 26 | "eslint-plugin-vue": "^7.8.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /pages/README.md: -------------------------------------------------------------------------------- 1 | # OverView 2 |   3 | 4 |   Complete and simple file uploader with image compressor in Vue.js 5 | 6 | 7 | + Choice Theme : Thumbnail, Simple, Table 8 | + Add custom fields (Title, Description, Tags, ...) 9 | + Image compressor 10 | + Select level for Image compressor 11 | + Mange file extensions 12 | + Manage files count 13 | + Manage files size 14 | + Multi languages support 15 | + Add custom language 16 | + Right to left support 17 | + Multi file upload 18 | + Responsive 19 | + ... 20 |   21 | 22 |   23 | # Install 24 | 25 |   26 | 27 |    1. Install package: 28 | ``` bash 29 | $npm install handy-uploader 30 | ``` 31 | 32 | 33 |    2. You should Install Vuetify on project: 34 | 35 | ###    Install on Vue CLI 36 | ``` bash 37 | $vue add vuetify 38 | ``` 39 | ###    Install on Nuxt 40 | ``` bash 41 | $npm install @nuxtjs/vuetify -D 42 | ``` 43 |    Once installed, update your `nuxt.config.js` file to include the Vuetify module in the build. 44 | 45 | ``` js 46 | // nuxt.config.js 47 | 48 | buildModules: [ 49 | '@nuxtjs/vuetify', 50 | ] 51 | ``` 52 | 53 | 54 | ## Build Setup 55 | 56 |   57 | 58 |    Import handy-uploader to project 59 | 60 | ``` js 61 | 69 | ``` 70 | 71 |   72 | 73 | ###    Import handy-uploader to project - Full Example 74 | 75 | ``` html 76 | 90 | 91 | ``` 92 | 93 | ``` js 94 | 105 | ``` 106 | --- 107 | 108 |   109 | 110 | # props 111 |   112 | ###      `documentAttachment` 113 |   114 | 115 |        The documentAttachment return array of uploaded file 116 | 117 | ####         Type:    ` Array ` 118 | 119 | ####         Usage: 120 | ``` html 121 | 124 | 125 | ``` 126 | 127 | ####        return Array: 128 | 129 | ``` js 130 | [ 131 | { 132 | file: { 133 | name: 'file name', 134 | size: 'file size', 135 | base64: 'base64', 136 | format: 'file upload format. for example:image/jpeg;base64' 137 | tags: [], 138 | description: 'file description' 139 | } 140 | } 141 | ] 142 | ``` 143 | --- 144 |   145 | 146 | ###      `fileUploaderType` 147 |   148 | 149 |        The fileUploaderType define file uploader theme : `thumbnaile` , `simple` , `table` 150 | 151 | ####         Type:    ` String ` 152 | 153 | ####         Default:    ` thumbnail ` 154 | 155 | ####         Usage: 156 | ``` html 157 | 160 | 161 | ``` 162 | 163 |      or 164 | 165 | ``` html 166 | 169 | 170 | ``` 171 | 172 |      or 173 | 174 | ``` html 175 | 178 | 179 | ``` 180 | 181 | --- 182 |   183 | 184 | ###      `cardType` 185 |   186 | 187 |         Choose File Uploader Card Type Theme 188 |   189 | 190 |         cardTypes :    `default`  ,     `outlined` ,    `shaped` ,    `raised` ,    `tile` 191 | 192 | ####         Type:    ` String ` 193 | ####         Default:    ` default ` 194 | 195 | ####         Usage: 196 | ``` html 197 | 200 | 201 | ``` 202 | 203 | 204 | --- 205 |   206 | 207 | ###      `fileAccept` 208 |   209 | 210 |         The fileAccept attribute of the input tag, MIME type 211 | 212 | ####         Type:    ` String ` 213 | 214 | ####         Usage: 215 | ``` html 216 | 219 | 220 | ``` 221 | 222 |        `Important: ` If don`t send fileAccept, file uploader accept all file formats. 223 | 224 | 225 | 226 | --- 227 |   228 | 229 | ###      `imageCompressor` 230 |   231 | 232 |         handy-uploader, Uses the Browser's native [canvas.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) API to do the compression work, which means it is lossy compression. General use this to precompress a client image file before upload it. 233 | 234 | ####         Type:    ` Boolean ` 235 | 236 | ####         Default:    ` true ` 237 | 238 | ####         Usage: 239 | ``` html 240 | 243 | 244 | ``` 245 | 246 | --- 247 |   248 | 249 | ###      `imageCompressLevel` 250 |   251 | 252 |         A Number between 0 and 1 indicating image quality. 253 | 254 | ####         Type:    ` Number ` 255 | 256 | ####         Default:    ` 0.5 ` 257 | 258 | ####         Usage: 259 | ``` html 260 | 263 | 264 | ``` 265 | 266 | 267 | --- 268 |   269 | 270 | ###      `maxFileSize` 271 |   272 | 273 |        Maximum of file size upload. sent in prop to KB 274 | 275 | ####         Type:    ` Number ` 276 | 277 | ####         Default:    ` 5120 `  kb 278 | 279 | ####         Usage: 280 | ``` html 281 | 284 | 285 | ``` 286 | 287 | --- 288 |   289 | 290 | ###      `maxFileCount` 291 |   292 | 293 |         Maximum of file upload 294 | 295 | ####         Type:    ` Number ` 296 | 297 | ####         Default:    ` 0 ` 298 | 299 | ####         Usage: 300 | ``` html 301 | 304 | 305 | ``` 306 |        If you dont send maxFileCount, You can upload files without restrictions. 307 | 308 | --- 309 |   310 | 311 | ###      `thumb` 312 |   313 | 314 |         show / hidden thumb for images in `table` and `simple` file uploader 315 | 316 | ####         Type:    ` Boolean ` 317 | 318 | ####         Default:    `true` 319 | 320 | ####         Usage: 321 | ``` html 322 | 325 | 326 | ``` 327 | --- 328 |   329 | 330 | ###      `tableThumbColumn` 331 |   332 | 333 |         show / hidden thumb column in `table` file uploader 334 | 335 | ####         Type:    ` Boolean ` 336 | 337 | ####         Default:    `true` 338 | 339 | ####         Usage: 340 | ``` html 341 | 344 | 345 | ``` 346 | --- 347 |   348 | 349 | ###      `tableFixedHeader` 350 |   351 | 352 |         enable / disable table fixed header 353 | 354 | ####         Type:    ` Boolean ` 355 | 356 | ####         Default:    `true` 357 | 358 | ####         Usage: 359 | ``` html 360 | 363 | 364 | ``` 365 | --- 366 |   367 | 368 | ###      `tableHeight` 369 |   370 | 371 |         Set table height in `px`. 372 | 373 | ####         Type:    ` Number ` 374 | 375 | ####         Default:    `400` 376 | 377 | ####         Usage: 378 | ``` html 379 | 382 | 383 | ``` 384 | 385 | --- 386 |   387 | 388 | ###      `badgeCounter` 389 |   390 | 391 |         Badge file counter state. 392 | 393 | ####         Type:    ` Boolean ` 394 | 395 | ####         Default:    `true` 396 | 397 | ####         Usage: 398 | ``` html 399 | 402 | 403 | ``` 404 | --- 405 |   406 | 407 | ###      `rtlSupport` 408 |   409 | 410 |         Enable RTL support languages. 411 | 412 | ####         Type:    ` Boolean ` 413 | 414 | ####         Default:    `false` 415 | 416 | ####         Usage: 417 | ``` html 418 | 421 | 422 | ``` 423 | 424 | --- 425 |   426 | 427 | ###      `lang` 428 |   429 | 430 |         Change file uploader languages. 431 | 432 |         Examples:   English  `en`  ,   Persian   `fa` ,   French  `fr` ,  Chinese   `ch` ,   Arabic  `ar` 433 | 434 | ####         Type:    ` String ` 435 | 436 | ####         Default:    `en` 437 | 438 | ####         Usage: 439 | ``` html 440 | 443 | 444 | ``` 445 | --- 446 |   447 | 448 | ###      `customLang` 449 |   450 | 451 |         Define Custom language for uploader. 452 | 453 | 454 | ####         Type:    ` Object ` 455 | 456 | ####         Default:    `null` 457 | 458 | ####         Usage: 459 | ``` html 460 | 464 | 465 | ``` 466 | 467 | ``` js 468 | 511 | ``` 512 | --- 513 |   514 | 515 | ###      `btnColor` 516 |   517 | 518 |         change Button color. 519 | 520 | ####         Type:    ` String ` 521 | 522 | ####         Default:    `info` 523 | 524 | ####         Usage: 525 | ``` html 526 | 529 | 530 | ``` 531 | 532 | --- 533 |   534 | 535 | ###      `changeFileName` 536 |   537 | 538 |         Change file name before upload. 539 | 540 | ####         Type:    ` Boolean ` 541 | 542 | ####         Default:    `false` 543 | 544 | ####         Usage: 545 | ``` html 546 | 549 | 550 | ``` 551 | 552 | --- 553 |   554 | 555 | ###      `addFileDescription` 556 |   557 | 558 |         Add file Description before upload. 559 | 560 | ####         Type:    ` Boolean ` 561 | 562 | ####         Default:    `false` 563 | 564 | ####         Usage: 565 | ``` html 566 | 569 | 570 | ``` 571 | 572 | --- 573 |   574 | 575 | ###      `addFileTag` 576 |   577 | 578 |         Add file tags before upload. 579 | 580 | ####         Type:    ` Boolean ` 581 | 582 | ####         Default:    `false` 583 | 584 | ####         Usage: 585 | ``` html 586 | 589 | 590 | ``` 591 | 592 | --- 593 |   594 | 595 | ###      `tags` 596 |   597 | 598 |         Array of file tags. 599 | 600 | ####         Type:    ` Array ` 601 | 602 | ####         Usage: 603 | ``` html 604 | 607 | 608 | ``` 609 | 610 | --- 611 |   612 | 613 | ###      `cols` 614 |   615 | 616 |         Change count of columns. 617 | 618 | ####         Type:    ` Number ` 619 | ####         Default:    ` 4 ` 620 | 621 | ####         Usage: 622 | ``` html 623 | 626 | 627 | ``` 628 | 629 | --- 630 |   631 | 632 | ###      `editPermission` 633 |   634 | 635 |         Set edit Permission for edit attachment details. 636 | 637 | ####         Type:    ` Boolean ` 638 | ####         Default:    ` true ` 639 | 640 | ####         Usage: 641 | ``` html 642 | 645 | 646 | ``` 647 | 648 | --- 649 |   650 | 651 | ###      `deletePermission` 652 |   653 | 654 |         Set delete Permission for delete attachment details. 655 | 656 | ####         Type:    ` Boolean ` 657 | ####         Default:    ` true ` 658 | 659 | ####         Usage: 660 | ``` html 661 | 664 | 665 | ``` 666 | 667 | --- 668 |   669 | 670 | 671 | # Code Examples 672 |   673 | ###      Thumbnail 674 | 675 | ``` html 676 | 689 | 690 | ``` 691 | 692 | ``` js 693 | 704 | ``` 705 | 706 |      `handyAttachments` The Array you define for file uploader 707 | 708 |   709 | 710 | --- 711 | 712 |   713 | ###      Simple 714 | 715 | ``` html 716 | 730 | 731 | ``` 732 | 733 | ``` js 734 | 745 | ``` 746 | 747 |      `handyAttachments` The Array you define for file uploader 748 | 749 |   750 | 751 | --- 752 | 753 |   754 | ###      Table 755 | 756 | ``` html 757 | 774 | 775 | ``` 776 | 777 | ``` js 778 | 789 | ``` 790 | 791 |      `handyAttachments` The Array you define for file uploader 792 | -------------------------------------------------------------------------------- /pages/documentation.vue: -------------------------------------------------------------------------------- 1 | 96 | 97 | 164 | 184 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /pages/simple.vue: -------------------------------------------------------------------------------- 1 | 177 | 178 | 285 | -------------------------------------------------------------------------------- /pages/table.vue: -------------------------------------------------------------------------------- 1 | 174 | 175 | 274 | -------------------------------------------------------------------------------- /pages/thumbnail.vue: -------------------------------------------------------------------------------- 1 | 170 | 171 | 304 | -------------------------------------------------------------------------------- /plugins/README.md: -------------------------------------------------------------------------------- 1 | # PLUGINS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains Javascript plugins that you want to run before mounting the root Vue.js application. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/plugins). 8 | -------------------------------------------------------------------------------- /static/README.md: -------------------------------------------------------------------------------- 1 | # STATIC 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your static files. 6 | Each file inside this directory is mapped to `/`. 7 | Thus you'd want to delete this README.md before deploying to production. 8 | 9 | Example: `/static/robots.txt` is mapped as `/robots.txt`. 10 | 11 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static). 12 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alijahanpak/vue-file-uploader/5ad1d24ed10817664e8907cc90a4013fea46677f/static/favicon.ico -------------------------------------------------------------------------------- /static/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alijahanpak/vue-file-uploader/5ad1d24ed10817664e8907cc90a4013fea46677f/static/icon.png -------------------------------------------------------------------------------- /static/v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alijahanpak/vue-file-uploader/5ad1d24ed10817664e8907cc90a4013fea46677f/static/v.png -------------------------------------------------------------------------------- /static/vue-file-uploader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alijahanpak/vue-file-uploader/5ad1d24ed10817664e8907cc90a4013fea46677f/static/vue-file-uploader.png -------------------------------------------------------------------------------- /static/vuetify-logo.svg: -------------------------------------------------------------------------------- 1 | Artboard 46 2 | -------------------------------------------------------------------------------- /store/README.md: -------------------------------------------------------------------------------- 1 | # STORE 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your Vuex Store files. 6 | Vuex Store option is implemented in the Nuxt.js framework. 7 | 8 | Creating a file in this directory automatically activates the option in the framework. 9 | 10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store). 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "lib": [ 7 | "esnext", 8 | "esnext.asynciterable", 9 | "dom" 10 | ], 11 | "esModuleInterop": true, 12 | "allowJs": true, 13 | "sourceMap": true, 14 | "strict": true, 15 | "noEmit": true, 16 | "experimentalDecorators": true, 17 | "baseUrl": ".", 18 | "paths": { 19 | "~/*": [ 20 | "./*" 21 | ], 22 | "@/*": [ 23 | "./*" 24 | ] 25 | }, 26 | "types": [ 27 | "@types/node", 28 | "@nuxt/types" 29 | ] 30 | }, 31 | "exclude": [ 32 | "node_modules", 33 | ".nuxt", 34 | "dist" 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /vue-shim.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.vue" { 2 | import Vue from 'vue' 3 | export default Vue 4 | } 5 | --------------------------------------------------------------------------------