UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.13 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":";;AAaA,SAAS,kBAAwC,IAAgB,EAAA;AAC/D,EAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,EAAA,aAAA,CAAc,MAAM;AAClB,IAAY,WAAA,CAAA,KAAA,CAAM,YAAY,QAAQ,CAAA,CAAA;AAAA,GACvC,CAAA,CAAA;AACD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAA,CAAgB,YAAY,KAAK,CAAA,CAAA;AACjC,IAAA,kBAAA,CAAmB,YAAY,KAAK,CAAA,CAAA;AAAA,GACrC,CAAA,CAAA;AACD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAA,CAAgB,YAAY,KAAK,CAAA,CAAA;AACjC,IAAA,kBAAA,CAAmB,YAAY,KAAK,CAAA,CAAA;AAAA,GACrC,CAAA,CAAA;AACD,EAAA,WAAA,CAAY,MAAM;AAChB,IAAY,WAAA,CAAA,KAAA,CAAM,eAAe,QAAQ,CAAA,CAAA;AAAA,GAC1C,CAAA,CAAA;AACD,EAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA,CAAA;AACpB,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAM,MAAA,IAAI,MAAM,4BAA4B,CAAA,CAAA;AAAA,KAC9C;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACD,EAAM,MAAA,eAAA,GAAkB,CAAC,MAA2B,KAAA;AApCtD,IAAA,IAAA,EAAA,CAAA;AAqCI,IAAA,MAAM,SAAO,EAAK,GAAA,IAAA,CAAA,KAAA,CAAM,OAAX,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAA,CAAiB,sBAAqB,EAAC,CAAA;AACnE,IAAA,IAAI,CAAC,IAAK,CAAA,MAAA;AAAQ,MAAA,OAAA;AAClB,IAAM,MAAA,cAAA,GAAiB,OAAO,iBAAkB,EAAA,CAAA;AAChD,IAAA,MAAM,aAAgD,EAAC,CAAA;AACvD,IAAe,cAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AACjC,MAAA,UAAA,CAAW,OAAO,EAAM,CAAA,GAAA,MAAA,CAAA;AAAA,KACzB,CAAA,CAAA;AACD,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAK,MAAQ,EAAA,CAAA,GAAI,GAAG,CAAK,EAAA,EAAA;AAC3C,MAAA,MAAM,MAAM,IAAK,CAAA,CAAA,CAAA,CAAA;AACjB,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,YAAA,CAAa,MAAM,CAAA,CAAA;AACpC,MAAA,MAAM,SAAS,UAAW,CAAA,IAAA,CAAA,CAAA;AAC1B,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,GAAA,CAAI,YAAa,CAAA,OAAA,EAAS,MAAO,CAAA,SAAA,IAAa,OAAO,KAAK,CAAA,CAAA;AAAA,OAC5D;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,kBAAA,GAAqB,CAAC,MAA2B,KAAA;AAtDzD,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAuDI,IAAA,MAAM,SACJ,EAAK,GAAA,IAAA,CAAA,KAAA,CAAM,OAAX,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAA,CAAiB,mCAAkC,EAAC,CAAA;AACrE,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAK,MAAQ,EAAA,CAAA,GAAI,GAAG,CAAK,EAAA,EAAA;AAC3C,MAAA,MAAM,MAAM,IAAK,CAAA,CAAA,CAAA,CAAA;AACjB,MAAA,GAAA,CAAI,aAAa,OAAS,EAAA,MAAA,CAAO,QAAQ,KAAQ,GAAA,MAAA,CAAO,cAAc,GAAG,CAAA,CAAA;AAAA,KAC3E;AACA,IAAA,MAAM,QAAM,EAAK,GAAA,IAAA,CAAA,KAAA,CAAM,OAAX,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAA,CAAiB,iBAAgB,EAAC,CAAA;AAC7D,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,IAAI,MAAQ,EAAA,CAAA,GAAI,GAAG,CAAK,EAAA,EAAA;AAC1C,MAAA,MAAM,KAAK,GAAI,CAAA,CAAA,CAAA,CAAA;AACf,MAAA,EAAA,CAAG,MAAM,KAAQ,GAAA,MAAA,CAAO,QAAQ,KAAQ,GAAA,CAAA,EAAG,OAAO,WAAkB,CAAA,EAAA,CAAA,GAAA,GAAA,CAAA;AACpE,MAAA,EAAA,CAAG,KAAM,CAAA,OAAA,GAAU,MAAO,CAAA,OAAA,CAAQ,QAAQ,EAAK,GAAA,MAAA,CAAA;AAAA,KACjD;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,aAAa,WAAY,CAAA,KAAA;AAAA,IACzB,eAAA;AAAA,IACA,kBAAA;AAAA,GACF,CAAA;AACF;;;;"}