'use client'; import clsx from 'clsx'; import { useMemo } from 'react'; import { useIntl } from 'react-intl'; import { IconRemove } from '@/components/Icons'; import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/ui/DataTable'; import MiniButton from '@/components/ui/MiniButton'; import { useConceptOptions } from '@/context/ConceptOptionsContext'; import { IVersionInfo, VersionID } from '@/models/library'; interface TableVersionsProps { processing: boolean; items: IVersionInfo[]; selected?: VersionID; onDelete: (versionID: VersionID) => void; onSelect: (versionID: VersionID) => void; } const columnHelper = createColumnHelper(); function TableVersions({ processing, items, onDelete, selected, onSelect }: TableVersionsProps) { const intl = useIntl(); const { colors } = useConceptOptions(); const columns = useMemo( () => [ columnHelper.accessor('version', { id: 'version', header: 'Версия', cell: props =>
{props.getValue()}
}), columnHelper.accessor('description', { id: 'description', header: 'Описание', size: 800, minSize: 800, maxSize: 800, cell: props =>
{props.getValue()}
}), columnHelper.accessor('time_create', { id: 'time_create', header: 'Дата создания', cell: props => (
{new Date(props.getValue()).toLocaleString(intl.locale, { year: '2-digit', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' })}
) }), columnHelper.display({ id: 'actions', size: 50, minSize: 50, maxSize: 50, cell: props => (
} onClick={() => onDelete(props.row.original.id)} />
) }) ], [onDelete, intl, processing] ); const conditionalRowStyles = useMemo( (): IConditionalStyle[] => [ { when: (version: IVersionInfo) => version.id === selected, style: { backgroundColor: colors.bgSelected } } ], [selected, colors] ); return ( onSelect(rowData.id)} conditionalRowStyles={conditionalRowStyles} /> ); } export default TableVersions;