2024-08-02 22:31:46 +08:00
|
|
|
import React, { useMemo } from 'react';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { Formatter, Icon } from '@seafile/sf-metadata-ui-component';
|
|
|
|
import classnames from 'classnames';
|
|
|
|
import { CellType, COLUMNS_ICON_CONFIG } from '../../../metadata/metadata-view/_basic';
|
2024-08-06 17:30:11 +08:00
|
|
|
import { gettext } from '../../../utils/constants';
|
2024-08-02 22:31:46 +08:00
|
|
|
|
|
|
|
import './index.css';
|
|
|
|
|
|
|
|
const DetailItem = ({ field, value, valueId, valueClick, children, ...params }) => {
|
|
|
|
const icon = useMemo(() => {
|
|
|
|
if (field.type === 'size') return COLUMNS_ICON_CONFIG[CellType.NUMBER];
|
|
|
|
return COLUMNS_ICON_CONFIG[field.type];
|
|
|
|
}, [field]);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="dirent-detail-item">
|
2024-08-07 14:01:01 +08:00
|
|
|
<div className="dirent-detail-item-name">
|
2024-08-02 22:31:46 +08:00
|
|
|
<Icon iconName={icon} />
|
2024-08-07 14:01:01 +08:00
|
|
|
<span className="dirent-detail-item-name-value">{field.name}</span>
|
2024-08-02 22:31:46 +08:00
|
|
|
</div>
|
|
|
|
<div className={classnames('dirent-detail-item-value', { 'editable': valueClick })} id={valueId} onClick={valueClick}>
|
2024-08-06 17:30:11 +08:00
|
|
|
{children ? children : (<Formatter { ...params } field={field} value={value} />)}
|
2024-08-02 22:31:46 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2024-08-06 17:30:11 +08:00
|
|
|
DetailItem.defaultProps = {
|
|
|
|
emptyTip: gettext('Empty')
|
|
|
|
};
|
|
|
|
|
2024-08-02 22:31:46 +08:00
|
|
|
DetailItem.propTypes = {
|
|
|
|
field: PropTypes.object.isRequired,
|
2024-08-06 17:30:11 +08:00
|
|
|
value: PropTypes.any,
|
2024-08-02 22:31:46 +08:00
|
|
|
children: PropTypes.any,
|
|
|
|
valueId: PropTypes.string,
|
|
|
|
};
|
|
|
|
|
|
|
|
export default DetailItem;
|
|
|
|
|