laravel
🚀
Vuejs Checkboxes
Gist to remind me how do do this.
const emit = defineEmits(['checked'])
const checked = ref(new Set())
watch(checked, (newValue, oldValue) => {
emit('checked', [...newValue])
});
const isChecked = (item) => {
console.log("is checked", item);
return [...checked.value].some(existingItem => existingItem === item);
}
const toggleAll = () => {
if ([...props.facebook_data.data].every(item => checked.value.has(item.id))) {
for (const item of props.facebook_data.data) {
checked.value.delete(item.id);
}
} else {
for (const item of props.facebook_data.data) {
if (!checked.value.has(item.id)) {
checked.value.add(item.id);
}
}
}
}
const toggleChecked = (item) => {
const existingItem = [...checked.value].find(existingItem => existingItem === item);
if (existingItem) {
checked.value.delete(existingItem);
} else {
checked.value.add(item);
}
}
This sets up the data:
<td class="whitespace-nowrap px-3 py-4 text-sm ">
<input type="checkbox"
:checked="isChecked(item.id)"
@click="toggleChecked(item.id)">
</td>
Lastly the check all
<input type="checkbox"
@click="toggleAll()">
<TableDark>