import PropTypes from '../../_util/vue-types'; import { measureScrollbar } from './utils'; import BaseTable from './BaseTable'; export default { name: 'HeadTable', props: { fixed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]), columns: PropTypes.array.isRequired, tableClassName: PropTypes.string.isRequired, handleBodyScrollLeft: PropTypes.func.isRequired, expander: PropTypes.object.isRequired, }, inject: { table: { default: {} }, }, mounted() { this.updateTableRef(); }, updated() { this.updateTableRef(); }, methods: { updateTableRef() { this.$nextTick(() => { this.$refs.headTable && this.table.saveChildrenRef('headTable', this.$refs.headTable); }); }, }, render() { const { columns, fixed, tableClassName, handleBodyScrollLeft, expander, table } = this; const { prefixCls, scroll, showHeader } = table; let { useFixedHeader } = table; const headStyle = {}; if (scroll.y) { useFixedHeader = true; // Add negative margin bottom for scroll bar overflow bug const scrollbarWidth = measureScrollbar('horizontal'); if (scrollbarWidth > 0 && !fixed) { headStyle.marginBottom = `-${scrollbarWidth}px`; headStyle.paddingBottom = '0px'; } } if (!useFixedHeader || !showHeader) { return null; } return (