tdesign-react
Version:
TDesign Component for React
516 lines (508 loc) • 22.9 kB
JavaScript
/**
* tdesign v1.13.2
* (c) 2025 tdesign
* @license MIT
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var defineProperty = require('../_chunks/dep-cc768e34.js');
var React = require('react');
var classNames = require('classnames');
var table_BaseTable = require('./BaseTable.js');
var table_hooks_useColumnController = require('./hooks/useColumnController.js');
var table_hooks_useRowExpand = require('./hooks/useRowExpand.js');
var table_hooks_useTableHeader = require('./hooks/useTableHeader.js');
var table_hooks_useRowSelect = require('./hooks/useRowSelect.js');
var table_hooks_useSorter = require('./hooks/useSorter.js');
var table_hooks_useFilter = require('./hooks/useFilter.js');
var table_hooks_useDragSort = require('./hooks/useDragSort.js');
var table_hooks_useAsyncLoading = require('./hooks/useAsyncLoading.js');
var table_hooks_useClassName = require('./hooks/useClassName.js');
var table_hooks_useStyle = require('./hooks/useStyle.js');
var table_EditableCell = require('./EditableCell.js');
var table_hooks_useEditableRow = require('./hooks/useEditableRow.js');
var table_defaultProps = require('./defaultProps.js');
var hooks_useDefaultProps = require('../hooks/useDefaultProps.js');
var get = require('../_chunks/dep-fbc19a54.js');
require('../_chunks/dep-6d4d8660.js');
require('../_chunks/dep-e17e2d31.js');
require('../_chunks/dep-b7d577ac.js');
require('../_chunks/dep-b8d4cf07.js');
require('../_chunks/dep-64a1054a.js');
require('../_chunks/dep-422caf30.js');
require('../_chunks/dep-f0379c5f.js');
require('../_chunks/dep-ddacd27a.js');
require('../_chunks/dep-4bc3c0ab.js');
require('./TBody.js');
require('./TR.js');
require('./utils.js');
require('../_chunks/dep-bed9d73e.js');
require('../_chunks/dep-780eda7b.js');
require('./hooks/useFixed.js');
require('../_chunks/dep-b57a7208.js');
require('../hooks/useDebounce.js');
require('../hooks/usePersistFn.js');
require('../_chunks/dep-1bcdd0a4.js');
require('../_chunks/dep-c915e145.js');
require('../_chunks/dep-f076775e.js');
require('../hooks/usePrevious.js');
require('../_util/listener.js');
require('../_chunks/dep-3f65dfe7.js');
require('../_chunks/dep-3e2d2665.js');
require('../_chunks/dep-028b759d.js');
require('../_chunks/dep-7d3b12a4.js');
require('../_chunks/dep-ac2874ce.js');
require('../_chunks/dep-f4e58639.js');
require('../_chunks/dep-781a2854.js');
require('../_chunks/dep-0cdb3286.js');
require('../_chunks/dep-6a7ba247.js');
require('../_chunks/dep-4671b9bd.js');
require('../_chunks/dep-b145cb36.js');
require('../_chunks/dep-94d97586.js');
require('../_chunks/dep-a30819a4.js');
require('../_chunks/dep-c87d9752.js');
require('../_chunks/dep-71c315ae.js');
require('../_chunks/dep-62193a48.js');
require('../_chunks/dep-47bdc05f.js');
require('../_chunks/dep-ba1bf618.js');
require('../_chunks/dep-fd5d57c1.js');
require('../_chunks/dep-4b02d669.js');
require('../_chunks/dep-5d9d080b.js');
require('../_chunks/dep-73c822e3.js');
require('../_chunks/dep-b12bf98d.js');
require('../_chunks/dep-e6a14ce7.js');
require('../_chunks/dep-08fa4947.js');
require('../_chunks/dep-4ba2ac6b.js');
require('../_chunks/dep-2df3735a.js');
require('../_chunks/dep-bd956a2d.js');
require('../_chunks/dep-cab13149.js');
require('../_chunks/dep-aaaf9309.js');
require('../_chunks/dep-ef231277.js');
require('./hooks/useLazyLoad.js');
require('../_chunks/dep-02c6f7b0.js');
require('./hooks/useRowspanAndColspan.js');
require('./Cell.js');
require('./Ellipsis.js');
require('../_util/scroll.js');
require('raf');
require('../_util/easing.js');
require('../tooltip/index.js');
require('../tooltip/Tooltip.js');
require('../_chunks/dep-810b3643.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('../common/Portal.js');
require('react-dom');
require('../hooks/useConfig.js');
require('../config-provider/ConfigContext.js');
require('../_chunks/dep-3a869b87.js');
require('../_chunks/dep-ac58e1cc.js');
require('dayjs');
require('../_chunks/dep-7da96a57.js');
require('../_chunks/dep-07b911d8.js');
require('../_chunks/dep-8a116183.js');
require('../_chunks/dep-865c186c.js');
require('../_chunks/dep-1ef213f8.js');
require('../_chunks/dep-e2c832a5.js');
require('../hooks/useLayoutEffect.js');
require('../hooks/useAnimation.js');
require('../hooks/useAttach.js');
require('../hooks/useControlled.js');
require('../_util/noop.js');
require('../_chunks/dep-4be7f839.js');
require('../_chunks/dep-d42c60f4.js');
require('../_chunks/dep-05b4c661.js');
require('../hooks/useMutationObserver.js');
require('../hooks/useLatest.js');
require('../_chunks/dep-d6e82200.js');
require('../_chunks/dep-0c1ca63f.js');
require('../_chunks/dep-6cfc06a0.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('../popup/utils/transition.js');
require('../popup/PopupPlugin.js');
require('../_chunks/dep-a93b6608.js');
require('../_util/react-render.js');
require('../common/PluginContainer.js');
require('../config-provider/ConfigProvider.js');
require('../_chunks/dep-ed886f2a.js');
require('../_chunks/dep-aeef4e56.js');
require('../tooltip/defaultProps.js');
require('../tooltip/TooltipLite.js');
require('../hooks/useSwitch.js');
require('../_chunks/dep-f7574d05.js');
require('../locale/LocalReceiver.js');
require('../_chunks/dep-a70197cb.js');
require('../affix/index.js');
require('../affix/Affix.js');
require('../affix/defaultProps.js');
require('./THead.js');
require('./TFoot.js');
require('./hooks/useColumnResize.js');
require('../hooks/useElementLazyRender.js');
require('./hooks/useAffix.js');
require('./hooks/usePagination.js');
require('../pagination/index.js');
require('../pagination/Pagination.js');
require('../select/index.js');
require('../select/base/Select.js');
require('../_util/helper.js');
require('../_util/forwardRefWithStatics.js');
require('hoist-non-react-statics');
require('../_chunks/dep-c148acab.js');
require('../select/base/OptionGroup.js');
require('../select/defaultProps.js');
require('../select/base/Option.js');
require('../hooks/useDomRefCallback.js');
require('../hooks/useRipple.js');
require('../_chunks/dep-58719304.js');
require('../common/FakeArrow.js');
require('../loading/index.js');
require('../loading/Loading.js');
require('../loading/gradient.js');
require('../loading/defaultProps.js');
require('../loading/plugin.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('../_util/parseTNode.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/useTagScroll.js');
require('../tag-input/useTagList.js');
require('../tag/index.js');
require('../tag/Tag.js');
require('../_chunks/dep-7bc521fe.js');
require('../tag/defaultProps.js');
require('../tag/CheckTag.js');
require('../_chunks/dep-d33a1510.js');
require('../tag/CheckTagGroup.js');
require('../tag-input/useHover.js');
require('../tag-input/defaultProps.js');
require('../select-input/useOverlayInnerStyle.js');
require('../select-input/defaultProps.js');
require('../select/base/PopupContent.js');
require('../select/hooks/usePanelVirtualScroll.js');
require('../hooks/useVirtualScroll.js');
require('../hooks/useResizeObserver.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-0a15e4d8.js');
require('../_chunks/dep-f400737d.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-ab823a9f.js');
require('../_chunks/dep-1843e637.js');
require('../pagination/PaginationMini.js');
require('./hooks/useMultiHeader.js');
require('../checkbox/index.js');
require('../_chunks/dep-3d505dbd.js');
require('../common/Check.js');
require('../_chunks/dep-476c1fcc.js');
require('../checkbox/defaultProps.js');
require('../dialog/plugin.js');
require('../dialog/Dialog.js');
require('../hooks/useSetState.js');
require('../dialog/defaultProps.js');
require('../dialog/DialogCard.js');
require('../dialog/hooks/useDialogEsc.js');
require('../dialog/hooks/useLockStyle.js');
require('../dialog/hooks/useDialogPosition.js');
require('../dialog/hooks/useDialogDrag.js');
require('../dialog/utils.js');
require('../_chunks/dep-30822ff5.js');
require('../_chunks/dep-104d248e.js');
require('../radio/index.js');
require('../_chunks/dep-58dc387c.js');
require('../radio/defaultProps.js');
require('../radio/useKeyboard.js');
require('./SorterButton.js');
require('./FilterController.js');
require('../_chunks/dep-2bf61ef1.js');
require('sortablejs');
require('../_chunks/dep-51f3a4a1.js');
require('../form/formModel.js');
require('../_chunks/dep-ad833f1c.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 PrimaryTable = /*#__PURE__*/React.forwardRef(function (originalProps, ref) {
var props = hooks_useDefaultProps["default"](originalProps, table_defaultProps.primaryTableDefaultProps);
var columns = props.columns,
columnController = props.columnController,
editableRowKeys = props.editableRowKeys,
style = props.style,
className = props.className;
var primaryTableRef = React.useRef(null);
var innerPagination = React.useRef(props.pagination);
var _useClassName = table_hooks_useClassName["default"](),
classPrefix = _useClassName.classPrefix,
tableDraggableClasses = _useClassName.tableDraggableClasses,
tableBaseClass = _useClassName.tableBaseClass,
tableSelectedClasses = _useClassName.tableSelectedClasses,
tableSortClasses = _useClassName.tableSortClasses;
var _useStyle = table_hooks_useStyle["default"](props),
sizeClassNames = _useStyle.sizeClassNames;
var _useColumnController = table_hooks_useColumnController["default"](props, {
onColumnReduce: onColumnReduce
}),
tDisplayColumns = _useColumnController.tDisplayColumns,
renderColumnController = _useColumnController.renderColumnController;
var _useRowExpand = table_hooks_useRowExpand["default"](props),
showExpandedRow = _useRowExpand.showExpandedRow,
showExpandIconColumn = _useRowExpand.showExpandIconColumn,
getExpandColumn = _useRowExpand.getExpandColumn,
renderExpandedRow = _useRowExpand.renderExpandedRow,
onInnerExpandRowClick = _useRowExpand.onInnerExpandRowClick,
getExpandedRowClass = _useRowExpand.getExpandedRowClass;
var _useSorter = table_hooks_useSorter["default"](props),
renderSortIcon = _useSorter.renderSortIcon;
var _useRowSelect = table_hooks_useRowSelect["default"](props, tableSelectedClasses),
selectedRowClassNames = _useRowSelect.selectedRowClassNames,
setCurrentPaginateData = _useRowSelect.setCurrentPaginateData,
formatToRowSelectColumn = _useRowSelect.formatToRowSelectColumn,
setTSelectedRowKeys = _useRowSelect.setTSelectedRowKeys,
onInnerSelectRowClick = _useRowSelect.onInnerSelectRowClick;
var _useFilter = table_hooks_useFilter["default"](props, primaryTableRef),
hasEmptyCondition = _useFilter.hasEmptyCondition,
isTableOverflowHidden = _useFilter.isTableOverflowHidden,
renderFilterIcon = _useFilter.renderFilterIcon,
renderFirstFilterRow = _useFilter.renderFirstFilterRow;
var _useDragSort = table_hooks_useDragSort["default"](props, {
primaryTableRef: primaryTableRef,
innerPagination: innerPagination
}),
isRowHandlerDraggable = _useDragSort.isRowHandlerDraggable,
isRowDraggable = _useDragSort.isRowDraggable,
isColDraggable = _useDragSort.isColDraggable,
setDragSortColumns = _useDragSort.setDragSortColumns;
var _useTableHeader = table_hooks_useTableHeader["default"]({
columns: props.columns
}),
renderTitleWidthIcon = _useTableHeader.renderTitleWidthIcon;
var _useAsyncLoading = table_hooks_useAsyncLoading["default"](props),
renderAsyncLoading = _useAsyncLoading.renderAsyncLoading;
var primaryTableClasses = defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty({}, tableDraggableClasses.colDraggable, isColDraggable), tableDraggableClasses.rowHandlerDraggable, isRowHandlerDraggable), tableDraggableClasses.rowDraggable, isRowDraggable), tableBaseClass.overflowVisible, isTableOverflowHidden === false), tableBaseClass.tableRowEdit, editableRowKeys);
var _useEditableRow = table_hooks_useEditableRow.useEditableRow(props),
errorListMap = _useEditableRow.errorListMap,
editableKeysMap = _useEditableRow.editableKeysMap,
validateRowData = _useEditableRow.validateRowData,
validateTableData = _useEditableRow.validateTableData,
onRuleChange = _useEditableRow.onRuleChange,
clearValidateData = _useEditableRow.clearValidateData;
var tRowClassNames = function () {
var tClassNames = [props.rowClassName, selectedRowClassNames, getExpandedRowClass];
return tClassNames.filter(function (v) {
return v;
});
}();
var tRowAttributes = function () {
var tAttributes = [props.rowAttributes];
if (isRowHandlerDraggable || isRowDraggable) {
tAttributes.push(function (_ref) {
var row = _ref.row;
return {
"data-id": get.get(row, props.rowKey || "id")
};
});
}
return tAttributes.filter(function (v) {
return v;
});
}();
React.useImperativeHandle(ref, function () {
return _objectSpread({
validateRowData: validateRowData,
validateTableData: validateTableData,
clearValidateData: clearValidateData
}, primaryTableRef.current);
});
function onColumnReduce(reduceKeys) {
if (props.resizable) {
primaryTableRef.current.updateTableWidthOnColumnChange(reduceKeys);
}
}
var _getColumns = function getColumns(columns2) {
var arr = [];
var _loop = function _loop() {
var _item$children, _item$edit, _item$children2, _item$children3;
var item = _objectSpread({}, columns2[i]);
var isDisplayColumn = ((_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length) || (tDisplayColumns === null || tDisplayColumns === void 0 ? void 0 : tDisplayColumns.includes(item.colKey));
if (!isDisplayColumn && props.columnController && tDisplayColumns) return 1; // continue
item = formatToRowSelectColumn(item);
var sort = props.sort;
if (item.sorter && props.showSortColumnBgColor) {
var sorts = sort instanceof Array ? sort : [sort];
var sortedColumn = sorts.find(function (sort2) {
return sort2 && sort2.sortBy === item.colKey && sort2.descending !== void 0;
});
if (sortedColumn) {
item.className = item.className instanceof Array ? item.className.concat(tableSortClasses.sortColumn) : [item.className, tableSortClasses.sortColumn];
}
}
if (item.sorter || item.filter) {
var titleContent = table_hooks_useTableHeader.renderTitle(item, i);
var _item = item,
ellipsisTitle = _item.ellipsisTitle;
item.title = function (p) {
var _primaryTableRef$curr;
var sortIcon = item.sorter ? renderSortIcon(p) : null;
var filterIcon = item.filter ? renderFilterIcon(p) : null;
var attach = (_primaryTableRef$curr = primaryTableRef.current) === null || _primaryTableRef$curr === void 0 ? void 0 : _primaryTableRef$curr.tableContentRef;
return renderTitleWidthIcon([titleContent, sortIcon, filterIcon], p.col, p.colIndex, ellipsisTitle, attach, {
classPrefix: classPrefix,
ellipsisOverlayClassName: props.size !== "medium" ? sizeClassNames[props.size] : ""
});
};
item.ellipsisTitle = false;
}
if ((_item$edit = item.edit) !== null && _item$edit !== void 0 && _item$edit.component) {
var oldCell = item.cell;
item.cell = function (p) {
var cellProps = _objectSpread(_objectSpread({}, p), {}, {
oldCell: oldCell,
tableBaseClass: tableBaseClass,
cellEmptyContent: props.cellEmptyContent,
onChange: props.onRowEdit,
onValidate: props.onRowValidate,
onRuleChange: onRuleChange
});
if (props.editableRowKeys) {
var rowValue = get.get(p.row, props.rowKey || "id");
cellProps.editable = editableKeysMap[rowValue] || false;
var key = [rowValue, p.col.colKey].join("__");
var errorList = errorListMap[key];
errorList && (cellProps.errors = errorList);
}
if (props.editableCellState) {
cellProps.readonly = !props.editableCellState(p);
}
return /* @__PURE__ */React__default["default"].createElement(table_EditableCell["default"], _objectSpread({}, cellProps));
};
}
if ((_item$children2 = item.children) !== null && _item$children2 !== void 0 && _item$children2.length) {
item.children = _getColumns(item.children);
}
if (!item.children || (_item$children3 = item.children) !== null && _item$children3 !== void 0 && _item$children3.length) {
arr.push(item);
}
};
for (var i = 0, len = columns2.length; i < len; i++) {
if (_loop()) continue;
}
return arr;
};
var tColumns = function () {
var cols = _getColumns(columns);
if (showExpandIconColumn) {
cols.unshift(getExpandColumn());
}
return cols;
}();
var onInnerPageChange = function onInnerPageChange(pageInfo, newData) {
var _props$onPageChange, _props$onChange;
innerPagination.current = _objectSpread(_objectSpread({}, innerPagination), pageInfo);
setCurrentPaginateData(newData);
(_props$onPageChange = props.onPageChange) === null || _props$onPageChange === void 0 || _props$onPageChange.call(props, pageInfo, newData);
var changeParams = [{
pagination: pageInfo
}, {
trigger: "pagination",
currentData: newData
}];
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call.apply(_props$onChange, [props].concat(changeParams));
if (!props.reserveSelectedRowOnPaginate) {
setTSelectedRowKeys([], {
selectedRowData: [],
type: "uncheck",
currentRowKey: "CLEAR_ON_PAGINATE"
});
}
};
var onInnerRowClick = function onInnerRowClick(params) {
if (props.expandOnRowClick) {
onInnerExpandRowClick(params);
}
if (props.selectOnRowClick) {
onInnerSelectRowClick(params);
}
};
function formatNode(api, renderInnerNode, condition, extra) {
if (!condition) return props[api];
var innerNode = renderInnerNode();
var propsNode = props[api];
if (innerNode && !propsNode) return innerNode;
if (propsNode && !innerNode) return propsNode;
if (innerNode && propsNode) {
return extra !== null && extra !== void 0 && extra.reverse ? /* @__PURE__ */React__default["default"].createElement("div", null, innerNode, propsNode) : /* @__PURE__ */React__default["default"].createElement("div", null, propsNode, innerNode);
}
return null;
}
var isColumnController = !!(columnController && Object.keys(columnController).length);
var placement = isColumnController ? columnController.placement || "top-right" : "";
var isBottomController = isColumnController && (placement === null || placement === void 0 ? void 0 : placement.indexOf("bottom")) !== -1;
var topContent = formatNode("topContent", renderColumnController, isColumnController && !isBottomController);
var bottomContent = formatNode("bottomContent", renderColumnController, isBottomController, {
reverse: true
});
var firstFullRow = formatNode("firstFullRow", renderFirstFilterRow, !hasEmptyCondition);
var lastFullRow = formatNode("lastFullRow", renderAsyncLoading, !!props.asyncLoading);
var baseTableProps = _objectSpread(_objectSpread({}, props), {}, {
rowClassName: tRowClassNames,
rowAttributes: tRowAttributes,
columns: tColumns,
topContent: topContent,
bottomContent: bottomContent,
firstFullRow: firstFullRow,
lastFullRow: lastFullRow,
thDraggable: props.dragSort === "col",
onPageChange: onInnerPageChange,
renderExpandedRow: showExpandedRow ? renderExpandedRow : void 0
});
if (props.expandOnRowClick || props.selectOnRowClick) {
baseTableProps.onRowClick = onInnerRowClick;
}
return /* @__PURE__ */React__default["default"].createElement(table_BaseTable["default"], _objectSpread(_objectSpread({
ref: primaryTableRef
}, baseTableProps), {}, {
className: classNames__default["default"](primaryTableClasses, className),
style: style,
onLeafColumnsChange: setDragSortColumns
}));
});
PrimaryTable.displayName = "PrimaryTable";
exports.BASE_TABLE_ALL_EVENTS = table_BaseTable.BASE_TABLE_ALL_EVENTS;
exports["default"] = PrimaryTable;
//# sourceMappingURL=PrimaryTable.js.map