UNPKG

tdesign-react

Version:
740 lines (732 loc) 37 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var defineProperty = require('../_chunks/dep-0006fcfa.js'); var slicedToArray = require('../_chunks/dep-8e4d656d.js'); var React = require('react'); var classNames = require('classnames'); var log = require('../_chunks/dep-59671c87.js'); var helper = require('../_chunks/dep-002fcc1e.js'); var affix_index = require('../affix/index.js'); var hooks_useDefaultProps = require('../hooks/useDefaultProps.js'); var hooks_useElementLazyRender = require('../hooks/useElementLazyRender.js'); var hooks_useVirtualScroll = require('../hooks/useVirtualScroll.js'); var loading_index = require('../loading/index.js'); var table_TBody = require('./TBody.js'); var table_TFoot = require('./TFoot.js'); var table_THead = require('./THead.js'); var table_TR = require('./TR.js'); var table_defaultProps = require('./defaultProps.js'); var table_hooks_useAffix = require('./hooks/useAffix.js'); var table_hooks_useClassName = require('./hooks/useClassName.js'); var table_hooks_useColumnResize = require('./hooks/useColumnResize.js'); var table_hooks_useFixed = require('./hooks/useFixed.js'); var table_hooks_usePagination = require('./hooks/usePagination.js'); var table_hooks_useStyle = require('./hooks/useStyle.js'); var table_hooks_useTableHeader = require('./hooks/useTableHeader.js'); var table_utils = require('./utils.js'); var pick = require('../_chunks/dep-1e4197a4.js'); require('../_chunks/dep-667ac7af.js'); require('../_chunks/dep-00b49251.js'); require('../_chunks/dep-e4e1901e.js'); require('../_chunks/dep-2ffa3ff1.js'); require('../_chunks/dep-25585736.js'); require('../_chunks/dep-62e73936.js'); require('../affix/Affix.js'); require('../hooks/useConfig.js'); require('../config-provider/ConfigContext.js'); require('../_chunks/dep-1df1dad8.js'); require('../_chunks/dep-5b5ab11b.js'); require('dayjs'); require('../_chunks/dep-f32c03f1.js'); require('../_chunks/dep-31c4bc3d.js'); require('../_chunks/dep-eea2872a.js'); require('../_chunks/dep-64577888.js'); require('../_chunks/dep-71455db7.js'); require('../_chunks/dep-9e5a468d.js'); require('../_chunks/dep-ec8d2dca.js'); require('../_chunks/dep-fc596d16.js'); require('../_chunks/dep-f26edb7b.js'); require('../_chunks/dep-f33c1939.js'); require('../_chunks/dep-21ece627.js'); require('../_chunks/dep-25e4aa84.js'); require('../_chunks/dep-e1fbe1c3.js'); require('../_chunks/dep-df2b541f.js'); require('../_chunks/dep-edd366db.js'); require('../_chunks/dep-a56c4939.js'); require('../_chunks/dep-6c297e20.js'); require('../_chunks/dep-b7ad4d54.js'); require('../_chunks/dep-a2cb9299.js'); require('../_chunks/dep-f981815b.js'); require('../affix/defaultProps.js'); require('../_util/scroll.js'); require('raf'); require('../_chunks/dep-381fa848.js'); require('../_chunks/dep-4ed9eda4.js'); require('../_util/easing.js'); require('../_chunks/dep-adacb8cb.js'); require('../_chunks/dep-eb6d55c1.js'); require('../_chunks/dep-014b9b78.js'); require('../_chunks/dep-abdd786a.js'); require('../_chunks/dep-3d4656ee.js'); require('../_chunks/dep-0ffc9d96.js'); require('../_chunks/dep-efe6d243.js'); require('../_chunks/dep-4b18243f.js'); require('../_chunks/dep-bff2c990.js'); require('../loading/Loading.js'); require('../common/Portal.js'); require('react-dom'); require('../hooks/useLayoutEffect.js'); require('../loading/gradient.js'); require('../_chunks/dep-dc4ce063.js'); require('../hooks/useDomRefCallback.js'); require('../loading/defaultProps.js'); require('../loading/plugin.js'); require('../_util/react-render.js'); require('../_chunks/dep-65ef8e09.js'); require('../common/PluginContainer.js'); require('../config-provider/ConfigProvider.js'); require('../_chunks/dep-ab2f63ec.js'); require('../_chunks/dep-a48c7e8b.js'); require('../locale/LocalReceiver.js'); require('./hooks/useRowspanAndColspan.js'); require('../_chunks/dep-0c8c9057.js'); require('../_chunks/dep-3398c1f2.js'); require('../_chunks/dep-79629634.js'); require('../_chunks/dep-255ceed8.js'); require('../_chunks/dep-840b1644.js'); require('../_chunks/dep-66114ce9.js'); require('../_chunks/dep-62d1dd66.js'); require('../_chunks/dep-7a148045.js'); require('./Ellipsis.js'); require('../tooltip/index.js'); require('../tooltip/Tooltip.js'); require('../_chunks/dep-8fa3a4c2.js'); require('../popup/index.js'); require('../popup/Popup.js'); require('react-transition-group'); require('../_util/ref.js'); require('react-is'); require('../_util/isFragment.js'); require('../hooks/useAnimation.js'); require('../hooks/useAttach.js'); require('../hooks/useControlled.js'); require('../_util/noop.js'); require('../hooks/useMutationObserver.js'); require('../hooks/useLatest.js'); require('../_chunks/dep-a231fdc5.js'); require('../_chunks/dep-cf14666e.js'); require('../hooks/usePopper.js'); require('@popperjs/core'); require('react-fast-compare'); require('../hooks/useWindowSize.js'); require('../popup/defaultProps.js'); require('../popup/hooks/useTrigger.js'); require('../_util/composeRefs.js'); require('../_util/listener.js'); require('../popup/utils/transition.js'); require('../popup/PopupPlugin.js'); require('../tooltip/defaultProps.js'); require('../tooltip/TooltipLite.js'); require('../hooks/useSwitch.js'); require('../hooks/usePersistFn.js'); require('../_chunks/dep-1438af5a.js'); require('../hooks/useDebounce.js'); require('./hooks/useLazyLoad.js'); require('./Cell.js'); require('../_chunks/dep-b73b8db7.js'); require('../hooks/usePrevious.js'); require('../_chunks/dep-62f5b69f.js'); require('../_chunks/dep-40e87384.js'); require('../_chunks/dep-297a4933.js'); require('../_chunks/dep-fc29b8b5.js'); require('../_chunks/dep-139db759.js'); require('../_chunks/dep-d915c90f.js'); require('../pagination/index.js'); require('../pagination/Pagination.js'); require('../select/index.js'); require('../select/base/Select.js'); require('../_util/forwardRefWithStatics.js'); require('hoist-non-react-statics'); require('../_util/helper.js'); require('../_util/parseTNode.js'); require('../common/FakeArrow.js'); require('../select-input/index.js'); require('../select-input/SelectInput.js'); require('../select-input/useSingle.js'); require('../input/index.js'); require('../input/Input.js'); require('tdesign-icons-react'); require('../hooks/useGlobalIcon.js'); require('../input/InputGroup.js'); require('../input/defaultProps.js'); require('../input/useLengthLimit.js'); require('../select-input/useMultiple.js'); require('../tag-input/index.js'); require('../tag-input/TagInput.js'); require('../hooks/useDragSorter.js'); require('../hooks/useEventCallback.js'); require('../tag-input/defaultProps.js'); require('../tag-input/useHover.js'); require('../tag-input/useTagList.js'); require('../tag/index.js'); require('../tag/Tag.js'); require('../_chunks/dep-4d5c26af.js'); require('../tag/defaultProps.js'); require('../tag/CheckTag.js'); require('../_chunks/dep-4406837c.js'); require('../tag/CheckTagGroup.js'); require('../tag-input/useTagScroll.js'); require('../select-input/useOverlayInnerStyle.js'); require('../select-input/defaultProps.js'); require('../_chunks/dep-e57bdc8f.js'); require('../_chunks/dep-22b1740a.js'); require('../_chunks/dep-373af7a2.js'); require('../select/defaultProps.js'); require('../_chunks/dep-e83bd2ab.js'); require('../select/base/OptionGroup.js'); require('../select/base/Option.js'); require('../hooks/useRipple.js'); require('../select/base/PopupContent.js'); require('../select/hooks/usePanelVirtualScroll.js'); require('../input-number/index.js'); require('../input-number/InputNumber.js'); require('../button/index.js'); require('../button/Button.js'); require('../button/defaultProps.js'); require('../input-number/useInputNumber.js'); require('../_chunks/dep-e75d22fc.js'); require('../_chunks/dep-221787fe.js'); require('../hooks/useCommonClassName.js'); require('../input-number/defaultProps.js'); require('../input-adornment/InputAdornment.js'); require('../pagination/hooks/useBoundaryJumper.js'); require('../pagination/hooks/usePrevNextJumper.js'); require('../pagination/hooks/usePageNumber.js'); require('../pagination/hooks/useTotal.js'); require('../pagination/validators.js'); require('../pagination/defaultProps.js'); require('../_chunks/dep-d5e8c967.js'); require('../_chunks/dep-9a375a19.js'); require('../pagination/PaginationMini.js'); require('./hooks/useMultiHeader.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var BASE_TABLE_EVENTS = ["page-change", "cell-click", "scroll", "scrollX", "scrollY"]; var BASE_TABLE_ALL_EVENTS = table_TR.ROW_LISTENERS.map(function (t) { return "row-".concat(t); }).concat(BASE_TABLE_EVENTS); var BaseTable = /*#__PURE__*/React.forwardRef(function (originalProps, ref) { var _affixHeaderRef$curre; var props = hooks_useDefaultProps["default"](originalProps, table_defaultProps.baseTableDefaultProps); var _props$showHeader = props.showHeader, showHeader = _props$showHeader === void 0 ? true : _props$showHeader, tableLayout = props.tableLayout, height = props.height, data = props.data, columns = props.columns, style = props.style, headerAffixedTop = props.headerAffixedTop, bordered = props.bordered, resizable = props.resizable, lazyLoad = props.lazyLoad, pagination = props.pagination; var tableRef = React.useRef(null); var tableElmRef = React.useRef(null); var bottomContentRef = React.useRef(null); var _useState = React.useState(0), _useState2 = slicedToArray._slicedToArray(_useState, 2), tableFootHeight = _useState2[0], setTableFootHeight = _useState2[1]; var _useState3 = React.useState(0), _useState4 = slicedToArray._slicedToArray(_useState3, 2), lastTrHeight = _useState4[0], setLastTrHeight = _useState4[1]; var allTableClasses = table_hooks_useClassName["default"](); var classPrefix = allTableClasses.classPrefix, virtualScrollClasses = allTableClasses.virtualScrollClasses, tableLayoutClasses = allTableClasses.tableLayoutClasses, tableBaseClass = allTableClasses.tableBaseClass, tableColFixedClasses = allTableClasses.tableColFixedClasses; var _useStyle = table_hooks_useStyle["default"](props), tableClasses = _useStyle.tableClasses, sizeClassNames = _useStyle.sizeClassNames, tableContentStyles = _useStyle.tableContentStyles, tableElementStyles = _useStyle.tableElementStyles; var _useTableHeader = table_hooks_useTableHeader["default"]({ columns: props.columns }), isMultipleHeader = _useTableHeader.isMultipleHeader, spansAndLeafNodes = _useTableHeader.spansAndLeafNodes, thList = _useTableHeader.thList; var finalColumns = React.useMemo(function () { return (spansAndLeafNodes === null || spansAndLeafNodes === void 0 ? void 0 : spansAndLeafNodes.leafColumns) || columns; }, [spansAndLeafNodes === null || spansAndLeafNodes === void 0 ? void 0 : spansAndLeafNodes.leafColumns, columns]); var _useElementLazyRender = hooks_useElementLazyRender.useElementLazyRender(tableRef, lazyLoad), showElement = _useElementLazyRender.showElement; var paginationAffixRef = React.useRef(null); var horizontalScrollAffixRef = React.useRef(null); var headerTopAffixRef = React.useRef(null); var footerBottomAffixRef = React.useRef(null); var _useAffix = table_hooks_useAffix["default"](props, { showElement: showElement }), affixHeaderRef = _useAffix.affixHeaderRef, affixFooterRef = _useAffix.affixFooterRef, horizontalScrollbarRef = _useAffix.horizontalScrollbarRef, paginationRef = _useAffix.paginationRef, showAffixHeader = _useAffix.showAffixHeader, showAffixFooter = _useAffix.showAffixFooter, showAffixPagination = _useAffix.showAffixPagination, onHorizontalScroll = _useAffix.onHorizontalScroll, setTableContentRef = _useAffix.setTableContentRef, updateAffixHeaderOrFooter = _useAffix.updateAffixHeaderOrFooter; var _useFixed = table_hooks_useFixed["default"](props, finalColumns, { paginationAffixRef: paginationAffixRef, horizontalScrollAffixRef: horizontalScrollAffixRef, headerTopAffixRef: headerTopAffixRef, footerBottomAffixRef: footerBottomAffixRef }), scrollbarWidth = _useFixed.scrollbarWidth, tableWidth = _useFixed.tableWidth, tableElmWidth = _useFixed.tableElmWidth, tableContentRef = _useFixed.tableContentRef, isFixedHeader = _useFixed.isFixedHeader, isWidthOverflow = _useFixed.isWidthOverflow, isFixedColumn = _useFixed.isFixedColumn, thWidthList = _useFixed.thWidthList, showColumnShadow = _useFixed.showColumnShadow, rowAndColFixedPosition = _useFixed.rowAndColFixedPosition, setData = _useFixed.setData, refreshTable = _useFixed.refreshTable, setTableElmWidth = _useFixed.setTableElmWidth, emitScrollEvent = _useFixed.emitScrollEvent, setUseFixedTableElmRef = _useFixed.setUseFixedTableElmRef, updateColumnFixedShadow = _useFixed.updateColumnFixedShadow, getThWidthList = _useFixed.getThWidthList, updateThWidthList = _useFixed.updateThWidthList, addTableResizeObserver = _useFixed.addTableResizeObserver, updateTableAfterColumnResize = _useFixed.updateTableAfterColumnResize; var _usePagination = table_hooks_usePagination["default"](props, tableContentRef), dataSource = _usePagination.dataSource, innerPagination = _usePagination.innerPagination, isPaginateData = _usePagination.isPaginateData, renderPagination = _usePagination.renderPagination; var columnResizeParams = table_hooks_useColumnResize["default"]({ isWidthOverflow: isWidthOverflow, tableContentRef: tableContentRef, showColumnShadow: showColumnShadow, getThWidthList: getThWidthList, updateThWidthList: updateThWidthList, setTableElmWidth: setTableElmWidth, updateTableAfterColumnResize: updateTableAfterColumnResize, onColumnResizeChange: props.onColumnResizeChange }); var resizeLineRef = columnResizeParams.resizeLineRef, resizeLineStyle = columnResizeParams.resizeLineStyle, setEffectColMap = columnResizeParams.setEffectColMap, updateTableWidthOnColumnChange = columnResizeParams.updateTableWidthOnColumnChange; var dynamicBaseTableClasses = classNames__default["default"](tableClasses.concat(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty({}, tableBaseClass.headerFixed, isFixedHeader), tableBaseClass.columnFixed, isFixedColumn), tableBaseClass.widthOverflow, isWidthOverflow), tableBaseClass.multipleHeader, isMultipleHeader), tableColFixedClasses.leftShadow, showColumnShadow.left), tableColFixedClasses.rightShadow, showColumnShadow.right), tableBaseClass.columnResizableTable, props.resizable))); var tableElmClasses = classNames__default["default"]([[tableLayoutClasses[tableLayout || "fixed"]], defineProperty._defineProperty({}, tableBaseClass.fullHeight, height)]); var showRightDivider = React.useMemo(function () { return props.bordered && isFixedHeader && (isMultipleHeader && isWidthOverflow || !isMultipleHeader); }, [isFixedHeader, isMultipleHeader, isWidthOverflow, props.bordered]); var _useState5 = React.useState(0), _useState6 = slicedToArray._slicedToArray(_useState5, 2), dividerBottom = _useState6[0], setDividerBottom = _useState6[1]; React.useEffect(function () { var _bottomContentRef$cur, _paginationRef$curren; if (!bordered) return; var bottomRect = (_bottomContentRef$cur = bottomContentRef.current) === null || _bottomContentRef$cur === void 0 ? void 0 : _bottomContentRef$cur.getBoundingClientRect(); var paginationRect = (_paginationRef$curren = paginationRef.current) === null || _paginationRef$curren === void 0 ? void 0 : _paginationRef$curren.getBoundingClientRect(); var bottom2 = ((bottomRect === null || bottomRect === void 0 ? void 0 : bottomRect.height) || 0) + ((paginationRect === null || paginationRect === void 0 ? void 0 : paginationRect.height) || 0); setDividerBottom(bottom2); }, [bottomContentRef, paginationRef, bordered]); React.useEffect(function () { setUseFixedTableElmRef(tableElmRef.current); }, [tableElmRef]); React.useEffect(function () { setData(isPaginateData ? dataSource : props.data); }, [props.data, dataSource, isPaginateData]); var _useState7 = React.useState(props.columns || []), _useState8 = slicedToArray._slicedToArray(_useState7, 2), lastLeafColumns = _useState8[0], setLastLeafColumns = _useState8[1]; React.useEffect(function () { if (lastLeafColumns.map(function (t) { return t.colKey; }).join() !== spansAndLeafNodes.leafColumns.map(function (t) { return t.colKey; }).join()) { var _props$onLeafColumnsC; (_props$onLeafColumnsC = props.onLeafColumnsChange) === null || _props$onLeafColumnsC === void 0 || _props$onLeafColumnsC.call(props, spansAndLeafNodes.leafColumns); setLastLeafColumns(spansAndLeafNodes.leafColumns); } setEffectColMap(spansAndLeafNodes.leafColumns, null); }, [spansAndLeafNodes.leafColumns]); var onFixedChange = function onFixedChange() { var timer = setTimeout(function () { onHorizontalScroll(); updateAffixHeaderOrFooter(); clearTimeout(timer); }, 0); }; var virtualScrollParams = React.useMemo(function () { return { data: data, scroll: _objectSpread(_objectSpread({}, props.scroll), {}, { fixedRows: props.fixedRows }) }; }, [data, props.scroll, props.fixedRows]); var virtualConfig = hooks_useVirtualScroll["default"](tableContentRef, virtualScrollParams); var lastScrollY = -1; var onInnerVirtualScroll = function onInnerVirtualScroll(e) { var target = e.target; var top = target.scrollTop; if (lastScrollY !== top) { virtualConfig.isVirtualScroll && virtualConfig.handleScroll(); } else { lastScrollY = -1; updateColumnFixedShadow(target); } lastScrollY = top; onHorizontalScroll(target); emitScrollEvent(e); }; var scrollColumnIntoView = function scrollColumnIntoView(colKey) { if (!tableContentRef.current) return; var thDom = tableContentRef.current.querySelector("th[data-colkey=\"".concat(colKey, "\"]")); var fixedThDom = tableContentRef.current.querySelectorAll("th.t-table__cell--fixed-left"); var totalWidth = 0; for (var i = 0, len = fixedThDom.length; i < len; i++) { totalWidth += fixedThDom[i].getBoundingClientRect().width; } var domRect = thDom.getBoundingClientRect(); var contentRect = tableContentRef.current.getBoundingClientRect(); var distance = domRect.left - contentRect.left - totalWidth; tableContentRef.current.scrollTo({ left: distance, behavior: "smooth" }); }; React.useImperativeHandle(ref, function () { return { showColumnShadow: showColumnShadow, tableElement: tableRef.current, tableHtmlElement: tableElmRef.current, tableContentElement: tableContentRef.current, affixHeaderElement: affixHeaderRef.current, refreshTable: refreshTable, scrollToElement: virtualConfig.scrollToElement, scrollColumnIntoView: scrollColumnIntoView, updateTableWidthOnColumnChange: updateTableWidthOnColumnChange }; }); var getTFootHeight = function getTFootHeight() { requestAnimationFrame(function () { var _tableElmRef$current$; if (!tableElmRef.current) return; var height2 = (_tableElmRef$current$ = tableElmRef.current.querySelector("tfoot")) === null || _tableElmRef$current$ === void 0 ? void 0 : _tableElmRef$current$.offsetHeight; setTableFootHeight(height2 || 0); }); }; var getLastTrHeight = function getLastTrHeight() { requestAnimationFrame(function () { if (!tableElmRef.current || !props.firstFullRow) return; var tbody = tableElmRef.current.querySelector("tbody"); var allTr = tbody === null || tbody === void 0 ? void 0 : tbody.querySelectorAll("tr"); var lastTr = allTr === null || allTr === void 0 ? void 0 : allTr[allTr.length - 1]; var height2 = lastTr === null || lastTr === void 0 ? void 0 : lastTr.offsetHeight; setLastTrHeight(height2 || 0); }); }; React.useEffect(getTFootHeight, [tableElmRef, props.footData, props.footerSummary]); React.useEffect(getLastTrHeight, [tableElmRef, props.firstFullRow]); React.useEffect(function () { setTableContentRef(tableContentRef.current); }, [tableContentRef]); React.useEffect(function () { return addTableResizeObserver(tableRef.current); }, [tableRef]); var newData = isPaginateData ? dataSource : data; var renderColGroup = function renderColGroup() { var isFixedHeader2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; return /* @__PURE__ */React__default["default"].createElement("colgroup", null, finalColumns.map(function (col, index) { var style2 = { width: table_hooks_useStyle.formatCSSUnit((isFixedHeader2 || resizable ? thWidthList.current[col.colKey] : void 0) || col.width) }; if (col.minWidth) { style2.minWidth = table_hooks_useStyle.formatCSSUnit(col.minWidth); } if (!style2.width && !col.minWidth && props.tableLayout === "fixed") { style2.minWidth = "80px"; } return /* @__PURE__ */React__default["default"].createElement("col", { key: col.colKey || index, style: style2 }); })); }; var headProps = { isFixedHeader: isFixedHeader, rowAndColFixedPosition: rowAndColFixedPosition, isMultipleHeader: isMultipleHeader, bordered: props.bordered, maxHeight: props.maxHeight, height: props.height, spansAndLeafNodes: spansAndLeafNodes, thList: thList, thWidthList: thWidthList.current, resizable: props.resizable, columnResizeParams: columnResizeParams, classPrefix: classPrefix, ellipsisOverlayClassName: props.size !== "medium" ? sizeClassNames[props.size] : "", attach: props.attach, thDraggable: props.thDraggable, showColumnShadow: showColumnShadow }; var headUseMemoDependencies = [resizable, thWidthList, isFixedHeader, rowAndColFixedPosition, isMultipleHeader, spansAndLeafNodes, thList, columnResizeParams, classPrefix, props.bordered, props.resizable, props.size]; var affixedLeftBorder = props.bordered ? 1 : 0; var IEHeaderWrap = helper.getIEVersion() <= 11 ? 4 : 0; var affixHeaderHeight = (((_affixHeaderRef$curre = affixHeaderRef.current) === null || _affixHeaderRef$curre === void 0 ? void 0 : _affixHeaderRef$curre.getBoundingClientRect().height) || 0) - IEHeaderWrap; var renderFixedHeader = function renderFixedHeader() { if (!showHeader) return null; var headerOpacity = headerAffixedTop ? Number(showAffixHeader) : 1; var barWidth = isWidthOverflow ? scrollbarWidth : 0; var affixHeaderWrapHeight = affixHeaderHeight - barWidth; var affixHeaderWrapHeightStyle = { width: "".concat(tableWidth.current, "px"), height: "".concat(affixHeaderWrapHeight, "px"), opacity: headerOpacity }; var affixedHeader = Boolean((headerAffixedTop || virtualConfig.isVirtualScroll) && tableWidth.current) && /* @__PURE__ */React__default["default"].createElement("div", { ref: affixHeaderRef, style: { width: "".concat(tableWidth.current - affixedLeftBorder, "px"), opacity: headerOpacity }, className: classNames__default["default"](["scrollbar", defineProperty._defineProperty({}, tableBaseClass.affixedHeaderElm, props.headerAffixedTop || virtualConfig.isVirtualScroll)]) }, /* @__PURE__ */React__default["default"].createElement("table", { className: classNames__default["default"](tableElmClasses), style: _objectSpread(_objectSpread({}, tableElementStyles), {}, { width: tableElmWidth.current ? "".concat(tableElmWidth.current, "px") : void 0 }) }, renderColGroup(true), showHeader && /* @__PURE__ */React__default["default"].createElement(table_THead["default"], _objectSpread({}, headProps)))); var affixHeaderWithWrap = /* @__PURE__ */React__default["default"].createElement("div", { className: tableBaseClass.affixedHeaderWrap, style: affixHeaderWrapHeightStyle }, affixedHeader); return affixHeaderWithWrap; }; var renderAffixedHeader = function renderAffixedHeader() { if (!showHeader) return null; return !!(virtualConfig.isVirtualScroll || props.headerAffixedTop) && (props.headerAffixedTop ? /* @__PURE__ */React__default["default"].createElement(affix_index.Affix, _objectSpread(_objectSpread({ offsetTop: 0 }, table_utils.getAffixProps(props.headerAffixedTop, props.headerAffixProps)), {}, { ref: headerTopAffixRef, onFixedChange: onFixedChange }), renderFixedHeader()) : isFixedHeader && renderFixedHeader()); }; var renderAffixedFooter = function renderAffixedFooter() { var _props$footData; var marginScrollbarWidth = isWidthOverflow ? scrollbarWidth : 0; if (bordered) { marginScrollbarWidth += 1; } var totalMarginTop = tableFootHeight - lastTrHeight + marginScrollbarWidth; var affixedFooter = Boolean((virtualConfig.isVirtualScroll || props.footerAffixedBottom) && ((_props$footData = props.footData) === null || _props$footData === void 0 ? void 0 : _props$footData.length) && tableWidth.current) && /* @__PURE__ */React__default["default"].createElement(affix_index.Affix, _objectSpread(_objectSpread({ className: tableBaseClass.affixedFooterWrap, onFixedChange: onFixedChange, offsetBottom: marginScrollbarWidth || 0 }, table_utils.getAffixProps(props.footerAffixedBottom)), {}, { ref: footerBottomAffixRef, style: { marginTop: "".concat(-1 * totalMarginTop, "px") } }), /* @__PURE__ */React__default["default"].createElement("div", { ref: affixFooterRef, style: { width: "".concat(tableWidth.current - affixedLeftBorder, "px"), opacity: Number(showAffixFooter) }, className: classNames__default["default"](["scrollbar", defineProperty._defineProperty({}, tableBaseClass.affixedFooterElm, props.footerAffixedBottom || virtualConfig.isVirtualScroll)]) }, /* @__PURE__ */React__default["default"].createElement("table", { className: tableElmClasses, style: _objectSpread(_objectSpread({}, tableElementStyles), {}, { width: tableElmWidth.current ? "".concat(tableElmWidth.current, "px") : void 0 }) }, renderColGroup(true), /* @__PURE__ */React__default["default"].createElement(table_TFoot["default"], { rowKey: props.rowKey, isFixedHeader: isFixedHeader, rowAndColFixedPosition: rowAndColFixedPosition, footData: props.footData, columns: (spansAndLeafNodes === null || spansAndLeafNodes === void 0 ? void 0 : spansAndLeafNodes.leafColumns) || columns, rowAttributes: props.rowAttributes, rowClassName: props.rowClassName, thWidthList: thWidthList.current, footerSummary: props.footerSummary, rowspanAndColspanInFooter: props.rowspanAndColspanInFooter })))); return affixedFooter; }; var tableBodyProps = _objectSpread(_objectSpread({ classPrefix: classPrefix, ellipsisOverlayClassName: props.size !== "medium" ? sizeClassNames[props.size] : "", rowAndColFixedPosition: rowAndColFixedPosition, showColumnShadow: showColumnShadow, data: newData, virtualConfig: virtualConfig, handleRowMounted: virtualConfig.handleRowMounted, columns: (spansAndLeafNodes === null || spansAndLeafNodes === void 0 ? void 0 : spansAndLeafNodes.leafColumns) || columns, tableRef: tableRef, tableContentRef: tableContentRef, tableWidth: tableWidth, isWidthOverflow: isWidthOverflow, allTableClasses: allTableClasses, rowKey: props.rowKey || "id", scroll: props.scroll, cellEmptyContent: props.cellEmptyContent, renderExpandedRow: props.renderExpandedRow }, pick.pick(props, table_TBody.extendTableProps)), {}, { pagination: innerPagination }); var translate = "translate(0, ".concat(virtualConfig.scrollHeight + (affixHeaderHeight || 0) + (tableFootHeight || 0), "px)"); var virtualStyle = { transform: translate, msTransform: translate, MozTransform: translate, WebkitTransform: translate }; var tableContent = /* @__PURE__ */React__default["default"].createElement("div", { ref: tableContentRef, className: tableBaseClass.content, style: tableContentStyles, onScroll: onInnerVirtualScroll }, virtualConfig.isVirtualScroll && /* @__PURE__ */React__default["default"].createElement("div", { className: virtualScrollClasses.cursor, style: virtualStyle }), /* @__PURE__ */React__default["default"].createElement("table", { ref: tableElmRef, className: classNames__default["default"](tableElmClasses), style: _objectSpread(_objectSpread({}, tableElementStyles), {}, { width: resizable && isWidthOverflow && tableElmWidth.current ? "".concat(tableElmWidth.current, "px") : tableElementStyles.width }) }, renderColGroup(false), React.useMemo(function () { if (!showHeader) return null; return /* @__PURE__ */React__default["default"].createElement(table_THead["default"], _objectSpread({}, _objectSpread(_objectSpread({}, headProps), {}, { thWidthList: resizable ? thWidthList.current : {} }))); }, headUseMemoDependencies), React.useMemo(function () { return /* @__PURE__ */React__default["default"].createElement(table_TBody["default"], _objectSpread({}, tableBodyProps)); }, [allTableClasses, tableBodyProps.ellipsisOverlayClassName, tableBodyProps.rowAndColFixedPosition, tableBodyProps.showColumnShadow, tableBodyProps.data, tableBodyProps.columns, tableRef, tableContentRef, tableWidth, isWidthOverflow, virtualConfig, props.rowKey, props.rowClassName, props.rowAttributes, props.loading, props.empty, props.fixedRows, props.firstFullRow, props.lastFullRow, props.rowspanAndColspan, props.scroll, props.cellEmptyContent]), React.useMemo(function () { return /* @__PURE__ */React__default["default"].createElement(table_TFoot["default"], { rowKey: props.rowKey, isFixedHeader: isFixedHeader, rowAndColFixedPosition: rowAndColFixedPosition, footData: props.footData, columns: (spansAndLeafNodes === null || spansAndLeafNodes === void 0 ? void 0 : spansAndLeafNodes.leafColumns) || columns, rowAttributes: props.rowAttributes, rowClassName: props.rowClassName, thWidthList: thWidthList.current, footerSummary: props.footerSummary, rowspanAndColspanInFooter: props.rowspanAndColspanInFooter, virtualScroll: virtualConfig.isVirtualScroll }); }, [isFixedHeader, rowAndColFixedPosition, spansAndLeafNodes, columns, thWidthList, props.rowKey, props.footData, props.rowAttributes, props.rowClassName, props.footerSummary, virtualConfig.isVirtualScroll]))); var loading = props.loading, loadingProps = props.loadingProps; var customLoadingText = loading; var loadingContent = tableRef.current && loading !== void 0 && /* @__PURE__ */React__default["default"].createElement(loading_index.Loading, _objectSpread({ loading: !!loading, text: customLoadingText, attach: function attach() { return tableRef.current; }, showOverlay: true, size: "small" }, loadingProps)); var topContent = props.topContent, bottomContent = props.bottomContent; var paginationNode = pagination ? /* @__PURE__ */React__default["default"].createElement("div", { ref: paginationRef, className: tableBaseClass.paginationWrap, style: { opacity: Number(showAffixPagination) } }, renderPagination()) : null; var bottom = !!bottomContent && /* @__PURE__ */React__default["default"].createElement("div", { ref: bottomContentRef, className: tableBaseClass.bottomContent }, bottomContent); var affixedHeaderContent = React.useMemo(renderAffixedHeader, [].concat(headUseMemoDependencies, [showAffixHeader, tableWidth, tableElmWidth, affixHeaderRef, affixedLeftBorder, tableElmClasses, tableElementStyles, columns, spansAndLeafNodes, showHeader, props.headerAffixedTop])); var affixedFooterContent = React.useMemo(renderAffixedFooter, [showAffixFooter, isFixedHeader, rowAndColFixedPosition, spansAndLeafNodes, columns, thWidthList, tableBaseClass, tableElementStyles, tableElmWidth, affixFooterRef, affixedLeftBorder, bordered, isWidthOverflow, scrollbarWidth, tableElmClasses, tableFootHeight, lastTrHeight, tableWidth, virtualConfig.isVirtualScroll, props.rowKey, props.footData, props.rowAttributes, props.rowClassName, props.footerSummary, props.footerAffixedBottom, props.rowspanAndColspanInFooter, tableWidth.current]); var scrollbarDivider = React.useMemo(function () { var _tableContentRef$curr; if (!showRightDivider) return null; return /* @__PURE__ */React__default["default"].createElement("div", { className: tableBaseClass.scrollbarDivider, style: { right: "".concat(scrollbarWidth, "px"), bottom: dividerBottom ? "".concat(dividerBottom, "px") : void 0, height: "".concat((_tableContentRef$curr = tableContentRef.current) === null || _tableContentRef$curr === void 0 ? void 0 : _tableContentRef$curr.getBoundingClientRect().height, "px") } }); }, [tableBaseClass, showRightDivider, scrollbarWidth, dividerBottom, tableContentRef]); var affixedScrollbar = props.horizontalScrollAffixedBottom && /* @__PURE__ */React__default["default"].createElement(affix_index.Affix, _objectSpread(_objectSpread({ offsetBottom: 0 }, table_utils.getAffixProps(props.horizontalScrollAffixedBottom)), {}, { ref: horizontalScrollAffixRef, style: { marginTop: "-".concat(scrollbarWidth * 2, "px") } }), /* @__PURE__ */React__default["default"].createElement("div", { ref: horizontalScrollbarRef, className: classNames__default["default"](["scrollbar", tableBaseClass.obviousScrollbar]), style: { width: "".concat(tableWidth.current, "px"), overflow: "auto", opacity: Number(showAffixFooter) } }, /* @__PURE__ */React__default["default"].createElement("div", { style: { width: "".concat(tableElmWidth.current, "px"), height: "5px" } }))); var affixedPaginationContent = props.paginationAffixedBottom ? /* @__PURE__ */React__default["default"].createElement(affix_index.Affix, _objectSpread(_objectSpread({ offsetBottom: 0 }, table_utils.getAffixProps(props.paginationAffixedBottom)), {}, { ref: paginationAffixRef }), paginationNode) : paginationNode; var tableElements = /* @__PURE__ */React__default["default"].createElement(React__default["default"].Fragment, null, !!topContent && /* @__PURE__ */React__default["default"].createElement("div", { className: tableBaseClass.topContent }, topContent), affixedHeaderContent, tableContent, affixedFooterContent, loadingContent, scrollbarDivider, bottom, affixedScrollbar, affixedPaginationContent, resizable && /* @__PURE__ */React__default["default"].createElement("div", { ref: resizeLineRef, className: tableBaseClass.resizeLine, style: resizeLineStyle })); if (resizable && tableLayout === "auto") { log.log.warn("Table", "table-layout can not be `auto`, cause you are using column resizable, set `table-layout: fixed` please."); } return /* @__PURE__ */React__default["default"].createElement("div", { ref: tableRef, className: classNames__default["default"](dynamicBaseTableClasses), style: _objectSpread({ position: "relative" }, style) }, tableElements); }); BaseTable.displayName = "BaseTable"; exports.BASE_TABLE_ALL_EVENTS = BASE_TABLE_ALL_EVENTS; exports.BASE_TABLE_EVENTS = BASE_TABLE_EVENTS; exports["default"] = BaseTable; //# sourceMappingURL=BaseTable.js.map