Commit 7bbd818e by qinjianhui

feat: 表格支持动态宽度

parent bc2d1dc3
......@@ -6,15 +6,33 @@ export default function useElTableColumnWidth(
selector: string,
): [Ref<HTMLElement | null>, Ref<number>] {
const tableWrapperRef = ref<HTMLDivElement | null>(null)
let cleanupResizeEventListener: (() => void) | undefined
const width = ref(0)
const onThOrderDetailResize = debounce(() => {
let cleanupResizeEventListener: (() => void) | undefined
let cleanupThResizeEventListener: (() => void) | undefined
let currentTh: HTMLElement | null = null
const onThResize = () => {
if (currentTh) width.value = currentTh.offsetWidth
}
const watchThSizeChange = (th: HTMLElement) => {
if (currentTh === th) return
currentTh = th
cleanupThResizeEventListener?.()
addResizeListener(th, onThResize)
cleanupThResizeEventListener = () => {
removeResizeListener(th, onThResize)
currentTh = null
}
}
const onTableWrapperResize = debounce(() => {
const el = tableWrapperRef.value
if (!el) return
const th = el.querySelector(selector) as HTMLElement | null
if (th) {
width.value = th.offsetWidth
watchThSizeChange(th)
}
}, 50)
......@@ -22,13 +40,14 @@ export default function useElTableColumnWidth(
const el = tableWrapperRef.value
if (!el) return
cleanupResizeEventListener = () => {
removeResizeListener(el, onThOrderDetailResize)
removeResizeListener(el, onTableWrapperResize)
}
addResizeListener(el, onThOrderDetailResize)
addResizeListener(el, onTableWrapperResize)
})
onBeforeUnmount(() => {
cleanupResizeEventListener?.()
cleanupThResizeEventListener?.()
})
return [tableWrapperRef, width]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment