/
TodoInput.vue
60 lines (56 loc) · 2.18 KB
/
TodoInput.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<style scoped>
</style>
<template>
<div class="row">
<div class="col s8 offset-s2">
<div class="card brown lighten-5">
<div class="card-content brown-text">
<div class="row">
<div class="input-field col s7">
<input id="body-input" type="text" :class="{invalid: !isTodoInputValid}" placeholder="buy milk" v-model="todoInput" @keyup.enter="addTodo">
<label data-error="required" class="active" for="body-input">New Todo</label>
</div>
<div class="input-field col s3">
<input id="due-date-input" type="text" :class="{invalid: !isDueDateInputValid}" placeholder="YYYY-MM-DD" v-model="dueDateInput" @keyup.enter="addTodo">
<label data-error="YYYY-MM-DD" class="active" for="due-date-input">Due Date</label>
</div>
<div class="col s2">
<a class="btn-floating btn-large waves-effect waves-light brown dark" @click="addTodo"><i class="material-icons">add</i></a>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {AddTodoCommand} from '../../../target/scala-2.12/scalajstodo-fastopt'
export default {
beforeCreate(){
this.addTodoCommand = new AddTodoCommand;
},
data(){
return {
todoInput: "",
dueDateInput: "",
isTodoInputValid: true,
isDueDateInputValid: true
};
},
watch: {
todoInput(v){
this.addTodoCommand.todoInput = v;
this.isTodoInputValid = this.addTodoCommand.isTodoInputValid;
},
dueDateInput(v){
this.addTodoCommand.dueDateInput = v;
this.isDueDateInputValid = this.addTodoCommand.isDueDateInputValid;
}
},
methods:{
addTodo(){
this.addTodoCommand.execute();
}
}
}
</script>