Lesson 14, pt 1 - Bulk Action Bar Buttons

This commit is contained in:
Jeffrey Biles
2020-08-18 01:04:06 -07:00
parent 9c5275e7f6
commit 7c97ea48e5
3 changed files with 13 additions and 8 deletions

View File

@@ -8,8 +8,8 @@
</span> </span>
<span class="buttons"> <span class="buttons">
<button @click="emailSelection.markRead">Mark Read</button> <button @click="emailSelection.markRead">Mark Read</button>
<button @click="emailSelection.markUnread()">Mark Unread</button> <button @click="emailSelection.markUnread">Mark Unread</button>
<button @click="emailSelection.archive()">Archive</button> <button @click="emailSelection.archive">Archive</button>
</span> </span>
</div> </div>
</template> </template>

View File

@@ -32,7 +32,7 @@
import MailView from '@/components/MailView.vue'; import MailView from '@/components/MailView.vue';
import ModalView from '@/components/ModalView.vue'; import ModalView from '@/components/ModalView.vue';
import BulkActionBar from '@/components/BulkActionBar.vue'; import BulkActionBar from '@/components/BulkActionBar.vue';
import { reactive } from 'vue'; import { reactive, ref } from 'vue';
import useEmailSelection from '@/composables/use-email-selection' import useEmailSelection from '@/composables/use-email-selection'
export default { export default {
@@ -42,8 +42,8 @@
return { return {
emailSelection: useEmailSelection(), emailSelection: useEmailSelection(),
format, format,
emails, emails: ref(emails),
openedEmail: null openedEmail: ref(null)
} }
}, },
components: { components: {

View File

@@ -19,19 +19,24 @@ export const useEmailSelection = function(){
emails.add(email) emails.add(email)
}) })
} }
let markRead = () => { let forSelected = (fn) => {
emails.forEach((email) => { emails.forEach((email) => {
email.read = true; fn(email);
axios.put(`http://localhost:3000/emails/${email.id}`, email) axios.put(`http://localhost:3000/emails/${email.id}`, email)
}) })
} }
let markRead = () => forSelected(e => e.read = true)
let markUnread = () => forSelected(e => e.read = false)
let archive = () => { forSelected(e => e.archived = true); clear() }
return { return {
emails, emails,
toggle, toggle,
clear, clear,
addMultiple, addMultiple,
markRead markRead,
markUnread,
archive
} }
} }