adrema/resources/js/composables/useTableToggle.js

35 lines
739 B
JavaScript

import {computed, ref, inject} from 'vue';
export default function (init) {
const axios = inject('axios');
const children = ref(init);
function isOpen(child) {
return child in children.value;
}
async function toggle(parent) {
if (isOpen(parent.id)) {
delete children.value[parent.id];
} else {
children.value[parent.id] = (await axios.get(parent.links.children)).data.data;
}
}
function childrenOf(parentId) {
return children.value[parentId] ? children.value[parentId] : [];
}
function clearToggle() {
children.value = {};
}
return {
isOpen,
toggle,
childrenOf,
clearToggle,
};
}