扩展el-table,实现当showOverflowTooltip时,鼠标可移入tooltip功能

 1.在utils里创建elTable.js

import { Table } from 'element-ui';
import { getCell, getColumnByCell } from 'element-ui/packages/table/src/util';
import { getStyle, hasClass } from 'element-ui/src/utils/dom';
Object.assign(Table.components.TableBody.methods, {handleCellMouseEnter(event, row) {const { table } = this;const cell = getCell(event);if (cell) {const column = getColumnByCell(table, cell);table.hoverState = { cell, column, row };const { hoverState } = table;table.$emit('cell-mouse-enter', hoverState.row, hoverState.column, hoverState.cell, event);}// 判断是否text-overflow, 如果是就显示tooltipconst cellChild = event.target.querySelector('.cell');if (!(hasClass(cellChild, 'el-tooltip') && cellChild.childNodes.length)) {return;}// use range width instead of scrollWidth to determine whether the text is overflowing// to address a potential FireFox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1074543#c3const range = document.createRange();range.setStart(cellChild, 0);range.setEnd(cellChild, cellChild.childNodes.length);const rangeWidth = range.getBoundingClientRect().width;const padding = (parseInt(getStyle(cellChild, 'paddingLeft'), 10) || 0) + (parseInt(getStyle(cellChild, 'paddingRight'), 10) || 0);if ((rangeWidth + padding > cellChild.offsetWidth || cellChild.scrollWidth > cellChild.offsetWidth) && this.$refs.tooltip) {const { tooltip } = this.$refs;const { tooltipEnterable } = this.table;const showTooltip = () => {this.tooltipContent = cell.innerText || cell.textContent;tooltip.referenceElm = cell;if (tooltip.$refs.popper) {tooltip.$refs.popper.style.display = 'none';}tooltip.doDestroy();tooltip.setExpectedState(true);this.activateTooltip(tooltip);};if (tooltipEnterable && tooltip.showPopper) {clearTimeout(tooltip.timeoutEnter);tooltip.timeoutEnter = setTimeout(() => {if (!tooltip.expectedState) {tooltip.handleClosePopper();showTooltip();}tooltip.timeoutEnter = null;}, 100);return;}showTooltip();}},handleCellMouseLeave(event) {const { tooltip } = this.$refs;if (tooltip) {tooltip.setExpectedState(false);const { tooltipEnterable } = this.table;if (tooltipEnterable) {clearTimeout(tooltip.timeoutLeave);tooltip.timeoutLeave = setTimeout(() => {if (!tooltip.expectedState) {tooltip.handleClosePopper();}tooltip.timeoutLeave = null;}, 100);} else {tooltip.handleClosePopper();}}const cell = getCell(event);if (!cell) return;const oldHoverState = this.table.hoverState || {};this.table.$emit('cell-mouse-leave', oldHoverState.row, oldHoverState.column, oldHoverState.cell, event);}
});/*** @description 扩展el-table,实现当showOverflowTooltip时,鼠标可移入tooltip功能* @prop {Boolean} tooltipEnterable 仅在列属性showOverflowTooltip为true时生效,鼠标是否可进入到 tooltip 中,默认为true*/
const ElTable = {extends: Table,props: {tooltipEnterable: {type: Boolean,default: true}}
};
export default Vue => {Vue.component('ElTable', ElTable);
};

2.在main.js中引入 并绑在vue上

import ElTable from '@/utils/elTable';

Vue.use(ElTable);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2443.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

NGINX 交叉编译 arm32

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

openstack之guardian介绍与实例创建过程

运行特征 采集模块:扩展Ceilometer,采集存储网、业务网连通性、nova目录是否可读写; 收集模块:将采集到的数据存储到数据库中; 分析模块:根据采集的结果,分析各节点状态,并进行反向检…

操作集成、数据集成、界面集成-系统架构师(八十八)

1软件开发环境由软件工具集和环境集成机制构成,前者支持软件活动的过程和任务,后者提供统一数据模式和数据接口规范的数据集成机制,支持个各开发活动之间通信、切换、调度和协同的()。 A 操作集成机制 B 控制集成机制…

项目经理必看:PMP证书值不值得考?一文了解真相!

大部分人对“PMP证书”这个词语可能有点陌生,但很多想从事于项目管理或带团队当领导的人对此还是比较熟悉的。 PMP是由美国项目管理协会发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试,1999年由我国国家外国专家局引进&am…

空元组同一空间,空列表不是同一空间print(a is b, c is d)

1. 在Python(Python的官方实现)中,对于小整数有一个整数缓存机制: - 整数对象在 -5到256(包含 -5和256)之间是被缓存的。这意味着在这个范围内的整数,当你在代码中多次使用相同的值创建整数对象…

电通旗下VeryStar连摘Campaign 亚太科技MVP及鼎革奖两项大奖

近日,电通CXM(客户体验管理)旗下费芮互动VeryStar开发的OmniRetail零售数字化平台及其中的OmniCRM分别摘得重磅奖项。OmniCRM在Campaign亚太2024年度亚太地区Tech MVP中当选“最有价值科技产品”,OmniRetail荣获“2024「鼎革奖」数…

【vba源码】禁用复制功能Ctrl+C

hi,大家好呀! 又到了和大家一起来分享Access开发的功能点时间了,最近总感觉时间不够用,感觉要做的事情有很多,但总是被乱七八糟的事情给打扰,好在我们每个人有Passion!最近更新的Access2024的教…

「C/C++」C++11 之<thread>多线程编程

✨博客主页何曾参静谧的博客📌文章专栏「C/C++」C/C++程序设计📚全部专栏「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明目…

JUC从实战到源码:LockSupport

LockSupport学习与使用 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得,欢迎指正&…

Linux之信号量

前言 IPC中介绍过信号量, 为了让进程间通信, 从而多个执行流看到同一份公共资源, 对于并发访问造成数据不一致问题, 就需要把公共资源保护起来, 从而就需要同步与互斥. 信号量共有三个特性: 1. 本质是一把用于描述临界资源资源的数目的计数器 2. 每一个执行流想访问公共资源内…

eval长度限制绕过

我把他的叙述写成代码&#xff0c;大概如下&#xff1a; <?php $param $_REQUEST[param]; if(strlen($param)<17 && stripos($param,eval) false && stripos($param,assert) false) {eval($param); } ?> 那么这个代码怎么拿到webshell&#xf…

Linux - 进程间通信(管道)

文章目录 一、进程间通信的目的二、进程间通信的本质三、管道1、介绍2、匿名管道3、命名管道 一、进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或…

【软考】反规范化技术

论反规范化技术 反规范化有这几种技术&#xff0c;增加冗余列&#xff0c;增加派生列&#xff0c;重组表和分割表。其中冗余列是指同一个字段在另外的表中存储一份&#xff0c;减少连表操作。增加派生列是基于另外一个列或者多个列&#xff0c;计算得到一个新的列&#xff0c;可…

SpringBoot day 1104

ok了家人们这周学习SpringBoot的使用&#xff0c;和深入了解&#xff0c;letgo 一.SpringBoot简介 1.1 设计初衷 目前我们开发的过程当中&#xff0c;一般采用一个单体应用的开发采用 SSM 等框架进行开发&#xff0c;并在 开发的过程当中使用了大量的 xml 等配置文件&#x…

Python | Leetcode Python题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, w: List[int]):self.pre list(accumulate(w))self.total sum(w)def pickIndex(self) -> int:x random.randint(1, self.total)return bisect_left(self.pre, x)

C++ | Leetcode C++题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution { private:mt19937 gen;uniform_int_distribution<int> dis;vector<int> pre;public:Solution(vector<int>& w): gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)) {partial_sum(…

弹簧质点系统求Hessian

Verification https://www.matrixcalculus.org/ (1-l0/norm2(p-q))*(p-q)

游游的游戏大礼包

游游的游戏大礼包 import java.util.*; public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);long n in.nextInt();long m in.nextInt();long a in.nextInt();long b in.nextInt();long ret 0;for(long x 0; x < Math.…

详解ARM汇编条件标志

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 条件标志 在 ARM 指令集中&#xff0c;条件标志是控制指令执行的一种机制&#xff0c;它们用于实现条件分支、比较和其他逻辑操作。 我们平时使用 IDA 调试程…

Navicat Premium安装卸载及使用教程教程

Navicat Premium 17 安装卸载及使用教程教程 0. 卸载 没安装过 Navicat 直接跳过本步骤即可。 正常卸载顺序即可&#xff0c;网上很多教程&#xff0c;这里不演示了 如果怕卸载不干净&#xff0c;最后时候可以执行一下压缩包里面的无限试用 Navicat.bat 即可成功删除Navicat…