UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.97 kB
{"version":3,"file":"layout-observer.mjs","sources":["../../../../../../packages/components/table/src/layout-observer.ts"],"sourcesContent":["import {\n computed,\n getCurrentInstance,\n onBeforeMount,\n onMounted,\n onUnmounted,\n onUpdated,\n} from 'vue'\n\nimport type { TableHeader } from './table-header'\nimport type TableLayout from './table-layout'\nimport type { DefaultRow, Table, TableColumnCtx } from './table/defaults'\n\nfunction useLayoutObserver<T extends DefaultRow>(root: Table<T>) {\n const instance = getCurrentInstance() as TableHeader\n onBeforeMount(() => {\n tableLayout.value.addObserver(instance)\n })\n onMounted(() => {\n onColumnsChange(tableLayout.value)\n onScrollableChange(tableLayout.value)\n })\n onUpdated(() => {\n onColumnsChange(tableLayout.value)\n onScrollableChange(tableLayout.value)\n })\n onUnmounted(() => {\n tableLayout.value.removeObserver(instance)\n })\n const tableLayout = computed(() => {\n const layout = root.layout as TableLayout<T>\n if (!layout) {\n throw new Error('Can not find table layout.')\n }\n return layout\n })\n const onColumnsChange = (layout: TableLayout<T>) => {\n const cols = root.vnode.el?.querySelectorAll('colgroup > col') || []\n if (!cols.length) return\n const flattenColumns = layout.getFlattenColumns()\n const columnsMap: Record<string, TableColumnCtx<T>> = {}\n flattenColumns.forEach((column) => {\n columnsMap[column.id] = column\n })\n for (let i = 0, j = cols.length; i < j; i++) {\n const col = cols[i]\n const name = col.getAttribute('name')\n const column = columnsMap[name]\n if (column) {\n col.setAttribute('width', column.realWidth || column.width)\n }\n }\n }\n\n const onScrollableChange = (layout: TableLayout<T>) => {\n const cols =\n root.vnode.el?.querySelectorAll('colgroup > col[name=gutter]') || []\n for (let i = 0, j = cols.length; i < j; i++) {\n const col = cols[i]\n col.setAttribute('width', layout.scrollY.value ? layout.gutterWidth : '0')\n }\n const ths = root.vnode.el?.querySelectorAll('th.gutter') || []\n for (let i = 0, j = ths.length; i < j; i++) {\n const th = ths[i]\n th.style.width = layout.scrollY.value ? `${layout.gutterWidth}px` : '0'\n th.style.display = layout.scrollY.value ? '' : 'none'\n }\n }\n\n return {\n tableLayout: tableLayout.value,\n onColumnsChange,\n onScrollableChange,\n }\n}\n\nexport default useLayoutObserver\n"],"names":[],"mappings":"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"}