overflow-tooltip.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // 长度溢出显示ToolTip 请绑定的标签元素包裹住 element-plus的el-tooltip。
  2. /**
  3. * binding.value 为长度溢出的元素的css选择器,没有请设置
  4. */
  5. import { ElMessage } from 'element-plus'
  6. let mainElement
  7. let tooltipNode
  8. export const overflowTooltip={
  9. created(el,binding,vnode) {
  10. try {
  11. let {value} = binding
  12. tooltipNode = vnode.children.find((childrenCmpt) => childrenCmpt.component?.type.name == 'ElTooltip')
  13. setTimeout(()=>{
  14. mainElement = el.querySelector(value)
  15. if(!mainElement){
  16. throw new Error('找不到指定css选择器的元素')
  17. }
  18. if(mainElement?.scrollWidth > mainElement?.clientWidth){
  19. // 超出
  20. tooltipNode.component.props.disabled=false
  21. }else{
  22. tooltipNode.component.props.disabled=true
  23. }
  24. },0)
  25. if(!value){
  26. throw new Error('请设置长度溢出的元素的css选择器')
  27. }
  28. // console.log(tooltipNode);
  29. if(!tooltipNode){
  30. throw new Error('找不到el-tooltip组件')
  31. }
  32. } catch (error) {
  33. ElMessage.error(error.message)
  34. // console.log(error.message);
  35. }
  36. },
  37. updated() {
  38. if(mainElement?.scrollWidth > mainElement?.clientWidth){
  39. // 超出
  40. tooltipNode.component.props.disabled=false
  41. }else{
  42. tooltipNode.component.props.disabled=true
  43. }
  44. },
  45. }