| author | Alexandre Segura <mex.zktk@gmail.com> |
| Wed, 22 Feb 2017 18:32:39 +0100 | |
| changeset 351 | 2d5557c01f95 |
| parent 320 | 81945eedc63f |
| child 400 | c85505149eea |
| permissions | -rw-r--r-- |
|
320
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
1 |
<template> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
2 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
3 |
<form> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
4 |
<button @click="close" type="button" class="close" data-dismiss="alert" aria-label="Close"> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
5 |
<span aria-hidden="true">×</span> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
6 |
</button> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
7 |
<div class="form-group" v-bind:class="titleFormGroup" style="clear: both;"> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
8 |
<label class="control-label">Titre</label> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
9 |
<input name="title" v-model="title" type="text" class="form-control input-sm" placeholder="Donnez un titre court"> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
10 |
</div> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
11 |
<div class="form-group"> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
12 |
<label class="control-label">Description</label> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
13 |
<textarea name="description" v-model="description" class="form-control input-sm" placeholder="Décrivez ce que vous voyez"></textarea> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
14 |
</div> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
15 |
<div class="form-group"> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
16 |
<label class="control-label">Mots-clé</label> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
17 |
<tag-list ref="taglist" v-bind:original-tags="originalTags"></tag-list> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
18 |
</div> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
19 |
<button @click="save" class="btn btn-block btn-sm btn-primary">Valider</button> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
20 |
</form> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
21 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
22 |
</template> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
23 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
24 |
<script> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
25 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
26 |
import TagList from '../tagform/TagList.vue' |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
27 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
28 |
export default {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
29 |
props: [ |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
30 |
'original-title', |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
31 |
'original-description', |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
32 |
'original-tags' |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
33 |
], |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
34 |
components: {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
35 |
'tag-list': TagList |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
36 |
}, |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
37 |
data() {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
38 |
return {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
39 |
title: '', |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
40 |
description: '', |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
41 |
tags: [], |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
42 |
error: false |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
43 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
44 |
}, |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
45 |
computed: {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
46 |
titleFormGroup: function() {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
47 |
return {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
48 |
'has-error': this.error |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
49 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
50 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
51 |
}, |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
52 |
mounted() {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
53 |
if (this.originalTitle) {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
54 |
this.title = this.originalTitle; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
55 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
56 |
if (this.originalDescription) {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
57 |
this.description = this.originalDescription; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
58 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
59 |
this.$on('error', (err) => {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
60 |
if (err.title) {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
61 |
this.error = true; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
62 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
63 |
}); |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
64 |
}, |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
65 |
methods: {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
66 |
close: function(e) {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
67 |
e.preventDefault(); |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
68 |
this.$emit('close');
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
69 |
}, |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
70 |
save: function(e) {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
71 |
e.preventDefault(); |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
72 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
73 |
this.error = false; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
74 |
if (this.title.trim().length === 0) {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
75 |
this.$emit('error', {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
76 |
title: true |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
77 |
}); |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
78 |
return; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
79 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
80 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
81 |
this.$emit('save', {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
82 |
title: this.title, |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
83 |
description: this.description, |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
84 |
tags: this.$refs.taglist.tags |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
85 |
}); |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
86 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
87 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
88 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
89 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
90 |
</script> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
91 |
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
92 |
<style> |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
93 |
.popover {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
94 |
min-width: 300px; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
95 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
96 |
.popover-content .form-group {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
97 |
margin-bottom: 10px; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
98 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
99 |
.popover-content .form-group label {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
100 |
font-size: 12px; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
101 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
102 |
.popover-content .taglist {
|
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
103 |
margin: 10px 0 15px; |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
104 |
} |
|
81945eedc63f
Introduce refactored components using Vue.js.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
105 |
</style> |