ant-design-vue/components/transfer/item.jsx

64 lines
1.5 KiB
React
Raw Normal View History

2018-04-06 16:20:45 +00:00
import PropTypes from '../_util/vue-types'
import classNames from 'classnames'
// import PureRenderMixin from 'rc-util/lib/PureRenderMixin'
import Lazyload from '../vc-lazy-load'
import Checkbox from '../checkbox'
function noop () {
}
export default {
// shouldComponentUpdate (...args: any[]) {
// return PureRenderMixin.shouldComponentUpdate.apply(this, args)
// }
props: {
renderedText: PropTypes.any,
renderedEl: PropTypes.any,
item: PropTypes.any,
lazy: PropTypes.oneOfType([
PropTypes.bool,
PropTypes.object,
]),
checked: PropTypes.bool,
prefixCls: PropTypes.string,
},
name: 'Item',
render () {
const { renderedText, renderedEl, item, lazy, checked, prefixCls } = this.$props
const className = classNames({
[`${prefixCls}-content-item`]: true,
[`${prefixCls}-content-item-disabled`]: item.disabled,
})
const listItem = (
<li
class={className}
title={renderedText}
onClick={item.disabled ? noop : () => {
this.$emit('click', item)
}}
>
<Checkbox checked={checked} disabled={item.disabled} />
<span>{renderedEl}</span>
</li>
)
let children = null
if (lazy) {
const lazyProps = {
props: {
height: 32,
offset: 500,
throttle: 0,
debounce: false,
...lazy,
},
}
children = <Lazyload {...lazyProps}>{listItem}</Lazyload>
} else {
children = listItem
}
return children
},
}