Contacts.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <div>
  3. <h1>Contacts</h1>
  4. <p>Cards in Contacts&#58; {{numContactsCards}}</p>
  5. <div v-if="numContactsCards > 0">
  6. <Deck :deck="contactsCards"
  7. :cpath="`/contacts/card/`"/>
  8. </div>
  9. <hr />
  10. <h2>Add More</h2>
  11. <form @submit.prevent="addContactsCard(card); card={name: '', email: '', phone: '', fingerprint: ''}">
  12. <input type="text" placeholder="Name" v-model="card.name" required />
  13. <input type="text" placeholder="Email" v-model="card.email" />
  14. <input type="text" placeholder="Phone" v-model="card.phone" /><br />
  15. <input type="text" placeholder="Key Fingerprint" v-model="card.fingerprint" />
  16. <button>Submit</button>
  17. </form>
  18. <hr />
  19. <form @submit.prevent="addContactsCardFromBlob(blob); blob=''">
  20. <input type="text" placeholder="json blob" v-model="blob" />
  21. <button>Submit</button>
  22. </form>
  23. <p>Try this example&#58;</p>
  24. <p>
  25. <pre>{{JSON.stringify({
  26. name:"blarf"
  27. ,email:"foo@blamo.com"
  28. ,phone:"555-1234"
  29. ,fingerprint:"0000 0000 0000 0000 0000 0000 0000 0000 0000 0000"}
  30. , null, 1)}}</pre>
  31. </p>
  32. </div>
  33. </template>
  34. <script>
  35. import {mapState, mapMutations, mapGetters} from "vuex"
  36. import Deck from '@/components/Deck.vue'
  37. export default {
  38. name: "Contacts",
  39. data() {
  40. return {
  41. card: {name: "", email: "", phone: "", fingerprint: ""},
  42. blob: ""
  43. }
  44. },
  45. components: { Deck },
  46. computed: {
  47. ...mapState([
  48. "contactsCards",
  49. ]),
  50. ...mapGetters([
  51. "numContactsCards"
  52. ])
  53. },
  54. methods: {
  55. ...mapMutations([
  56. "addContactsCard",
  57. "addContactsCardFromBlob",
  58. ])
  59. }
  60. }
  61. </script>
  62. <style scoped>
  63. </style>