// columns.ts import AutoTooltip from '@/components/auto-tooltip'; import DropdownButtons from '@/components/drop-down-buttons'; import { tableSorter } from '@/config/settings'; import { useIntl } from '@umijs/max'; import { ColumnsType } from 'antd/es/table'; import type { SortOrder } from 'antd/es/table/interface'; import dayjs from 'dayjs'; import { useMemo } from 'react'; import { ProviderLabelMap, credentialActionList } from '../config'; import { CredentialListItem as ListItem } from '../config/types'; const useCredentialColumns = ( sortOrder: { order?: SortOrder; columnKey?: string; }, handleSelect: (val: string, record: ListItem) => void ): ColumnsType => { const intl = useIntl(); return useMemo(() => { return [ { title: intl.formatMessage({ id: 'common.table.name' }), dataIndex: 'name', sorter: tableSorter(1), render: (text: string) => ( {text} ) }, { title: intl.formatMessage({ id: 'clusters.table.provider' }), dataIndex: 'provider', sorter: false, render: (value: string) => {ProviderLabelMap[value]} }, { title: intl.formatMessage({ id: 'common.table.createTime' }), dataIndex: 'created_at', showSorterTooltip: false, defaultSortOrder: 'descend', sorter: tableSorter(3), ellipsis: { showTitle: false }, render: (value: string) => ( {dayjs(value).format('YYYY-MM-DD HH:mm:ss')} ) }, { title: intl.formatMessage({ id: 'common.table.description' }), dataIndex: 'description', ellipsis: { showTitle: false }, render: (value: string) => ( {value} ) }, { title: intl.formatMessage({ id: 'common.table.operation' }), dataIndex: 'operations', ellipsis: { showTitle: false }, render: (value: string, record: ListItem) => ( handleSelect(val, record)} > ) } ]; }, [intl, handleSelect, sortOrder]); }; export default useCredentialColumns;