Files
Blizzard c72cf24f56
ci-cd / verify (push) Successful in 5s
ci-cd / deploy (push) Skipped
Complete core mini program flows
2026-10-04 09:26:58 +08:00

35 lines
1011 B
JavaScript

Component({
properties: {
pets: { type: Array, value: [] },
selected: { type: Array, value: [] },
disabled: { type: Boolean, value: false },
},
data: { viewPets: [] },
observers: {
"pets,selected": function (pets, selected) {
this.setData({
viewPets: (pets || []).map((p) => ({
...p,
chosen: (selected || []).includes(p.id),
})),
});
},
},
methods: {
toggle(e) {
if (this.data.disabled) return;
const id = e.currentTarget.dataset.id;
const selected = this.data.selected.includes(id)
? this.data.selected.filter((x) => x !== id)
: [...this.data.selected, id];
this.triggerEvent("change", { selected });
},
selectAll() {
if (this.data.disabled) return;
const ids = this.data.pets.map((pet) => pet.id);
const allSelected = ids.every((id) => this.data.selected.includes(id));
this.triggerEvent("change", { selected: allSelected ? [] : ids });
},
},
});