(component): tooltip,table

tooltip 新增isAutoShow属性 目的控制超出文本 `...` 时自动展示, 没有 `...` 时不展示
table 列添加ellipsisTooltip属性时,无 `...`
的不显示tooltip效果
This commit is contained in:
dingyongya
2022-05-24 19:15:57 +08:00
parent 59e874d3c4
commit 2036a9ef6f
7 changed files with 72 additions and 13 deletions

View File

@@ -35,6 +35,7 @@ export interface LayPopperProps {
isDark?: boolean;
disabled?: boolean;
isCanHide?: boolean;
isAutoShow?: boolean;
}
const props = withDefaults(defineProps<LayPopperProps>(), {
@@ -43,6 +44,7 @@ const props = withDefaults(defineProps<LayPopperProps>(), {
disabled: false,
enterable: true,
isCanHide: true,
isAutoShow: false,
trigger: "hover",
});

View File

@@ -354,13 +354,9 @@ onMounted(() => {
<lay-tooltip
v-if="column.ellipsisTooltip"
:content="data[column.key]"
:isAutoShow="true"
>
<div class="layui-table-call-ellipsis">
<slot
:name="column.customSlot"
:data="data"
></slot>
</div>
<slot :name="column.customSlot" :data="data"></slot>
</lay-tooltip>
<slot
v-else
@@ -388,10 +384,9 @@ onMounted(() => {
<lay-tooltip
v-if="column.ellipsisTooltip"
:content="data[column.key]"
:isAutoShow="true"
>
<div class="layui-table-call-ellipsis">
{{ data[column.key] }}
</div>
{{ data[column.key] }}
</lay-tooltip>
<span v-else> {{ data[column.key] }} </span>
</td>

View File

@@ -0,0 +1,6 @@
.lay-tooltip-content{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}

View File

@@ -1,9 +1,13 @@
<template>
<slot></slot>
<div v-if="isAutoShow" class="lay-tooltip-content" ref="refTooltip">
<span><slot></slot></span>
</div>
<slot v-else></slot>
<lay-popper v-if="isMounted" v-bind="innerProps"></lay-popper>
</template>
<script lang="ts">
import "./index.less";
import LayPopper from "../popper/index.vue";
import { defineComponent, ref } from "vue";
export default defineComponent({
@@ -32,11 +36,17 @@ export default defineComponent({
type: Boolean,
default: true,
},
isAutoShow: {
type: Boolean,
default: false,
},
},
setup() {
const isMounted = ref(false);
const refTooltip = ref(null);
return {
isMounted,
refTooltip,
};
},
computed: {
@@ -45,7 +55,19 @@ export default defineComponent({
},
},
mounted() {
this.$nextTick(() => (this.isMounted = true));
this.$nextTick(() => {
if (this.refTooltip) {
if (
this.refTooltip.offsetWidth >= this.refTooltip.firstChild.offsetWidth
) {
this.isMounted = false;
} else {
this.isMounted = true;
}
} else {
this.isMounted = true;
}
});
},
});
</script>