tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 58.9 kB
Source Map (JSON)
{"version":3,"file":"base-table.mjs","sources":["../../../components/table/base-table.tsx"],"sourcesContent":["import { computed, defineComponent, SetupContext, ref, nextTick, PropType, watch, onMounted, toRefs } from 'vue';\nimport { pick, get, isFunction, throttle } from 'lodash-es';\nimport props from './base-table-props';\nimport useTableHeader from './hooks/useTableHeader';\nimport useColumnResize from './hooks/useColumnResize';\nimport useFixed from './hooks/useFixed';\nimport usePagination from './hooks/usePagination';\nimport { useConfig, useTNodeJSX, useVirtualScrollNew, useElementLazyRender } from '@tdesign/shared-hooks';\nimport useAffix from './hooks/useAffix';\nimport Loading from '../loading';\nimport TBody, { extendTableProps } from './components/tbody';\nimport { BaseTableProps } from './types';\n\nimport useStyle, { formatCSSUnit } from './hooks/useStyle';\nimport useClassName from './hooks/useClassName';\n\nimport { Affix } from '../affix';\nimport { ROW_LISTENERS } from './components/tr';\nimport THead from './components/thead';\nimport TFoot from './components/tfoot';\nimport { getAffixProps } from './utils';\nimport { Styles, ComponentScrollToElementParams } from '../common';\nimport { getIEVersion } from '@tdesign/common-js/utils/helper';\nimport { BaseTableInstanceFunctions } from './type';\nimport log from '@tdesign/common-js/log/index';\nimport { useRowHighlight } from './hooks/useRowHighlight';\nimport useHoverKeyboardEvent from './hooks/useHoverKeyboardEvent';\n\nexport const BASE_TABLE_EVENTS = ['page-change', 'cell-click', 'scroll', 'scrollX', 'scrollY'];\nexport const BASE_TABLE_ALL_EVENTS = ROW_LISTENERS.map((t) => `row-${t}`).concat(BASE_TABLE_EVENTS);\n\nexport interface TableListeners {\n [key: string]: Function;\n}\n\nexport default defineComponent({\n name: 'TBaseTable',\n props: {\n ...props,\n /**\n * 渲染展开行,非公开属性,请勿在业务中使用\n */\n renderExpandedRow: Function as PropType<BaseTableProps['renderExpandedRow']>,\n onLeafColumnsChange: Function as PropType<BaseTableProps['onLeafColumnsChange']>,\n thDraggable: Boolean,\n },\n emits: ['show-element-change'],\n setup(props: BaseTableProps, context: SetupContext) {\n const { lazyLoad } = toRefs(props);\n const renderTNode = useTNodeJSX();\n const tableRef = ref<HTMLDivElement>();\n const tableElmRef = ref<HTMLTableElement>();\n const tableBodyRef = ref<InstanceType<typeof TBody>>();\n const bottomContentRef = ref<HTMLDivElement>();\n const tableFootHeight = ref(0);\n const { classPrefix, virtualScrollClasses, tableLayoutClasses, tableBaseClass, tableColFixedClasses } =\n useClassName();\n // 表格基础样式类\n const { tableClasses, sizeClassNames, tableContentStyles, tableElementStyles } = useStyle(props);\n const { globalConfig } = useConfig('table', props.locale);\n const { isMultipleHeader, spansAndLeafNodes, thList } = useTableHeader(props);\n const finalColumns = computed(() => spansAndLeafNodes.value?.leafColumns || props.columns);\n const tableSize = computed(() => props.size ?? globalConfig.value.size);\n\n const { showElement } = useElementLazyRender(tableRef, lazyLoad);\n\n // 吸附相关ref 用来做视图resize后重新定位\n const paginationAffixRef = ref();\n const horizontalScrollAffixRef = ref();\n const headerTopAffixRef = ref();\n const footerBottomAffixRef = ref();\n\n // 固定表头和固定列逻辑\n const {\n scrollbarWidth,\n tableWidth,\n tableElmWidth,\n tableContentRef,\n isFixedHeader,\n isWidthOverflow,\n isFixedColumn,\n thWidthList,\n showColumnShadow,\n rowAndColFixedPosition,\n setData,\n refreshTable,\n setTableElmWidth,\n emitScrollEvent,\n setUseFixedTableElmRef,\n updateColumnFixedShadow,\n getThWidthList,\n updateThWidthList,\n addTableResizeObserver,\n updateTableAfterColumnResize,\n } = useFixed(props, context, finalColumns, {\n paginationAffixRef,\n horizontalScrollAffixRef,\n headerTopAffixRef,\n footerBottomAffixRef,\n });\n\n // 1. 表头吸顶;2. 表尾吸底;3. 底部滚动条吸底;4. 分页器吸底\n const {\n affixHeaderRef,\n affixFooterRef,\n horizontalScrollbarRef,\n paginationRef,\n showAffixHeader,\n showAffixFooter,\n showAffixPagination,\n onHorizontalScroll,\n setTableContentRef,\n updateAffixHeaderOrFooter,\n } = useAffix(props);\n\n const { dataSource, innerPagination, isPaginateData, renderPagination } = usePagination(props, context);\n\n // 列宽拖拽逻辑\n const columnResizeParams = useColumnResize({\n isWidthOverflow,\n tableContentRef,\n showColumnShadow,\n getThWidthList,\n updateThWidthList,\n setTableElmWidth,\n updateTableAfterColumnResize,\n onColumnResizeChange: props.onColumnResizeChange,\n });\n const { resizeLineRef, resizeLineStyle, setEffectColMap } = columnResizeParams;\n\n const dynamicBaseTableClasses = computed(() => [\n tableClasses.value,\n {\n [tableBaseClass.headerFixed]: isFixedHeader.value,\n [tableBaseClass.columnFixed]: isFixedColumn.value,\n [tableBaseClass.widthOverflow]: isWidthOverflow.value,\n [tableBaseClass.multipleHeader]: isMultipleHeader.value,\n [tableColFixedClasses.leftShadow]: showColumnShadow.left,\n [tableColFixedClasses.rightShadow]: showColumnShadow.right,\n [tableBaseClass.columnResizableTable]: props.resizable,\n [`${classPrefix}-table__row--active-${props.activeRowType}`]: props.activeRowType,\n },\n ]);\n\n const tableElmClasses = computed(() => [[tableLayoutClasses[props.tableLayout]]]);\n\n const showRightDivider = computed(\n () =>\n props.bordered &&\n isFixedHeader.value &&\n ((isMultipleHeader.value && isWidthOverflow.value) || !isMultipleHeader.value),\n );\n\n const dividerBottom = computed(() => {\n if (!props.bordered) return 0;\n const bottomRect = bottomContentRef.value?.getBoundingClientRect();\n const paginationRect = paginationRef.value?.getBoundingClientRect();\n return (bottomRect?.height || 0) + (paginationRect?.height || 0);\n });\n\n // 行高亮\n const { tActiveRow, onHighlightRow, addHighlightKeyboardListener, removeHighlightKeyboardListener } =\n useRowHighlight(props, tableRef);\n\n const {\n hoverRow,\n needKeyboardRowHover,\n clearHoverRow,\n addRowHoverKeyboardListener,\n removeRowHoverKeyboardListener,\n tableRefTabIndex,\n } = useHoverKeyboardEvent(props, tableRef);\n\n watch(tableElmRef, () => {\n setUseFixedTableElmRef(tableElmRef.value);\n });\n\n watch(\n () => [props.data, dataSource],\n () => {\n setData(isPaginateData.value ? dataSource.value : props.data);\n },\n );\n\n watch(\n spansAndLeafNodes,\n () => {\n props.onLeafColumnsChange?.(spansAndLeafNodes.value.leafColumns);\n setEffectColMap(spansAndLeafNodes.value.leafColumns, null);\n },\n { immediate: true },\n );\n\n const onFixedChange = () => {\n nextTick(() => {\n onHorizontalScroll();\n updateAffixHeaderOrFooter();\n });\n };\n\n const syncThWidthList = throttle(() => {\n updateThWidthList(getThWidthList('calculate'));\n });\n\n // 虚拟滚动相关数据\n const virtualScrollParams = computed(() => ({\n data: props.data,\n // 传递 fixedRows 的配置\n scroll: { ...props.scroll, fixedRows: props.fixedRows },\n }));\n const virtualConfig = useVirtualScrollNew(tableContentRef, virtualScrollParams);\n\n let lastScrollY = -1;\n const onInnerVirtualScroll = (e: WheelEvent) => {\n const target = (e.target || e.srcElement) as HTMLElement;\n const top = target.scrollTop;\n // 排除横向滚动触发的纵向虚拟滚动计算\n if (lastScrollY !== top) {\n virtualConfig.isVirtualScroll.value && virtualConfig.handleScroll();\n } else {\n lastScrollY = -1;\n updateColumnFixedShadow(target);\n }\n lastScrollY = top;\n emitScrollEvent(e);\n if (props.tableLayout === 'auto') {\n syncThWidthList();\n }\n };\n\n // used for top margin\n const getTFootHeight = () => {\n if (!tableElmRef.value) return;\n tableFootHeight.value = tableElmRef.value.querySelector('tfoot')?.getBoundingClientRect().height;\n };\n\n // 对外暴露方法,修改时需谨慎(expose)\n const scrollColumnIntoView: BaseTableInstanceFunctions['scrollColumnIntoView'] = (colKey: string) => {\n if (!tableContentRef.value) return;\n const thDom = tableContentRef.value.querySelector(`th[data-colkey=\"${colKey}\"]`);\n const fixedThDom = tableContentRef.value.querySelectorAll('th.t-table__cell--fixed-left');\n let totalWidth = 0;\n for (let i = 0, len = fixedThDom.length; i < len; i++) {\n totalWidth += fixedThDom[i].getBoundingClientRect().width;\n }\n const domRect = thDom.getBoundingClientRect();\n const contentRect = tableContentRef.value.getBoundingClientRect();\n const distance = domRect.left - contentRect.left - totalWidth;\n tableContentRef.value.scrollTo({ left: distance, behavior: 'smooth' });\n };\n\n watch(tableContentRef, () => {\n setTableContentRef(tableContentRef.value);\n // auto 布局下,初始化表头列宽,避免 affix 表头列宽不对齐\n if (props.tableLayout === 'auto') {\n syncThWidthList();\n }\n });\n\n // 应该有多种情况下需要更新 foot 高度\n // 原方案只监听 tableElmRef,但是可能有异步渲染的情况,footer 的渲染晚于 dom 引用的产生\n // 加入 timeout,避免渲染延迟导致的高度获取失败\n watch(\n () => [tableElmRef.value, props.footData, props.footerSummary, props.columns],\n () => {\n const timer = setTimeout(() => {\n getTFootHeight();\n clearTimeout(timer);\n }, 0);\n },\n );\n\n watch(tableRef, (tableRef) => {\n addTableResizeObserver(tableRef);\n });\n\n onMounted(() => {\n getTFootHeight();\n setTableContentRef(tableContentRef.value);\n addTableResizeObserver(tableRef.value);\n });\n\n const onTableFocus = () => {\n props.activeRowType && addHighlightKeyboardListener();\n needKeyboardRowHover.value && addRowHoverKeyboardListener();\n };\n\n const onTableBlur = () => {\n props.activeRowType && removeHighlightKeyboardListener();\n needKeyboardRowHover.value && removeRowHoverKeyboardListener();\n };\n\n const onInnerRowClick: BaseTableProps['onRowClick'] = (ctx) => {\n props.onRowClick?.(ctx);\n props.activeRowType && onHighlightRow(ctx);\n needKeyboardRowHover.value && clearHoverRow();\n };\n\n watch(\n [showElement],\n ([showElement]) => {\n context.emit('show-element-change', showElement);\n },\n { immediate: true },\n );\n\n const tableData = computed(() => (isPaginateData.value ? dataSource.value : props.data));\n\n const scrollToElement = (params: ComponentScrollToElementParams) => {\n let { index } = params;\n if (!index && index !== 0) {\n if (!params.key) {\n log.error('Table', 'scrollToElement: one of `index` or `key` must exist.');\n return;\n }\n index = tableData.value?.findIndex((item) => get(item, props.rowKey) === params.key);\n if (index < 0) {\n log.error('Table', `${params.key} does not exist in data, check \\`rowKey\\` or \\`data\\` please.`);\n }\n }\n if (virtualConfig.isVirtualScroll.value) {\n virtualConfig.scrollToElement({ ...params, index: index + 1 });\n } else {\n // 执行普通的滚动\n // 获取 tbody\n const el = tableBodyRef.value?.$el as HTMLElement | undefined;\n const row = el?.children?.[index] as HTMLElement;\n if (row) {\n const { offsetTop } = row;\n const scrollTop = tableContentRef.value.scrollTop;\n const scrollHeight = offsetTop - scrollTop - (params.top ?? 0);\n // 实现偏移量的支持\n tableContentRef.value.scrollBy({ top: scrollHeight, behavior: params.behavior ?? 'auto' });\n }\n }\n };\n\n context.expose({\n refreshTable,\n scrollColumnIntoView,\n scrollToElement,\n });\n\n return () => {\n if (!showElement.value) {\n return <div ref={tableRef}></div>;\n }\n\n const data = isPaginateData.value ? dataSource.value : props.data;\n const columns = spansAndLeafNodes?.value.leafColumns || props.columns;\n\n const columnResizable = props.allowResizeColumnWidth ?? props.resizable;\n if (columnResizable && props.tableLayout === 'auto') {\n log.warn(\n 'Table',\n 'table-layout can not be `auto`, cause you are using column resizable, set `table-layout: fixed` please.',\n );\n }\n\n const defaultColWidth = props.tableLayout === 'fixed' && isWidthOverflow.value ? '100px' : undefined;\n\n const renderColGroup = (isAffixHeader = true) => (\n <colgroup>\n {columns.map((col) => {\n const style: Styles = {\n width:\n formatCSSUnit(\n (isAffixHeader || columnResizable ? thWidthList.value[col.colKey] : undefined) || col.width,\n ) || defaultColWidth,\n };\n if (col.minWidth) {\n style.minWidth = formatCSSUnit(col.minWidth);\n }\n // 没有设置任何宽度的场景下,需要保留表格正常显示的最小宽度,否则会出现因宽度过小的抖动问题\n if (!style.width && !col.minWidth && props.tableLayout === 'fixed') {\n style.minWidth = '80px';\n }\n return <col key={col.colKey} style={style}></col>;\n })}\n </colgroup>\n );\n\n const renderAffixedHeader = () => {\n if (props.showHeader === false) return null;\n return (\n !!(virtualConfig.isVirtualScroll.value || props.headerAffixedTop) &&\n (props.headerAffixedTop ? (\n <Affix\n offsetTop={0}\n {...getAffixProps(props.headerAffixedTop)}\n onFixedChange={onFixedChange}\n ref={headerTopAffixRef}\n >\n {affixHeaderWithWrap}\n </Affix>\n ) : (\n isFixedHeader.value && affixHeaderWithWrap\n ))\n );\n };\n\n const renderAffixedHorizontalScrollbar = () => (\n <Affix\n offsetBottom={0}\n {...getAffixProps(props.horizontalScrollAffixedBottom)}\n style={{ marginTop: `-${scrollbarWidth.value * 2}px` }}\n horizontalScrollAffixedBottom\n ref={horizontalScrollAffixRef}\n >\n <div\n ref={horizontalScrollbarRef}\n class={['scrollbar', tableBaseClass.obviousScrollbar]}\n style={{\n width: `${tableWidth.value}px`,\n overflow: 'auto',\n opacity: Number(showAffixFooter.value),\n }}\n >\n <div style={{ width: `${tableElmWidth.value}px`, height: '5px' }}></div>\n </div>\n </Affix>\n );\n\n const headProps = {\n isFixedHeader: isFixedHeader.value,\n rowAndColFixedPosition: rowAndColFixedPosition.value,\n isMultipleHeader: isMultipleHeader.value,\n bordered: props.bordered,\n maxHeight: props.maxHeight,\n height: props.height,\n spansAndLeafNodes: spansAndLeafNodes.value,\n thList: thList.value,\n thWidthList: thWidthList.value,\n resizable: props.resizable,\n columnResizeParams,\n classPrefix: classPrefix,\n ellipsisOverlayClassName: tableSize.value !== 'medium' ? sizeClassNames[tableSize.value] : '',\n attach: props.attach,\n showColumnShadow: showColumnShadow,\n thDraggable: props.thDraggable,\n };\n\n /**\n * Affixed Header\n */\n // IE 浏览器需要遮挡 header 吸顶滚动条,要减去 getBoundingClientRect.height 的滚动条高度 4 像素\n const IEHeaderWrap = getIEVersion() <= 11 ? 4 : 0;\n const barWidth = isWidthOverflow.value ? scrollbarWidth.value : 0;\n const affixHeaderHeight = ref((affixHeaderRef.value?.getBoundingClientRect().height || 0) - IEHeaderWrap);\n // 等待表头渲染完成后再更新高度,有可能列变动带来多级表头的高度变化,错误高度会导致滚动条显示\n const timer = setTimeout(() => {\n affixHeaderHeight.value = (affixHeaderRef.value?.getBoundingClientRect().height || 0) - IEHeaderWrap;\n clearTimeout(timer);\n }, 0);\n const affixHeaderWrapHeight = computed(() => affixHeaderHeight.value - barWidth);\n // 两类场景:1. 虚拟滚动,永久显示表头,直到表头消失在可视区域; 2. 表头吸顶,根据滚动情况判断是否显示吸顶表头\n const headerOpacity = props.headerAffixedTop ? Number(showAffixHeader.value) : 1;\n const affixHeaderWrapHeightStyle = computed(() => {\n return {\n width: `${tableWidth.value}px`,\n height: `${affixHeaderWrapHeight.value}px`,\n opacity: headerOpacity,\n };\n });\n // 多级表头左边线缺失\n const affixedLeftBorder = props.bordered ? 1 : 0;\n const affixedHeader = Boolean(\n (props.headerAffixedTop || virtualConfig.isVirtualScroll.value) && tableWidth.value,\n ) && (\n <div\n ref={affixHeaderRef}\n style={{\n width: `${tableWidth.value - affixedLeftBorder}px`,\n opacity: Number(showAffixHeader.value),\n }}\n class={[\n 'scrollbar',\n {\n [tableBaseClass.affixedHeaderElm]: props.headerAffixedTop || virtualConfig.isVirtualScroll.value,\n },\n ]}\n >\n <table\n class={tableElmClasses.value}\n style={{ ...tableElementStyles.value, width: `${tableElmWidth.value}px` }}\n >\n {renderColGroup(true)}\n <THead v-slots={context.slots} {...headProps} />\n </table>\n </div>\n );\n\n // 添加这一层,是为了隐藏表头的横向滚动条。如果以后不需要照顾 IE 10 以下的项目,则可直接移除这一层\n // 彼时,可更为使用 CSS 样式中的 .hideScrollbar()\n const affixHeaderWithWrap = (\n <div class={tableBaseClass.affixedHeaderWrap} style={affixHeaderWrapHeightStyle.value}>\n {affixedHeader}\n </div>\n );\n\n /**\n * Affixed Footer\n */\n let marginScrollbarWidth = isWidthOverflow.value ? scrollbarWidth.value : 0;\n if (props.bordered) {\n marginScrollbarWidth += 1;\n }\n // Hack: Affix 组件,marginTop 临时使用 负 margin 定位位置\n const showFooter = Boolean(virtualConfig.isVirtualScroll.value || props.footerAffixedBottom);\n const hasFooter = props.footData?.length || props.footerSummary || context.slots['footerSummary'];\n const affixedFooter = Boolean(showFooter && hasFooter && tableWidth.value) && (\n <Affix\n class={tableBaseClass.affixedFooterWrap}\n onFixedChange={onFixedChange}\n offsetBottom={marginScrollbarWidth || 0}\n {...getAffixProps(props.footerAffixedBottom)}\n style={{ marginTop: `${-1 * ((tableFootHeight.value ?? 0) + marginScrollbarWidth)}px` }}\n ref={footerBottomAffixRef}\n >\n <div\n ref={affixFooterRef}\n style={{ width: `${tableWidth.value - affixedLeftBorder}px`, opacity: Number(showAffixFooter.value) }}\n class={[\n 'scrollbar',\n {\n [tableBaseClass.affixedFooterElm]: props.footerAffixedBottom || virtualConfig.isVirtualScroll.value,\n },\n ]}\n >\n <table\n class={tableElmClasses.value}\n style={{ ...tableElementStyles.value, width: `${tableElmWidth.value}px` }}\n >\n {/* 此处和 Vue2 不同,Vue3 里面必须每一处单独写 <colgroup> */}\n {renderColGroup(true)}\n <TFoot\n rowKey={props.rowKey}\n v-slots={context.slots}\n isFixedHeader={isFixedHeader.value}\n rowAndColFixedPosition={rowAndColFixedPosition.value}\n footData={props.footData}\n columns={spansAndLeafNodes.value.leafColumns}\n rowAttributes={props.rowAttributes}\n rowClassName={props.rowClassName}\n thWidthList={thWidthList.value}\n footerSummary={props.footerSummary}\n rowspanAndColspanInFooter={props.rowspanAndColspanInFooter}\n ></TFoot>\n </table>\n </div>\n </Affix>\n );\n\n // 通过 translate 撑开虚拟滚动的高度,应该是内容高度加上表头和表尾的高度\n const translate = `translate(0, ${\n virtualConfig.scrollHeight.value + (tableFootHeight.value ?? 0) + (affixHeaderHeight.value ?? 0)\n }px)`;\n const virtualStyle = {\n transform: translate,\n '-ms-transform': translate,\n '-moz-transform': translate,\n '-webkit-transform': translate,\n };\n const tableBodyProps = {\n classPrefix,\n ellipsisOverlayClassName: tableSize.value !== 'medium' ? sizeClassNames[tableSize.value] : '',\n rowAndColFixedPosition: rowAndColFixedPosition.value,\n showColumnShadow,\n data: data,\n virtualConfig,\n columns: spansAndLeafNodes.value.leafColumns,\n tableElm: tableRef.value,\n tableWidth: tableWidth.value,\n isWidthOverflow: isWidthOverflow.value,\n scroll: props.scroll,\n cellEmptyContent: props.cellEmptyContent,\n tableContentElm: tableContentRef.value,\n handleRowMounted: virtualConfig.handleRowMounted,\n renderExpandedRow: props.renderExpandedRow,\n ...pick(props, extendTableProps),\n // 内部使用分页信息必须取 innerPagination\n pagination: innerPagination.value,\n attach: props.attach,\n hoverRow: hoverRow.value,\n activeRow: tActiveRow.value,\n onRowClick: onInnerRowClick,\n };\n const tableContent = (\n <div\n ref={tableContentRef}\n class={tableBaseClass.content}\n style={tableContentStyles.value}\n onScroll={onInnerVirtualScroll}\n >\n {virtualConfig.isVirtualScroll.value && <div class={virtualScrollClasses.cursor} style={virtualStyle} />}\n\n <table\n ref={tableElmRef}\n class={tableElmClasses.value}\n style={{\n ...tableElementStyles.value,\n width:\n props.resizable && isWidthOverflow.value && tableElmWidth.value\n ? `${tableElmWidth.value}px`\n : tableElementStyles.value.width,\n }}\n >\n {renderColGroup(false)}\n {props.showHeader && (\n <THead\n v-slots={context.slots}\n {...{ ...headProps, thWidthList: columnResizable ? thWidthList.value : {} }}\n />\n )}\n <TBody v-slots={context.slots} ref={tableBodyRef} {...tableBodyProps} />\n <TFoot\n v-slots={context.slots}\n rowKey={props.rowKey}\n isFixedHeader={isFixedHeader.value}\n rowAndColFixedPosition={rowAndColFixedPosition.value}\n footData={props.footData}\n columns={spansAndLeafNodes.value.leafColumns}\n rowAttributes={props.rowAttributes}\n rowClassName={props.rowClassName}\n footerSummary={props.footerSummary}\n rowspanAndColspanInFooter={props.rowspanAndColspanInFooter}\n virtualScroll={virtualConfig.isVirtualScroll.value}\n ></TFoot>\n </table>\n </div>\n );\n\n const getCustomLoadingText = isFunction(props.loading) ? props.loading : context.slots.loading;\n const loadingContent = props.loading !== undefined && (\n <Loading\n loading={!!props.loading}\n text={getCustomLoadingText}\n attach={tableRef.value ? () => tableRef.value : undefined}\n showOverlay\n size=\"small\"\n {...props.loadingProps}\n ></Loading>\n );\n\n const topContent = renderTNode('topContent');\n const bottomContent = renderTNode('bottomContent');\n const pagination = (\n <div\n ref={paginationRef}\n class={tableBaseClass.paginationWrap}\n style={{ opacity: Number(showAffixPagination.value) }}\n >\n {renderPagination()}\n </div>\n );\n\n const bottom = !!bottomContent && (\n <div ref={bottomContentRef} class={tableBaseClass.bottomContent}>\n {bottomContent}\n </div>\n );\n\n return (\n <div\n ref={tableRef}\n tabindex={tableRefTabIndex.value}\n class={dynamicBaseTableClasses.value}\n onFocus={onTableFocus}\n onBlur={onTableBlur}\n >\n {!!topContent && <div class={tableBaseClass.topContent}>{topContent}</div>}\n\n {renderAffixedHeader()}\n\n {tableContent}\n\n {affixedFooter}\n\n {loadingContent}\n\n {bottom}\n\n {/* 右侧滚动条分隔线 */}\n {showRightDivider.value && (\n <div\n class={tableBaseClass.scrollbarDivider}\n style={{\n right: `${scrollbarWidth.value}px`,\n bottom: dividerBottom.value ? `${dividerBottom.value}px` : undefined,\n height: `${tableContentRef.value?.getBoundingClientRect().height}px`,\n }}\n ></div>\n )}\n\n {/* 吸底的滚动条 */}\n {props.horizontalScrollAffixedBottom && renderAffixedHorizontalScrollbar()}\n\n {/* 吸底的分页器 */}\n {props.paginationAffixedBottom ? (\n <Affix offsetBottom={0} {...getAffixProps(props.paginationAffixedBottom)} ref={paginationAffixRef}>\n {pagination}\n </Affix>\n ) : (\n pagination\n )}\n\n {/* 调整列宽时的指示线。由于层级需要比较高,因而放在根节点,避免被吸顶表头覆盖。非必要情况,请勿调整辅助线位置 */}\n <div ref={resizeLineRef} class={tableBaseClass.resizeLine} style={resizeLineStyle}></div>\n </div>\n );\n };\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","BASE_TABLE_EVENTS","BASE_TABLE_ALL_EVENTS","ROW_LISTENERS","map","t","concat","defineComponent","name","props","_objectSpread","renderExpandedRow","Function","onLeafColumnsChange","thDraggable","Boolean","emits","setup","context","_toRefs","toRefs","lazyLoad","renderTNode","useTNodeJSX","tableRef","ref","tableElmRef","tableBodyRef","bottomContentRef","tableFootHeight","_useClassName","useClassName","classPrefix","virtualScrollClasses","tableLayoutClasses","tableBaseClass","tableColFixedClasses","_useStyle","useStyle","tableClasses","sizeClassNames","tableContentStyles","tableElementStyles","_useConfig","useConfig","locale","globalConfig","_useTableHeader","useTableHeader","isMultipleHeader","spansAndLeafNodes","thList","finalColumns","computed","_spansAndLeafNodes$va","value","leafColumns","columns","tableSize","_props2$size","size","_useElementLazyRender","useElementLazyRender","showElement","paginationAffixRef","horizontalScrollAffixRef","headerTopAffixRef","footerBottomAffixRef","_useFixed","useFixed","scrollbarWidth","tableWidth","tableElmWidth","tableContentRef","isFixedHeader","isWidthOverflow","isFixedColumn","thWidthList","showColumnShadow","rowAndColFixedPosition","setData","refreshTable","setTableElmWidth","emitScrollEvent","setUseFixedTableElmRef","updateColumnFixedShadow","getThWidthList","updateThWidthList","addTableResizeObserver","updateTableAfterColumnResize","_useAffix","useAffix","affixHeaderRef","affixFooterRef","horizontalScrollbarRef","paginationRef","showAffixHeader","showAffixFooter","showAffixPagination","onHorizontalScroll","setTableContentRef","updateAffixHeaderOrFooter","_usePagination","usePagination","dataSource","innerPagination","isPaginateData","renderPagination","columnResizeParams","useColumnResize","onColumnResizeChange","resizeLineRef","resizeLineStyle","setEffectColMap","dynamicBaseTableClasses","_defineProperty","headerFixed","columnFixed","widthOverflow","multipleHeader","leftShadow","left","rightShadow","right","columnResizableTable","resizable","activeRowType","tableElmClasses","tableLayout","showRightDivider","bordered","dividerBottom","_bottomContentRef$val","_paginationRef$value","bottomRect","getBoundingClientRect","paginationRect","height","_useRowHighlight","useRowHighlight","tActiveRow","onHighlightRow","addHighlightKeyboardListener","removeHighlightKeyboardListener","_useHoverKeyboardEven","useHoverKeyboardEvent","hoverRow","needKeyboardRowHover","clearHoverRow","addRowHoverKeyboardListener","removeRowHoverKeyboardListener","tableRefTabIndex","watch","data","_props2$onLeafColumns","immediate","onFixedChange","nextTick","syncThWidthList","throttle","virtualScrollParams","scroll","fixedRows","virtualConfig","useVirtualScrollNew","lastScrollY","onInnerVirtualScroll","e","target","srcElement","top","scrollTop","isVirtualScroll","handleScroll","getTFootHeight","_tableElmRef$value$qu","querySelector","scrollColumnIntoView","colKey","thDom","fixedThDom","querySelectorAll","totalWidth","i","len","length","width","domRect","contentRect","distance","scrollTo","behavior","footData","footerSummary","timer","setTimeout","clearTimeout","onMounted","onTableFocus","onTableBlur","onInnerRowClick","ctx","_props2$onRowClick","onRowClick","_ref2","_ref3","_slicedToArray","emit","tableData","scrollToElement","params","index","_tableData$value","key","log","error","findIndex","item","get","rowKey","_tableBodyRef$value","_el$children","el","$el","row","children","_params$top","_params$behavior","offsetTop","scrollHeight","scrollBy","expose","_props2$allowResizeCo","_affixHeaderRef$value","_props2$footData","_tableFootHeight$valu","_tableFootHeight$valu2","_affixHeaderHeight$va","_tableContentRef$valu","_createVNode","columnResizable","allowResizeColumnWidth","warn","defaultColWidth","renderColGroup","isAffixHeader","arguments","undefined","col","style","formatCSSUnit","minWidth","renderAffixedHeader","showHeader","headerAffixedTop","Affix","_mergeProps","getAffixProps","affixHeaderWithWrap","_default","renderAffixedHorizontalScrollbar","horizontalScrollAffixedBottom","marginTop","obviousScrollbar","overflow","opacity","Number","headProps","maxHeight","ellipsisOverlayClassName","attach","IEHeaderWrap","getIEVersion","barWidth","affixHeaderHeight","_affixHeaderRef$value2","affixHeaderWrapHeight","headerOpacity","affixHeaderWrapHeightStyle","affixedLeftBorder","affixedHeader","affixedHeaderElm","THead","slots","affixedHeaderWrap","marginScrollbarWidth","showFooter","footerAffixedBottom","hasFooter","affixedFooter","affixedFooterWrap","affixedFooterElm","TFoot","rowAttributes","rowClassName","rowspanAndColspanInFooter","translate","virtualStyle","transform","tableBodyProps","tableElm","cellEmptyContent","tableContentElm","handleRowMounted","pick","extendTableProps","pagination","activeRow","tableContent","content","cursor","TBody","getCustomLoadingText","isFunction","loading","loadingContent","Loading","loadingProps","topContent","bottomContent","paginationWrap","bottom","scrollbarDivider","paginationAffixedBottom","resizeLine"],"mappings":"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