mirror of
https://github.com/kevin-DL/build-gmail-clone-with-vue-3.git
synced 2026-01-23 15:41:33 +00:00
Lesson 13, pt 2 - interactive select-all button
This commit is contained in:
@@ -2,7 +2,8 @@
|
|||||||
<div>
|
<div>
|
||||||
<input type="checkbox"
|
<input type="checkbox"
|
||||||
:checked="allEmailsSelected"
|
:checked="allEmailsSelected"
|
||||||
:class="[someEmailsSelected ? 'partial-check' : '']" />
|
:class="[someEmailsSelected ? 'partial-check' : '']"
|
||||||
|
@click="bulkSelect" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -18,9 +19,17 @@
|
|||||||
let someEmailsSelected = computed(() => {
|
let someEmailsSelected = computed(() => {
|
||||||
return numberSelected.value > 0 && numberSelected.value < numberEmails
|
return numberSelected.value > 0 && numberSelected.value < numberEmails
|
||||||
})
|
})
|
||||||
|
let bulkSelect = function(){
|
||||||
|
if(allEmailsSelected.value) {
|
||||||
|
emailSelection.clear()
|
||||||
|
} else {
|
||||||
|
emailSelection.addMultiple(props.emails)
|
||||||
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
allEmailsSelected,
|
allEmailsSelected,
|
||||||
someEmailsSelected
|
someEmailsSelected,
|
||||||
|
bulkSelect
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<input type="checkbox"
|
<input type="checkbox"
|
||||||
@click="emailSelection.toggle(email)"
|
@click="emailSelection.toggle(email)"
|
||||||
:selected="emailSelection.emails.has(email)" />
|
:checked="emailSelection.emails.has(email)" />
|
||||||
</td>
|
</td>
|
||||||
<td @click="openEmail(email)">{{email.from}}</td>
|
<td @click="openEmail(email)">{{email.from}}</td>
|
||||||
<td @click="openEmail(email)">
|
<td @click="openEmail(email)">
|
||||||
|
|||||||
@@ -10,10 +10,20 @@ export const useEmailSelection = function(){
|
|||||||
emails.add(email)
|
emails.add(email)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let clear = () => {
|
||||||
|
emails.clear()
|
||||||
|
}
|
||||||
|
let addMultiple = (newEmails) => {
|
||||||
|
newEmails.forEach((email) => {
|
||||||
|
emails.add(email)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
emails,
|
emails,
|
||||||
toggle
|
toggle,
|
||||||
|
clear,
|
||||||
|
addMultiple
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user