import { toast } from 'vue3-toastify'; interface useRoleInterface { datas: { dialog: Ref dialogDelete: Ref getData: Ref }, method: { formTitle: (index: number) => string typeForm: (index: number) => string deleteItem: (data: any, index: number) => any deleteConfirm: (data: any, index: number) => any toastAlert: (msg: string, type: any) => void openDeleteDialog: (value: boolean) => any openFormDialog: (value: boolean) => any findRole: (list: any, item: string) => any paginated: (data: any) => void } } const useRole = (): useRoleInterface => { const dialog: Ref = ref(false); const dialogDelete: Ref = ref(false); const getData: Ref = ref([]); const page: Ref = ref(0); const limit: Ref = ref(5); const formTitle = (index: number): string => { return index === -1 ? "New Item" : "Edit Item"; } const typeForm = (index: number): string => { return index === -1 ? "create" : "edit"; } const deleteItem = (data: any, index: number): any => { return data.splice(index, 1) } const deleteConfirm = (data: any, index: number): void => { deleteItem(data, index); openDeleteDialog(false); toastAlert("Berhasil hapus data!", "success"); } const toastAlert = (msg: string, type: any): void => { toast(msg, { type: type, dangerouslyHTMLString: true, autoClose: 2000, }) } const openDeleteDialog = (value: boolean): any => { dialogDelete.value = value; } const openFormDialog = (value: boolean): any => { dialog.value = value; } const findRole = (list: any, item: string): any => { return list.find((data: any) => data.value === item); } const paginated = (data:any) => { let skip = page.value * limit.value; const roles = data.filter((i,index:number)=>index >= skip && index < skip + limit.value); // const roles = await $fetch(`/api/roles/get?skip=${skip}`); if (roles && roles.length > 0) { getData.value.push(...roles); page.value++; } } return { datas: { dialog, dialogDelete, getData }, method: { formTitle, typeForm, deleteItem, deleteConfirm, toastAlert, openDeleteDialog, openFormDialog, findRole, paginated } } } export default useRole