Archived Emails Screen

This commit is contained in:
Jeffrey Biles
2020-09-06 16:54:38 -07:00
parent 040234fedc
commit 366f9e8901
2 changed files with 26 additions and 10 deletions

View File

@@ -30,10 +30,10 @@
setup(props){ setup(props){
let emailSelection = useEmailSelection(); let emailSelection = useEmailSelection();
let numberSelected = computed(() => emailSelection.emails.size) let numberSelected = computed(() => emailSelection.emails.size)
let numberEmails = props.emails.length let numberEmails = computed(() => props.emails.length)
let allEmailsSelected = computed(() => numberSelected.value === numberEmails) let allEmailsSelected = computed(() => numberSelected.value === numberEmails.value)
let someEmailsSelected = computed(() => { let someEmailsSelected = computed(() => {
return numberSelected.value > 0 && numberSelected.value < numberEmails return numberSelected.value > 0 && numberSelected.value < numberEmails.value
}) })
let bulkSelect = function(){ let bulkSelect = function(){
if(allEmailsSelected.value) { if(allEmailsSelected.value) {

View File

@@ -1,8 +1,14 @@
<template> <template>
<BulkActionBar :emails="unarchivedEmails" /> <button @click="selectedScreen = 'inbox'"
:disabled="selectedScreen == 'inbox'">Inbox</button>
<button @click="selectedScreen = 'archive'"
:disabled="selectedScreen == 'archive'">Archived</button>
<BulkActionBar :emails="filteredEmails" />
<table class="mail-table"> <table class="mail-table">
<tbody> <tbody>
<tr v-for="email in unarchivedEmails" <tr v-for="email in filteredEmails"
:key="email.id" :key="email.id"
:class="['clickable', email.read ? 'read' : '']"> :class="['clickable', email.read ? 'read' : '']">
<td> <td>
@@ -21,6 +27,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<ModalView v-if="openedEmail" @closeModal="openedEmail = null"> <ModalView v-if="openedEmail" @closeModal="openedEmail = null">
<MailView :email="openedEmail" @changeEmail="changeEmail" /> <MailView :email="openedEmail" @changeEmail="changeEmail" />
</ModalView> </ModalView>
@@ -43,13 +50,14 @@
emailSelection: useEmailSelection(), emailSelection: useEmailSelection(),
format, format,
emails: ref(emails), emails: ref(emails),
openedEmail: ref(null) openedEmail: ref(null),
selectedScreen: ref('inbox')
} }
}, },
components: { components: {
MailView, MailView,
ModalView, ModalView,
BulkActionBar BulkActionBar,
}, },
computed: { computed: {
sortedEmails() { sortedEmails() {
@@ -57,11 +65,19 @@
return e1.sentAt < e2.sentAt ? 1 : -1 return e1.sentAt < e2.sentAt ? 1 : -1
}) })
}, },
unarchivedEmails() { filteredEmails() {
if(this.selectedScreen == 'inbox') {
return this.sortedEmails.filter(e => !e.archived) return this.sortedEmails.filter(e => !e.archived)
} else {
return this.sortedEmails.filter(e => e.archived)
}
} }
}, },
methods: { methods: {
selectScreen(newScreen) {
this.selectedScreen = newScreen
this.emailSelection.clear()
},
openEmail(email) { openEmail(email) {
this.openedEmail = email this.openedEmail = email
@@ -82,7 +98,7 @@
if(closeModal) { this.openedEmail = null } if(closeModal) { this.openedEmail = null }
if(changeIndex) { if(changeIndex) {
let emails = this.unarchivedEmails let emails = this.filteredEmails
let currentIndex = emails.indexOf(this.openedEmail) let currentIndex = emails.indexOf(this.openedEmail)
let newEmail = emails[currentIndex + changeIndex] let newEmail = emails[currentIndex + changeIndex]
this.openEmail(newEmail) this.openEmail(newEmail)