| <template> | 
|     <li class="ivu-list-item" :class="classes"> | 
|         <template v-if="itemLayout === 'vertical' && $slots.extra"> | 
|             <div class="ivu-list-item-main"> | 
|                 <slot></slot> | 
|                 <ul class="ivu-list-item-action" v-if="$slots.action"> | 
|                     <slot name="action"></slot> | 
|                 </ul> | 
|             </div> | 
|             <div class="ivu-list-item-extra"> | 
|                 <slot name="extra"></slot> | 
|             </div> | 
|         </template> | 
|         <template v-else> | 
|             <slot></slot> | 
|             <ul class="ivu-list-item-action" v-if="$slots.action"> | 
|                 <slot name="action"></slot> | 
|             </ul> | 
|             <div class="ivu-list-item-extra"> | 
|                 <slot name="extra"></slot> | 
|             </div> | 
|         </template> | 
|     </li> | 
| </template> | 
| <script> | 
|     export default { | 
|         name: 'ListItem', | 
|         inject: ['ListInstance'], | 
|         props: { | 
|   | 
|         }, | 
|         computed: { | 
|             itemLayout () { | 
|                 return this.ListInstance.itemLayout; | 
|             }, | 
|             isItemContainsTextNode () { | 
|                 let result; | 
|                 this.$slots.default.forEach(item => { | 
|                     if (typeof item === 'string') { | 
|                         result = true; | 
|                     } | 
|                 }); | 
|                 return result; | 
|             }, | 
|             isFlexMode () { | 
|                 const extra = this.$slots.extra; | 
|   | 
|                 if (this.itemLayout === 'vertical') { | 
|                     return !!extra; | 
|                 } | 
|   | 
|                 return !this.isItemContainsTextNode; | 
|             }, | 
|             classes () { | 
|                 return [ | 
|                     { | 
|                         'ivu-list-item-no-flex': !this.isFlexMode | 
|                     } | 
|                 ]; | 
|             } | 
|         } | 
|     }; | 
| </script> |