import {ColumnConfig} from '@common/datatable/column-config'; import {PersonCredit, TitleCredit} from '@app/titles/models/title'; import {Trans} from '@common/i18n/trans'; import React, {Fragment, useContext, useMemo} from 'react'; import {Table, TableBodyProps} from '@common/ui/tables/table'; import {TableRow} from '@common/ui/tables/table-row'; import {TableContext} from '@common/ui/tables/table-context'; import {TitlePoster} from '@app/titles/title-poster/title-poster'; import {DialogTrigger} from '@common/ui/overlays/dialog/dialog-trigger'; import {IconButton} from '@common/ui/buttons/icon-button'; import {DeleteIcon} from '@common/icons/material/Delete'; import {ConfirmationDialog} from '@common/ui/overlays/dialog/confirmation-dialog'; import {useOutletContext} from 'react-router-dom'; import {GetPersonResponse} from '@app/people/requests/use-person'; import {IllustratedMessage} from '@common/ui/images/illustrated-message'; import {RecentActorsIcon} from '@common/icons/material/RecentActors'; import {TitleLink} from '@app/titles/title-link'; import {useDeletePersonCredit} from '@app/admin/people/requests/use-delete-person-credit'; const columnConfig: ColumnConfig[] = [ { key: 'name', header: () => , visibleInMode: 'all', width: 'flex-3', body: credit => (
{credit.is_series ? ( ) : ( )}
), }, { key: 'year', header: () => , body: credit => credit.year, }, { key: 'character', header: () => , body: credit => (credit.pivot.character ? credit.pivot.character : '-'), }, { key: 'department', header: () => , body: credit => ( {credit.pivot.department} ), }, { key: 'job', header: () => , body: credit => {credit.pivot.job}, }, { key: 'actions', header: () => , hideHeader: true, align: 'end', width: 'w-42 flex-shrink-0', visibleInMode: 'all', body: item => (
), }, ]; export function PersonCreditsEditor() { const data = useOutletContext(); const credits = useMemo(() => { return Object.values(data.credits) .flat() .filter(credit => credit.pivot != null); }, [data.credits]); return ( } /> {!credits.length && } ); } function CreditsTableBody({renderRowAs}: TableBodyProps) { const {data} = useContext(TableContext); return ( {data.map((item, rowIndex) => ( ))} ); } function NoCreditsMessage() { return ( } imageHeight="h-auto" title={} /> ); } interface DeleteButtonProps { credit: PersonCredit; } function DeleteButton({credit}: DeleteButtonProps) { const deleteCredit = useDeletePersonCredit(credit); return ( } body={} confirm={} isLoading={deleteCredit.isPending} onConfirm={() => deleteCredit.mutate()} /> ); }