element-plus
Version:
A Component Library for Vue 3
1 lines • 15.9 kB
Source Map (JSON)
{"version":3,"file":"table-layout.mjs","sources":["../../../../../../packages/components/table/src/table-layout.ts"],"sourcesContent":["import { isRef, nextTick, ref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { hasOwn, isClient, isNumber, isString } from '@element-plus/utils'\nimport { parseHeight } from './util'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { TableHeader } from './table-header'\nimport type { DefaultRow, Table } from './table/defaults'\nimport type { Store } from './store'\n\nclass TableLayout<T extends DefaultRow> {\n observers: TableHeader[]\n table: Table<T>\n store: Store<T>\n columns: TableColumnCtx<T>[]\n fit: boolean\n showHeader: boolean\n\n height: Ref<null | number>\n scrollX: Ref<boolean>\n scrollY: Ref<boolean>\n bodyWidth: Ref<null | number>\n fixedWidth: Ref<null | number>\n rightFixedWidth: Ref<null | number>\n tableHeight!: Ref<null | number>\n headerHeight!: Ref<null | number> // Table Header Height\n appendHeight!: Ref<null | number> // Append Slot Height\n footerHeight!: Ref<null | number> // Table Footer Height\n gutterWidth: number\n constructor(options: Record<string, any>) {\n this.observers = []\n this.table = null as unknown as Table<T>\n this.store = null as unknown as Store<T>\n this.columns = []\n this.fit = true\n this.showHeader = true\n this.height = ref(null)\n this.scrollX = ref(false)\n this.scrollY = ref(false)\n this.bodyWidth = ref(null)\n this.fixedWidth = ref(null)\n this.rightFixedWidth = ref(null)\n this.gutterWidth = 0\n for (const name in options) {\n if (hasOwn(options, name)) {\n if (isRef(this[name])) {\n ;(this[name] as Ref).value = options[name]\n } else {\n this[name as keyof typeof this] = options[name]\n }\n }\n }\n if (!this.table) {\n throw new Error('Table is required for Table Layout')\n }\n if (!this.store) {\n throw new Error('Store is required for Table Layout')\n }\n }\n\n updateScrollY() {\n const height = this.height.value\n /**\n * When the height is not initialized, it is null.\n * After the table is initialized, when the height is not configured, the height is 0.\n */\n if (isNull(height)) return false\n const scrollBarRef = this.table.refs.scrollBarRef\n if (this.table.vnode.el && scrollBarRef?.wrapRef) {\n let scrollY = true\n const prevScrollY = this.scrollY.value\n scrollY =\n scrollBarRef.wrapRef.scrollHeight > scrollBarRef.wrapRef.clientHeight\n this.scrollY.value = scrollY\n return prevScrollY !== scrollY\n }\n return false\n }\n\n setHeight(value: string | number | null, prop = 'height') {\n if (!isClient) return\n const el = this.table.vnode.el\n value = parseHeight(value)\n this.height.value = Number(value)\n\n if (!el && (value || value === 0)) {\n nextTick(() => this.setHeight(value, prop))\n return\n }\n\n if (el && isNumber(value)) {\n el.style[prop] = `${value}px`\n this.updateElsHeight()\n } else if (el && isString(value)) {\n el.style[prop] = value\n this.updateElsHeight()\n }\n }\n\n setMaxHeight(value: string | number | null) {\n this.setHeight(value, 'max-height')\n }\n\n getFlattenColumns(): TableColumnCtx<T>[] {\n const flattenColumns: TableColumnCtx<T>[] = []\n const columns = this.table.store.states.columns.value\n columns.forEach((column) => {\n if (column.isColumnGroup) {\n // eslint-disable-next-line prefer-spread\n flattenColumns.push.apply(flattenColumns, column.columns)\n } else {\n flattenColumns.push(column)\n }\n })\n\n return flattenColumns\n }\n\n updateElsHeight() {\n this.updateScrollY()\n this.notifyObservers('scrollable')\n }\n\n headerDisplayNone(elm: HTMLElement) {\n if (!elm) return true\n let headerChild = elm\n while (headerChild.tagName !== 'DIV') {\n if (getComputedStyle(headerChild).display === 'none') {\n return true\n }\n headerChild = headerChild.parentElement!\n }\n return false\n }\n\n updateColumnsWidth() {\n if (!isClient) return\n const fit = this.fit\n const bodyWidth = this.table.vnode.el?.clientWidth\n let bodyMinWidth = 0\n\n const flattenColumns = this.getFlattenColumns()\n const flexColumns = flattenColumns.filter(\n (column) => !isNumber(column.width)\n )\n flattenColumns.forEach((column) => {\n // Clean those columns whose width changed from flex to unflex\n if (isNumber(column.width) && column.realWidth) column.realWidth = null\n })\n if (flexColumns.length > 0 && fit) {\n flattenColumns.forEach((column) => {\n bodyMinWidth += Number(column.width || column.minWidth || 80)\n })\n if (bodyMinWidth <= bodyWidth) {\n // DON'T HAVE SCROLL BAR\n this.scrollX.value = false\n\n const totalFlexWidth = bodyWidth - bodyMinWidth\n\n if (flexColumns.length === 1) {\n flexColumns[0].realWidth =\n Number(flexColumns[0].minWidth || 80) + totalFlexWidth\n } else {\n const allColumnsWidth = flexColumns.reduce(\n (prev, column) => prev + Number(column.minWidth || 80),\n 0\n )\n const flexWidthPerPixel = totalFlexWidth / allColumnsWidth\n let noneFirstWidth = 0\n\n flexColumns.forEach((column, index) => {\n if (index === 0) return\n const flexWidth = Math.floor(\n Number(column.minWidth || 80) * flexWidthPerPixel\n )\n noneFirstWidth += flexWidth\n column.realWidth = Number(column.minWidth || 80) + flexWidth\n })\n\n flexColumns[0].realWidth =\n Number(flexColumns[0].minWidth || 80) +\n totalFlexWidth -\n noneFirstWidth\n }\n } else {\n // HAVE HORIZONTAL SCROLL BAR\n this.scrollX.value = true\n flexColumns.forEach((column) => {\n column.realWidth = Number(column.minWidth)\n })\n }\n\n this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth)\n this.table.state.resizeState.value.width = this.bodyWidth.value\n } else {\n flattenColumns.forEach((column) => {\n if (!column.width && !column.minWidth) {\n column.realWidth = 80\n } else {\n column.realWidth = Number(column.width || column.minWidth)\n }\n bodyMinWidth += column.realWidth\n })\n this.scrollX.value = bodyMinWidth > bodyWidth\n\n this.bodyWidth.value = bodyMinWidth\n }\n\n const fixedColumns = this.store.states.fixedColumns.value\n\n if (fixedColumns.length > 0) {\n let fixedWidth = 0\n fixedColumns.forEach((column) => {\n fixedWidth += Number(column.realWidth || column.width)\n })\n\n this.fixedWidth.value = fixedWidth\n }\n\n const rightFixedColumns = this.store.states.rightFixedColumns.value\n if (rightFixedColumns.length > 0) {\n let rightFixedWidth = 0\n rightFixedColumns.forEach((column) => {\n rightFixedWidth += Number(column.realWidth || column.width)\n })\n\n this.rightFixedWidth.value = rightFixedWidth\n }\n this.notifyObservers('columns')\n }\n\n addObserver(observer: TableHeader) {\n this.observers.push(observer)\n }\n\n removeObserver(observer: TableHeader) {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.observers.splice(index, 1)\n }\n }\n\n notifyObservers(event: string) {\n const observers = this.observers\n observers.forEach((observer) => {\n switch (event) {\n case 'columns':\n observer.state?.onColumnsChange(this as TableLayout<DefaultRow>)\n break\n case 'scrollable':\n observer.state?.onScrollableChange(this as TableLayout<DefaultRow>)\n break\n default:\n throw new Error(`Table Layout don't have event ${event}.`)\n }\n })\n }\n}\n\nexport default TableLayout\n"],"names":[],"mappings":"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"}