diff options
author | Phil Hughes <me@iamphill.com> | 2017-10-31 10:47:10 +0000 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2017-10-31 10:47:10 +0000 |
commit | 68d1e9d1c42f34d3fb2d58779d862dcf47d5f17e (patch) | |
tree | 5bf4287612a089292ea950aff0e86f2ee158b2e2 /app/assets/javascripts/repo/components/new_dropdown/upload.vue | |
parent | 7e78db6e04c3760c90d676e9a797b1b16b1dff7b (diff) | |
download | gitlab-ce-68d1e9d1c42f34d3fb2d58779d862dcf47d5f17e.tar.gz |
Upload files through the multi-file editor
Diffstat (limited to 'app/assets/javascripts/repo/components/new_dropdown/upload.vue')
-rw-r--r-- | app/assets/javascripts/repo/components/new_dropdown/upload.vue | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/app/assets/javascripts/repo/components/new_dropdown/upload.vue b/app/assets/javascripts/repo/components/new_dropdown/upload.vue new file mode 100644 index 00000000000..cbea9c08249 --- /dev/null +++ b/app/assets/javascripts/repo/components/new_dropdown/upload.vue @@ -0,0 +1,67 @@ +<script> + import eventHub from '../../event_hub'; + + export default { + props: { + currentPath: { + type: String, + required: true, + }, + }, + methods: { + createFile(target, file, isText) { + const { name } = file; + const nameWithPath = `${this.currentPath !== '' ? `${this.currentPath}/` : ''}${name}`; + let { result } = target; + + if (!isText) { + result = result.split('base64,')[1]; + } + + eventHub.$emit('createNewEntry', { + name: nameWithPath, + type: 'blob', + content: result, + toggleModal: false, + base64: !isText, + }, isText); + }, + readFile(file) { + const reader = new FileReader(); + const isText = file.type.match(/text.*/) !== null; + + reader.addEventListener('load', e => this.createFile(e.target, file, isText), { once: true }); + + if (isText) { + reader.readAsText(file); + } else { + reader.readAsDataURL(file); + } + }, + openFile() { + Array.from(this.$refs.fileUpload.files).forEach(file => this.readFile(file)); + }, + }, + mounted() { + this.$refs.fileUpload.addEventListener('change', this.openFile); + }, + beforeDestroy() { + this.$refs.fileUpload.removeEventListener('change', this.openFile); + }, + }; +</script> + +<template> + <label + role="button" + class="menu-item" + > + {{ __('Upload file') }} + <input + id="file-upload" + type="file" + class="hidden" + ref="fileUpload" + /> + </label> +</template> |