import { useMemo } from 'react'; import { createColumnHelper } from '@tanstack/react-table'; import { EditablePeopleFullName } from '@/people/components/EditablePeopleFullName'; import { PeopleCompanyCell } from '@/people/components/PeopleCompanyCell'; import { EditableDateCell } from '@/ui/components/editable-cell/types/EditableDateCell'; import { EditablePhoneCell } from '@/ui/components/editable-cell/types/EditablePhoneCell'; import { EditableTextCell } from '@/ui/components/editable-cell/types/EditableTextCell'; import { ColumnHead } from '@/ui/components/table/ColumnHead'; import { IconBuildingSkyscraper, IconCalendarEvent, IconMail, IconMap, IconPhone, IconUser, } from '@/ui/icons/index'; import { getCheckBoxColumn } from '@/ui/tables/utils/getCheckBoxColumn'; import { GetPeopleQuery, useUpdatePeopleMutation } from '~/generated/graphql'; const columnHelper = createColumnHelper(); export const usePeopleColumns = () => { const [updatePerson] = useUpdatePeopleMutation(); return useMemo(() => { return [ getCheckBoxColumn(), columnHelper.accessor('firstName', { header: () => ( } /> ), cell: (props) => ( <> { const person = { ...props.row.original }; await updatePerson({ variables: { ...person, firstName, lastName, companyId: person.company?.id, }, }); }} /> ), size: 210, }), columnHelper.accessor('email', { header: () => ( } /> ), cell: (props) => ( { const person = props.row.original; await updatePerson({ variables: { ...person, email: value, companyId: person.company?.id, }, }); }} /> ), size: 200, }), columnHelper.accessor('company', { header: () => ( } /> ), cell: (props) => , size: 150, }), columnHelper.accessor('phone', { header: () => ( } /> ), cell: (props) => ( { const person = { ...props.row.original }; await updatePerson({ variables: { ...person, phone: value, companyId: person.company?.id, }, }); }} /> ), size: 130, }), columnHelper.accessor('createdAt', { header: () => ( } /> ), cell: (props) => ( { const person = { ...props.row.original }; await updatePerson({ variables: { ...person, createdAt: value.toISOString(), companyId: person.company?.id, }, }); }} /> ), size: 100, }), columnHelper.accessor('city', { header: () => ( } /> ), cell: (props) => ( { const person = { ...props.row.original }; await updatePerson({ variables: { ...person, city: value, companyId: person.company?.id, }, }); }} /> ), }), ]; }, [updatePerson]); };