| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| import React from 'react';
|
| import { Space, Tag, Typography, Popover } from '@douyinfe/semi-ui';
|
|
|
| const { Text } = Typography;
|
|
|
|
|
| export function renderLimitedItems({ items, renderItem, maxDisplay = 3 }) {
|
| if (!items || items.length === 0) return '-';
|
| const displayItems = items.slice(0, maxDisplay);
|
| const remainingItems = items.slice(maxDisplay);
|
| return (
|
| <Space spacing={1} wrap>
|
| {displayItems.map((item, idx) => renderItem(item, idx))}
|
| {remainingItems.length > 0 && (
|
| <Popover
|
| content={
|
| <div className='p-2'>
|
| <Space spacing={1} wrap>
|
| {remainingItems.map((item, idx) => renderItem(item, idx))}
|
| </Space>
|
| </div>
|
| }
|
| position='top'
|
| >
|
| <Tag size='small' shape='circle' color='grey'>
|
| +{remainingItems.length}
|
| </Tag>
|
| </Popover>
|
| )}
|
| </Space>
|
| );
|
| }
|
|
|
|
|
| export const renderDescription = (text, maxWidth = 200) => {
|
| return (
|
| <Text ellipsis={{ showTooltip: true }} style={{ maxWidth }}>
|
| {text || '-'}
|
| </Text>
|
| );
|
| };
|
|
|