Trent Larson
2 weeks ago
7 changed files with 167 additions and 77 deletions
@ -0,0 +1,130 @@ |
|||
<template> |
|||
<QuickNav selected="Contacts" /> |
|||
<TopMessage /> |
|||
|
|||
<section id="ContactEdit" class="p-6 max-w-3xl mx-auto"> |
|||
<div id="ViewBreadcrumb" class="mb-8"> |
|||
<h1 class="text-4xl text-center font-light relative px-7"> |
|||
<!-- Back --> |
|||
<button |
|||
@click="$router.go(-1)" |
|||
class="text-lg text-center px-2 py-1 absolute -left-2 -top-1" |
|||
> |
|||
<fa icon="chevron-left" class="fa-fw" /> |
|||
</button> |
|||
{{ contact.name || AppString.NO_CONTACT_NAME }} |
|||
</h1> |
|||
</div> |
|||
|
|||
<!-- Contact Name --> |
|||
<div class="mt-4 flex"> |
|||
<label |
|||
for="contactName" |
|||
class="block text-sm font-medium text-gray-700 mt-2" |
|||
> |
|||
Name |
|||
</label> |
|||
<input |
|||
type="text" |
|||
class="block w-full ml-2 mt-1 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500" |
|||
v-model="contactName" |
|||
/> |
|||
</div> |
|||
|
|||
<!-- Contact Notes --> |
|||
<div class="mt-4"> |
|||
<label for="contactNotes" class="block text-sm font-medium text-gray-700"> |
|||
Notes |
|||
</label> |
|||
<textarea |
|||
id="contactNotes" |
|||
rows="4" |
|||
class="block w-full mt-1 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500" |
|||
v-model="contactNotes" |
|||
></textarea> |
|||
</div> |
|||
|
|||
<!-- Save Button --> |
|||
<div class="mt-4 flex justify-between"> |
|||
<button |
|||
class="px-4 py-2 bg-blue-500 text-white rounded-md" |
|||
@click="saveEdit" |
|||
> |
|||
Save |
|||
</button> |
|||
<button |
|||
class="ml-4 px-4 py-2 bg-slate-500 text-white rounded-md" |
|||
@click="$router.go(-1)" |
|||
> |
|||
Cancel |
|||
</button> |
|||
</div> |
|||
</section> |
|||
</template> |
|||
|
|||
<script lang="ts"> |
|||
import { Component, Vue } from "vue-facing-decorator"; |
|||
import { RouteLocation, Router } from "vue-router"; |
|||
|
|||
import QuickNav from "@/components/QuickNav.vue"; |
|||
import TopMessage from "@/components/TopMessage.vue"; |
|||
import { AppString, NotificationIface } from "@/constants/app"; |
|||
import { db } from "@/db/index"; |
|||
import { Contact } from "@/db/tables/contacts"; |
|||
|
|||
@Component({ |
|||
components: { |
|||
QuickNav, |
|||
TopMessage, |
|||
}, |
|||
}) |
|||
export default class ContactEditView extends Vue { |
|||
$notify!: (notification: NotificationIface, timeout?: number) => void; |
|||
|
|||
contact: Contact = { |
|||
did: "", |
|||
name: "", |
|||
notes: "", |
|||
}; |
|||
contactName = ""; |
|||
contactNotes = ""; |
|||
|
|||
AppString = AppString; |
|||
|
|||
async created() { |
|||
const contactDid = (this.$route as RouteLocation).params.did; |
|||
if (!contactDid) { |
|||
this.$notify({ |
|||
group: "alert", |
|||
type: "error", |
|||
title: "Contact Not Found", |
|||
text: "There is no contact with that DID.", |
|||
}); |
|||
(this.$router as Router).push({ path: "/contacts" }); |
|||
return; |
|||
} |
|||
const contact = await db.contacts.get(contactDid); |
|||
if (contact) { |
|||
this.contact = contact; |
|||
this.contactName = contact.name || ""; |
|||
this.contactNotes = contact.notes || ""; |
|||
} |
|||
} |
|||
|
|||
async saveEdit() { |
|||
await db.contacts.update(this.contact.did, { |
|||
name: this.contactName, |
|||
notes: this.contactNotes, |
|||
}); |
|||
this.$notify({ |
|||
group: "alert", |
|||
type: "success", |
|||
title: "Notes Saved", |
|||
text: "The contact notes have been updated successfully.", |
|||
}); |
|||
(this.$router as Router).push({ |
|||
path: "/did/" + encodeURIComponent(this.contact.did), |
|||
}); |
|||
} |
|||
} |
|||
</script> |
Loading…
Reference in new issue