import { computed } from "@vue/reactivity"; import { ref } from "vue"; export default function useActiveBtn(type = "single") { // default buttons const items = ref([]); const setItems = (btnGroup) => { items.value = btnGroup; }; const selectedBtn = computed(() => { if (type === "single") { return items.value?.find((d) => { return d.active }); } else if (type === "multiple") { return items.value?.filter(({ active }) => active); } }); // change active button const changeActiveBtn = (item) => { if (type === "single") { // 先將全部變成false const newItems = Object.assign(items.value).map((it) => ({ ...it, active: item.key === it.key, })); items.value = newItems; } else if (type === "multiple") { // 先將全部變成false const newItems = Object.assign(items.value).map((it) => ({ ...it, active: item.key === it.key ? !item.active : it.active, })); items.value = newItems; } }; return { items, changeActiveBtn, setItems, selectedBtn }; }