a805fc095befdb928a91930192a6e89180ae3e2ead08e62fdfb1df3533e0b4c3f8cda9fb78074497f89069df0c9e7588c604e5a74d8387dd70ec96e71d2dca-exec 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <script>
  2. import MultiValueItem from './MultiValueItem'
  3. import Input from './Input'
  4. import Placeholder from './Placeholder'
  5. export default {
  6. name: 'vue-treeselect--multi-value',
  7. inject: [ 'instance' ],
  8. methods: {
  9. renderMultiValueItems() {
  10. const { instance } = this
  11. return instance.internalValue
  12. .slice(0, instance.limit)
  13. .map(instance.getNode)
  14. .map(node => (
  15. <MultiValueItem key={`multi-value-item-${node.id}`} node={node} />
  16. ))
  17. },
  18. renderExceedLimitTip() {
  19. const { instance } = this
  20. const count = instance.internalValue.length - instance.limit
  21. if (count <= 0) return null
  22. return (
  23. <div class="vue-treeselect__limit-tip vue-treeselect-helper-zoom-effect-off" key="exceed-limit-tip">
  24. <span class="vue-treeselect__limit-tip-text">{ instance.limitText(count) }</span>
  25. </div>
  26. )
  27. },
  28. },
  29. render() {
  30. const { renderValueContainer } = this.$parent
  31. const transitionGroupProps = {
  32. props: {
  33. tag: 'div',
  34. name: 'vue-treeselect__multi-value-item--transition',
  35. appear: true,
  36. },
  37. }
  38. return renderValueContainer(
  39. <transition-group class="vue-treeselect__multi-value" {...transitionGroupProps}>
  40. {this.renderMultiValueItems()}
  41. {this.renderExceedLimitTip()}
  42. <Placeholder key="placeholder" />
  43. <Input ref="input" key="input" />
  44. </transition-group>,
  45. )
  46. },
  47. }
  48. </script>