This commit is contained in:
2026-05-25 17:08:18 +08:00
parent df501f6151
commit f1259b71b5
9178 changed files with 1626125 additions and 0 deletions
@@ -0,0 +1,5 @@
import * as React from 'react';
import type { RenderExpandIconProps, Key, GetRowKey, ExpandableConfig } from '../interface';
export declare function renderExpandIcon<RecordType>({ prefixCls, record, onExpand, expanded, expandable, }: RenderExpandIconProps<RecordType>): React.JSX.Element;
export declare function findAllChildrenKeys<RecordType>(data: readonly RecordType[], getRowKey: GetRowKey<RecordType>, childrenColumnName: string): Key[];
export declare function computedExpandedClassName<RecordType>(cls: ExpandableConfig<RecordType>['expandedRowClassName'], record: RecordType, index: number, indent: number): string;
@@ -0,0 +1,57 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.computedExpandedClassName = computedExpandedClassName;
exports.findAllChildrenKeys = findAllChildrenKeys;
exports.renderExpandIcon = renderExpandIcon;
var React = _interopRequireWildcard(require("react"));
var _clsx = require("clsx");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function renderExpandIcon({
prefixCls,
record,
onExpand,
expanded,
expandable
}) {
const expandClassName = `${prefixCls}-row-expand-icon`;
if (!expandable) {
return /*#__PURE__*/React.createElement("span", {
className: (0, _clsx.clsx)(expandClassName, `${prefixCls}-row-spaced`)
});
}
const onClick = event => {
onExpand(record, event);
event.stopPropagation();
};
return /*#__PURE__*/React.createElement("span", {
className: (0, _clsx.clsx)(expandClassName, {
[`${prefixCls}-row-expanded`]: expanded,
[`${prefixCls}-row-collapsed`]: !expanded
}),
onClick: onClick
});
}
function findAllChildrenKeys(data, getRowKey, childrenColumnName) {
const keys = [];
function dig(list) {
(list || []).forEach((item, index) => {
keys.push(getRowKey(item, index));
dig(item[childrenColumnName]);
});
}
dig(data);
return keys;
}
function computedExpandedClassName(cls, record, index, indent) {
if (typeof cls === 'string') {
return cls;
}
if (typeof cls === 'function') {
return cls(record, index, indent);
}
return '';
}
@@ -0,0 +1,21 @@
import type { FixedType, StickyOffsets } from '../interface';
export interface FixedInfo {
fixStart: number | false;
fixEnd: number | false;
isSticky: boolean;
/** `fixed: start` with shadow */
fixedStartShadow?: boolean;
/** `fixed: end` with shadow */
fixedEndShadow?: boolean;
/** Show the shadow when `scrollLeft` arrive for `fixed: start` */
offsetFixedStartShadow?: number;
/** Show the shadow when `scrollLeft` arrive for `fixed: end` */
offsetFixedEndShadow?: number;
/** First sticky column `zIndex` will be larger than next */
zIndex?: number;
/** First sticky column `zIndex` will be smaller than next */
zIndexReverse?: number;
}
export declare function getCellFixedInfo(colStart: number, colEnd: number, columns: readonly {
fixed?: FixedType;
}[], stickyOffsets: StickyOffsets): FixedInfo;
+72
View File
@@ -0,0 +1,72 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getCellFixedInfo = getCellFixedInfo;
function isFixedStart(column) {
return column.fixed === 'start';
}
function isFixedEnd(column) {
return column.fixed === 'end';
}
function getCellFixedInfo(colStart, colEnd, columns, stickyOffsets) {
const startColumn = columns[colStart] || {};
const endColumn = columns[colEnd] || {};
let fixStart = null;
let fixEnd = null;
if (isFixedStart(startColumn) && isFixedStart(endColumn)) {
fixStart = stickyOffsets.start[colStart];
} else if (isFixedEnd(endColumn) && isFixedEnd(startColumn)) {
fixEnd = stickyOffsets.end[colEnd];
}
// check if need to add shadow
let fixedStartShadow = false;
let fixedEndShadow = false;
// Calc `zIndex`.
// first fixed start (start -> end) column `zIndex` should be greater than next column.
// first fixed end (end -> start) column `zIndex` should be greater than next column.
let zIndex = 0;
let zIndexReverse = 0;
if (fixStart !== null) {
fixedStartShadow = !columns[colEnd + 1] || !isFixedStart(columns[colEnd + 1]);
zIndex = columns.length * 2 - colStart; // Fix start always overlay fix end
zIndexReverse = columns.length + colStart;
}
if (fixEnd !== null) {
fixedEndShadow = !columns[colStart - 1] || !isFixedEnd(columns[colStart - 1]);
zIndex = colEnd;
zIndexReverse = columns.length - colEnd; // Fix end always overlay fix start
}
// Check if scrollLeft will show the shadow
let offsetFixedStartShadow = 0;
let offsetFixedEndShadow = 0;
if (fixedStartShadow) {
for (let i = 0; i < colStart; i += 1) {
if (!isFixedStart(columns[i])) {
offsetFixedStartShadow += stickyOffsets.widths[i] || 0;
}
}
}
if (fixedEndShadow) {
for (let i = columns.length - 1; i > colEnd; i -= 1) {
if (!isFixedEnd(columns[i])) {
offsetFixedEndShadow += stickyOffsets.widths[i] || 0;
}
}
}
return {
fixStart,
fixEnd,
fixedStartShadow,
fixedEndShadow,
offsetFixedStartShadow,
offsetFixedEndShadow,
isSticky: stickyOffsets.isSticky,
zIndex,
zIndexReverse
};
}
@@ -0,0 +1,5 @@
import type { ExpandableConfig, LegacyExpandableProps } from '../interface';
export declare const INTERNAL_COL_DEFINE = "RC_TABLE_INTERNAL_COL_DEFINE";
export declare function getExpandableProps<RecordType>(props: LegacyExpandableProps<RecordType> & {
expandable?: ExpandableConfig<RecordType>;
}): ExpandableConfig<RecordType>;
@@ -0,0 +1,32 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.INTERNAL_COL_DEFINE = void 0;
exports.getExpandableProps = getExpandableProps;
var _warning = _interopRequireDefault(require("@rc-component/util/lib/warning"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const INTERNAL_COL_DEFINE = exports.INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';
function getExpandableProps(props) {
const {
expandable,
...legacyExpandableConfig
} = props;
let config;
if ('expandable' in props) {
config = {
...legacyExpandableConfig,
...expandable
};
} else {
if (process.env.NODE_ENV !== 'production' && ['indentSize', 'expandedRowKeys', 'defaultExpandedRowKeys', 'defaultExpandAllRows', 'expandedRowRender', 'expandRowByClick', 'expandIcon', 'onExpand', 'onExpandedRowsChange', 'expandedRowClassName', 'expandIconColumnIndex', 'showExpandColumn', 'title'].some(prop => prop in props)) {
(0, _warning.default)(false, 'expanded related props have been moved into `expandable`.');
}
config = legacyExpandableConfig;
}
if (config.showExpandColumn === false) {
config.expandIconColumnIndex = -1;
}
return config;
}
@@ -0,0 +1,4 @@
export declare function getOffset(node: HTMLElement | Window): {
left: number;
top: number;
};
@@ -0,0 +1,19 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getOffset = getOffset;
var _findDOMNode = require("@rc-component/util/lib/Dom/findDOMNode");
// Copy from `rc-component/util/Dom/css.js`
function getOffset(node) {
const element = (0, _findDOMNode.getDOM)(node);
const box = element.getBoundingClientRect();
const docElem = document.documentElement;
// < ie8 not support win.pageXOffset, use docElem.scrollLeft instead
return {
left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),
top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)
};
}
@@ -0,0 +1,9 @@
/// <reference types="react" />
import type { DataIndex, Key } from '../interface';
export interface GetColumnKeyColumn<T = any> {
key?: Key;
dataIndex?: DataIndex<T>;
}
export declare function getColumnsKey<T = any>(columns: readonly GetColumnKeyColumn<T>[]): import("react").Key[];
export declare function validateValue<T>(val: T): boolean;
export declare function validNumberValue(value: any): boolean;
@@ -0,0 +1,38 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getColumnsKey = getColumnsKey;
exports.validNumberValue = validNumberValue;
exports.validateValue = validateValue;
const INTERNAL_KEY_PREFIX = 'RC_TABLE_KEY';
function toArray(arr) {
if (arr === undefined || arr === null) {
return [];
}
return Array.isArray(arr) ? arr : [arr];
}
function getColumnsKey(columns) {
const columnKeys = [];
const keys = {};
columns.forEach(column => {
const {
key,
dataIndex
} = column || {};
let mergedKey = key || toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX;
while (keys[mergedKey]) {
mergedKey = `${mergedKey}_next`;
}
keys[mergedKey] = true;
columnKeys.push(mergedKey);
});
return columnKeys;
}
function validateValue(val) {
return val !== null && val !== undefined;
}
function validNumberValue(value) {
return typeof value === 'number' && !Number.isNaN(value);
}