import { Description, Dialog, DialogBackdrop, DialogPanel, DialogTitle, } from '@headlessui/react' import { PencilSquareIcon, TrashIcon } from '@heroicons/react/20/solid' import type { ConfigColumns } from 'datatables.net-dt' import type { DataTableSlots } from 'datatables.net-react' import { useEffect, useState } from 'react' import toast from 'react-hot-toast' import { Link, useFetcher, useRouteLoaderData } from 'react-router' import type { TAdResponse } from '~/apis/common/get-ads' import { Button } from '~/components/ui/button' import { UiTable } from '~/components/ui/table' import { TitleDashboard } from '~/components/ui/title-dashboard' import type { loader } from '~/routes/_admin.lg-admin._dashboard.advertisements._index' export const AdvertisementsPage = () => { const loaderData = useRouteLoaderData( 'routes/_admin.lg-admin._dashboard.advertisements._index', ) const { adsData: dataTable } = loaderData || {} const [selectedId, setSelectedId] = useState() const fetcher = useFetcher() useEffect(() => { if (fetcher.data?.success === false) { toast.error(fetcher.data?.message) return } if (fetcher.data?.success === true) { setSelectedId(undefined) toast.success('Banner iklan berhasil dihapus!') return } // eslint-disable-next-line react-hooks/exhaustive-deps }, [fetcher.data]) const dataColumns: ConfigColumns[] = [ { title: 'No', render: ( _data: unknown, _type: unknown, _row: unknown, meta: { row: number }, ) => { return meta.row + 1 }, }, { title: 'Banner', data: 'image_url' }, { title: 'Link', data: 'url' }, { title: 'Action', data: 'id', }, ] const dataSlot: DataTableSlots = { 1: (value: string) => { return ( {value} ) }, 3: (value: string, _type: unknown, data: TAdResponse) => (
), } return (
{/* TODO: Filter */}
{ if (fetcher.state === 'idle') { setSelectedId(undefined) } }} className="relative z-50" transition >
Anda akan menghapus banner berikut? {selectedId?.image_url}
) }