aboutsummaryrefslogtreecommitdiff
path: root/src/components/post_status_form
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/post_status_form')
-rw-r--r--src/components/post_status_form/post_status_form.js16
-rw-r--r--src/components/post_status_form/post_status_form.vue24
2 files changed, 36 insertions, 4 deletions
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index f764a01b..b17fdaa1 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -1,5 +1,6 @@
import statusPoster from '../../services/status_poster/status_poster.service.js'
import MediaUpload from '../media_upload/media_upload.vue'
+import fileTypeService from '../../services/file_type/file_type.service.js'
import { reject, map, uniqBy } from 'lodash'
@@ -36,6 +37,7 @@ const PostStatusForm = {
}
return {
+ submitDisabled: false,
newStatus: {
status: statusText,
files: []
@@ -58,6 +60,20 @@ const PostStatusForm = {
},
addMediaFile (fileInfo) {
this.newStatus.files.push(fileInfo)
+ this.enableSubmit()
+ },
+ removeMediaFile (fileInfo) {
+ let index = this.newStatus.files.indexOf(fileInfo)
+ this.newStatus.files.splice(index, 1)
+ },
+ disableSubmit () {
+ this.submitDisabled = true
+ },
+ enableSubmit () {
+ this.submitDisabled = false
+ },
+ type (fileInfo) {
+ return fileTypeService.fileType(fileInfo.mimetype)
}
}
}
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 476ee51e..b18e5d80 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -1,17 +1,21 @@
<template>
<div class="post-status-form">
- <form v-on:submit.prevent="postStatus(newStatus)">
+ <form @submit.prevent="postStatus(newStatus)">
<div class="form-group" >
<textarea v-model="newStatus.status" placeholder="Just landed in L.A." rows="3" class="form-control"></textarea>
</div>
<div class="attachments">
<div class="attachment" v-for="file in newStatus.files">
- <img class="thumbnail media-upload" :src="file.image"></img>
+ <img class="thumbnail media-upload" :src="file.image" v-if="type(file) === 'image'"></img>
+ <video v-if="type(file) === 'video'" :src="file.image" controls></video>
+ <audio v-if="type(file) === 'audio'" :src="file.image" controls></audio>
+ <a v-if="type(file) === 'unknown'" :href="file.image">{{file.url}}</a>
+ <i class="fa icon-cancel" @click="removeMediaFile(file)"></i>
</div>
</div>
<div class='form-bottom'>
- <media-upload v-on:uploaded="addMediaFile"></media-upload>
- <button type="submit" class="btn btn-default" >Submit</button>
+ <media-upload @uploading="disableSubmit" @uploaded="addMediaFile" @upload-failed="enableSubmit"></media-upload>
+ <button :disabled="submitDisabled" type="submit" class="btn btn-default">Submit</button>
</div>
</form>
</div>
@@ -45,6 +49,18 @@
flex-direction: column;
padding: 0.5em;
}
+
+ .btn {
+ cursor: pointer;
+ }
+
+ .btn[disabled] {
+ cursor: not-allowed;
+ }
+
+ .icon-cancel {
+ cursor: pointer;
+ }
}
</style>