import PropTypes from '../_util/vue-types'; import classNames from 'classnames'; import { getSlotOptions, getComponentFromProp, isEmptyElement } from '../_util/props-util'; import { Col } from '../grid'; import { ConfigConsumerProps } from '../config-provider'; import { ListGridType } from './index'; export const ListItemProps = { prefixCls: PropTypes.string, extra: PropTypes.any, actions: PropTypes.arrayOf(PropTypes.any), grid: ListGridType, }; export const ListItemMetaProps = { avatar: PropTypes.any, description: PropTypes.any, prefixCls: PropTypes.string, title: PropTypes.any, }; export const Meta = { functional: true, name: 'AListItemMeta', __ANT_LIST_ITEM_META: true, inject: { configProvider: { default: () => ({}) }, }, render(h, context) { const { props, slots, listeners, injections } = context; const slotsMap = slots(); const getPrefixCls = injections.configProvider.getPrefixCls || ConfigConsumerProps.getPrefixCls; const { prefixCls: customizePrefixCls } = props; const prefixCls = getPrefixCls('list', customizePrefixCls); const avatar = props.avatar || slotsMap.avatar; const title = props.title || slotsMap.title; const description = props.description || slotsMap.description; const content = (
); return ( ); }, }; function getGrid(grid, t) { return grid[t] && Math.floor(24 / grid[t]); } export default { name: 'AListItem', Meta, props: ListItemProps, inject: { listContext: { default: () => ({}) }, configProvider: { default: () => ({}) }, }, render() { const { grid } = this.listContext; const { prefixCls: customizePrefixCls, $slots, $listeners } = this; const getPrefixCls = this.configProvider.getPrefixCls || ConfigConsumerProps.getPrefixCls; const prefixCls = getPrefixCls('list', customizePrefixCls); const classString = `${prefixCls}-item`; const extra = getComponentFromProp(this, 'extra'); const actions = getComponentFromProp(this, 'actions'); const metaContent = []; const otherContent = []; ($slots.default || []).forEach(element => { if (!isEmptyElement(element)) { if (getSlotOptions(element).__ANT_LIST_ITEM_META) { metaContent.push(element); } else { otherContent.push(element); } } }); const contentClassString = classNames(`${prefixCls}-item-content`, { [`${prefixCls}-item-content-single`]: metaContent.length < 1, }); const content = otherContent.length > 0 ?