Files
dify/web/app/components/datasets/documents/detail/metadata/components/icon-button.tsx
CodingOnStar a25e4c1b3a refactor(web): restructure metadata components and add tests
This commit refactors the metadata components within the document detail section by extracting and organizing them into separate files for better maintainability and readability. The following components were created or modified:

- DocTypeSelector: A new component for selecting document types.
- FieldInfo: A new component for displaying and editing field information.
- IconButton: A new component for rendering document type icons.
- MetadataFieldList: A new component for rendering a list of metadata fields.
- TypeIcon: A new component for displaying icons based on document types.
- Utility functions for mapping options.

Additionally, comprehensive tests were added for each new component to ensure functionality and reliability.
2026-01-30 10:09:58 +08:00

33 lines
929 B
TypeScript

import type { FC } from 'react'
import type { DocType } from '@/models/datasets'
import { memo } from 'react'
import Tooltip from '@/app/components/base/tooltip'
import { useMetadataMap } from '@/hooks/use-metadata'
import { cn } from '@/utils/classnames'
import s from '../style.module.css'
import TypeIcon from './type-icon'
export type IconButtonProps = {
type: DocType
isChecked: boolean
}
const IconButton: FC<IconButtonProps> = ({ type, isChecked = false }) => {
const metadataMap = useMetadataMap()
return (
<Tooltip
popupContent={metadataMap[type].text}
>
<button type="button" className={cn(s.iconWrapper, 'group', isChecked ? s.iconCheck : '')}>
<TypeIcon
iconName={metadataMap[type].iconName || ''}
className={`group-hover:bg-primary-600 ${isChecked ? '!bg-primary-600' : ''}`}
/>
</button>
</Tooltip>
)
}
export default memo(IconButton)