tdesign-react
Version:
TDesign Component for React
126 lines (122 loc) • 4.47 kB
JavaScript
/**
* tdesign v1.13.2
* (c) 2025 tdesign
* @license MIT
*/
import { _ as _defineProperty } from '../_chunks/dep-8618a2f1.js';
import React from 'react';
import classNames from 'classnames';
import { isArray, assign } from 'lodash-es';
import { descriptionsDefaultProps, descriptionsItemDefaultProps } from './defaultProps.js';
import useDefaultProps from '../hooks/useDefaultProps.js';
import useConfig from '../hooks/useConfig.js';
import useCommonClassName from '../hooks/useCommonClassName.js';
import { DescriptionsContext } from './DescriptionsContext.js';
import DescriptionsItem from './DescriptionsItem.js';
import Row from './Row.js';
import '../_chunks/dep-c37cc2fd.js';
import '../config-provider/ConfigContext.js';
import '../_chunks/dep-698f8ddd.js';
import '../_chunks/dep-09955460.js';
import 'dayjs';
import '../_chunks/dep-118954e6.js';
import '../_chunks/dep-61f5e3d1.js';
import '../locale/LocalReceiver.js';
import '../config-provider/ConfigProvider.js';
var Descriptions = function Descriptions(DescriptionsProps) {
var props = useDefaultProps(DescriptionsProps, descriptionsDefaultProps);
var className = props.className,
style = props.style,
title = props.title,
bordered = props.bordered,
column = props.column,
layout = props.layout,
rowItems = props.items,
children = props.children,
tableLayout = props.tableLayout;
var _useConfig = useConfig(),
classPrefix = _useConfig.classPrefix;
var COMPONENT_NAME = "".concat(classPrefix, "-descriptions");
var _useCommonClassName = useCommonClassName(),
SIZE = _useCommonClassName.SIZE;
var getRows = function getRows() {
var items = [];
if (isArray(rowItems)) {
items = rowItems.map(function (item) {
var _assign = assign({}, descriptionsItemDefaultProps, item),
span = _assign.span;
return {
label: item.label,
content: item.content,
span: span
};
});
} else {
var childrenList = React.Children.toArray(children).filter(function (child) {
var _child$type;
return ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === DescriptionsItem.displayName;
});
if (childrenList.length !== 0) {
items = childrenList.map(function (_ref) {
var _child$content;
var child = _ref.props;
var _assign2 = assign({}, descriptionsItemDefaultProps, child),
span = _assign2.span;
return {
label: child.label,
content: (_child$content = child.content) !== null && _child$content !== void 0 ? _child$content : child.children,
span: span
};
});
}
}
if (layout === "vertical") {
return [items];
}
var temp = [];
var reset = column;
var res = [];
items.forEach(function (item, index) {
var span = item.span;
if (reset >= span) {
temp.push(item);
reset -= span;
} else {
res.push(temp);
temp = [item];
reset = column - span;
}
if (index === items.length - 1) {
Reflect.set(item, "span", span + reset);
res.push(temp);
}
});
return res;
};
var renderHeader = function renderHeader() {
return title ? /* @__PURE__ */React.createElement("div", {
className: "".concat(COMPONENT_NAME, "__header")
}, title) : "";
};
var renderBody = function renderBody() {
var tableClass = ["".concat(COMPONENT_NAME, "__body"), SIZE[props.size], _defineProperty({}, "".concat(COMPONENT_NAME, "__body--fixed"), tableLayout === "fixed"), _defineProperty({}, "".concat(COMPONENT_NAME, "__body--border"), bordered)];
return /* @__PURE__ */React.createElement("table", {
className: classNames(tableClass)
}, /* @__PURE__ */React.createElement("tbody", null, getRows().map(function (row, i) {
return /* @__PURE__ */React.createElement(Row, {
row: row,
key: i
});
})));
};
return /* @__PURE__ */React.createElement(DescriptionsContext.Provider, {
value: props
}, /* @__PURE__ */React.createElement("div", {
className: classNames(className, COMPONENT_NAME),
style: style
}, renderHeader(), renderBody()));
};
Descriptions.displayName = "Descriptions";
Descriptions.DescriptionsItem = DescriptionsItem;
export { Descriptions as default };
//# sourceMappingURL=Descriptions.js.map