'use client' import type { FC } from 'react' import React from 'react' import { useRouter } from 'next/navigation' import { DataType, type MetadataItemWithValue, isShowManageMetadataLocalStorageKey } from '../types' import Field from './field' import InputCombined from '../edit-metadata-batch/input-combined' import { RiDeleteBinLine, RiQuestionLine } from '@remixicon/react' import Tooltip from '@/app/components/base/tooltip' import cn from '@/utils/classnames' import Divider from '@/app/components/base/divider' import SelectMetadataModal from '../metadata-dataset/select-metadata-modal' import AddMetadataButton from '../add-metadata-button' import useTimestamp from '@/hooks/use-timestamp' import { useTranslation } from 'react-i18next' type Props = { dataSetId: string className?: string noHeader?: boolean title?: string uppercaseTitle?: boolean titleTooltip?: string headerRight?: React.ReactNode contentClassName?: string list: MetadataItemWithValue[] isEdit?: boolean onChange?: (item: MetadataItemWithValue) => void onDelete?: (item: MetadataItemWithValue) => void onSelect?: (item: MetadataItemWithValue) => void onAdd?: (item: MetadataItemWithValue) => void } const InfoGroup: FC = ({ dataSetId, className, noHeader, title, uppercaseTitle = true, titleTooltip, headerRight, contentClassName, list, isEdit, onChange, onDelete, onSelect, onAdd, }) => { const router = useRouter() const { t } = useTranslation() const { formatTime: formatTimestamp } = useTimestamp() const handleMangeMetadata = () => { localStorage.setItem(isShowManageMetadataLocalStorageKey, 'true') router.push(`/datasets/${dataSetId}/documents`) } return (
{!noHeader && (
{title}
{titleTooltip && ( {titleTooltip}
}>
)}
{headerRight}
)}
{isEdit && (
} onSelect={data => onSelect?.(data as MetadataItemWithValue)} onSave={data => onAdd?.(data)} onManage={handleMangeMetadata} /> {list.length > 0 && }
)} {list.map((item, i) => ( {isEdit ? (
onChange?.({ ...item, value })} />
onDelete?.(item)} />
) : (
{(item.value && item.type === DataType.time) ? formatTimestamp((item.value as number), t('datasetDocuments.metadata.dateTimeFormat')) : item.value}
)}
))}
) } export default React.memo(InfoGroup)