import PropsTypes from '../_util/vue-types'; import { initDefaultProps, getComponentFromProp } from '../_util/props-util'; export const CommentProps = { actions: PropsTypes.array, /** The element to display as the comment author. */ author: PropsTypes.any, /** The element to display as the comment avatar - generally an antd Avatar */ avatar: PropsTypes.any, /** The main content of the comment */ content: PropsTypes.any, /** Comment prefix defaults to '.ant-comment' */ prefixCls: PropsTypes.string, /** A datetime element containing the time to be displayed */ datetime: PropsTypes.any, }; const Comment = { name: 'AComment', props: initDefaultProps(CommentProps, { prefixCls: 'ant-comment', }), methods: { getAction(actions) { if (!actions || !actions.length) { return null; } const actionList = actions.map((action, index) =>
  • {action}
  • ); return actionList; }, renderNested(children) { const { prefixCls } = this.$props; return
    {children}
    ; }, }, render() { const { prefixCls } = this.$props; const actions = getComponentFromProp(this, 'actions'); const author = getComponentFromProp(this, 'author'); const avatar = getComponentFromProp(this, 'avatar'); const content = getComponentFromProp(this, 'content'); const datetime = getComponentFromProp(this, 'datetime'); const avatarDom = (
    {typeof avatar === 'string' ? : avatar}
    ); const actionDom = actions && actions.length ? ( ) : null; const authorContent = (
    {author && {author}} {datetime && {datetime}}
    ); const contentDom = (
    {authorContent}
    {content}
    {actionDom}
    ); const comment = (
    {avatarDom} {contentDom}
    ); const children = this.$slots.default; return (
    {comment} {children ? this.renderNested(children) : null}
    ); }, }; /* istanbul ignore next */ Comment.install = function(Vue) { Vue.component(Comment.name, Comment); }; export default Comment;