9478772c83761a28b4eae0cc54a93e7c09fe2c7db2191e95e10e254cd2102533cddab1ee6c2294f1cf459b6e80f1757d39a40562ddb828eb1dd47c212e4331-exec 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <script>
  2. import { onLeftClick } from '../utils'
  3. import DeleteIcon from './icons/Delete'
  4. export default {
  5. name: 'vue-treeselect--multi-value-item',
  6. inject: [ 'instance' ],
  7. props: {
  8. node: {
  9. type: Object,
  10. required: true,
  11. },
  12. },
  13. methods: {
  14. handleMouseDown: onLeftClick(function handleMouseDown() {
  15. const { instance, node } = this
  16. // Deselect this node.
  17. instance.select(node)
  18. }),
  19. },
  20. render() {
  21. const { instance, node } = this
  22. const itemClass = {
  23. 'vue-treeselect__multi-value-item': true,
  24. 'vue-treeselect__multi-value-item-disabled': node.isDisabled,
  25. 'vue-treeselect__multi-value-item-new': node.isNew,
  26. }
  27. const customValueLabelRenderer = instance.$scopedSlots['value-label']
  28. const labelRenderer = customValueLabelRenderer ? customValueLabelRenderer({ node }) : node.label
  29. return (
  30. <div class="vue-treeselect__multi-value-item-container">
  31. <div class={itemClass} onMousedown={this.handleMouseDown}>
  32. <span class="vue-treeselect__multi-value-label">{ labelRenderer }</span>
  33. <span class="vue-treeselect__icon vue-treeselect__value-remove"><DeleteIcon /></span>
  34. </div>
  35. </div>
  36. )
  37. },
  38. }
  39. </script>