Lesson 13, pt 2 - interactive select-all button

This commit is contained in:
Jeffrey Biles
2020-08-17 22:38:15 -07:00
parent 41bff32ad8
commit f094e5db1a
3 changed files with 24 additions and 5 deletions

View File

@@ -2,7 +2,8 @@
<div>
<input type="checkbox"
:checked="allEmailsSelected"
:class="[someEmailsSelected ? 'partial-check' : '']" />
:class="[someEmailsSelected ? 'partial-check' : '']"
@click="bulkSelect" />
</div>
</template>
@@ -17,10 +18,18 @@
let allEmailsSelected = computed(() => numberSelected.value === numberEmails)
let someEmailsSelected = computed(() => {
return numberSelected.value > 0 && numberSelected.value < numberEmails
})
})
let bulkSelect = function(){
if(allEmailsSelected.value) {
emailSelection.clear()
} else {
emailSelection.addMultiple(props.emails)
}
}
return {
allEmailsSelected,
someEmailsSelected
someEmailsSelected,
bulkSelect
}
},
props: {

View File

@@ -8,7 +8,7 @@
<td>
<input type="checkbox"
@click="emailSelection.toggle(email)"
:selected="emailSelection.emails.has(email)" />
:checked="emailSelection.emails.has(email)" />
</td>
<td @click="openEmail(email)">{{email.from}}</td>
<td @click="openEmail(email)">

View File

@@ -10,10 +10,20 @@ export const useEmailSelection = function(){
emails.add(email)
}
}
let clear = () => {
emails.clear()
}
let addMultiple = (newEmails) => {
newEmails.forEach((email) => {
emails.add(email)
})
}
return {
emails,
toggle
toggle,
clear,
addMultiple
}
}