44 <h2 class =" subtitle" >Name of Countries</h2 >
55 <div class =" columns" >
66 <div class =" column" >
7- < form @submit.prevent = " add(name) " >
7+
88 <div class =" field" >
99 <label class =" label" >Name</label >
1010 <div class =" control" >
1111 <input type =" text" class =" input" v-model =" name" required >
1212 </div >
1313 </div >
14- <div class =" control" >
14+ <div class =" control" :class = " {hidden: !isHidden} " @click = " add(name) " >
1515 <button class =" button is-link" >Submit</button >
1616 </div >
17- </form >
17+ <div class =" control" :class =" {hidden: isHidden}" @click =" update(name)" >
18+ <button class =" button is-link" >Update</button >
19+ </div >
20+
1821 </div >
1922 <div class =" column" >
2023 <ul class =" panel" >
2124 <li class =" panel-heading" >Countries List</li >
2225 <li class =" panel-block" v-for =" country in countries" :key =" country.id" >
2326 {{ country.name }} /   ;
24- <button class =" button is-info" >Edit</button >   ;
27+ <button class =" button is-info" @click = " show(country.id) " >Edit</button >   ;
2528 <button class =" button is-danger" @click =" remove(country.id, country.name)" >Delete</button >
2629 </li >
2730 </ul >
3437import { mapState , mapActions } from ' vuex'
3538
3639export default {
37- computed: mapState ([
38- ' countries'
39- ]),
40- methods: {
41- add (name ) {
42- this .$store .dispatch (' store' , name)
43- this .name = ' '
44- },
45- remove (id , name ) {
46- if (confirm (' Do you want delete ' + name + ' ?' )) {
47- this .$store .dispatch (' remove' , id)
48- }
49- }
50- }
40+ data : function () {
41+ return {
42+ name: ' ' ,
43+ isHidden: true ,
44+ activeItem: null
45+ }
46+ },
47+ computed: mapState ([
48+ ' countries'
49+ ]),
50+ methods: {
51+ add (name ) {
52+ this .$store .dispatch (' store' , name)
53+ this .name = ' '
54+ },
55+ show (id ) {
56+ this .$store .dispatch (' show' , id).then ((res ) => {
57+ this .name = res .name
58+ this .activeItem = res
59+ this .isHidden = false
60+ })
61+ },
62+ update () {
63+ this .$store .dispatch (' update' , {
64+ id: this .activeItem .id ,
65+ name: this .name
66+ })
67+ this .name = ' '
68+ this .isHidden = true
69+ },
70+ remove (id , name ) {
71+ if (confirm (' Do you want delete ' + name + ' ?' )) {
72+ this .$store .dispatch (' remove' , id)
73+ }
74+ }
75+ }
5176}
52- </script >
77+ </script >
78+
79+ <style type="text/css">
80+ .hidden {
81+ display : none ;
82+ }
83+ </style >
0 commit comments