@gravity-ui/uikit
Version:
Gravity UI base styling and components
39 lines (38 loc) • 2.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefinitionList = DefinitionList;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const React = tslib_1.__importStar(require("react"));
const useDefaultProps_1 = require("../theme/useDefaultProps.js");
const filterDOMProps_1 = require("../utils/filterDOMProps.js");
const isOfType_1 = require("../utils/isOfType.js");
const warn_1 = require("../utils/warn.js");
const DefinitionListContext_1 = require("./components/DefinitionListContext.js");
const DefinitionListItem_1 = require("./components/DefinitionListItem.js");
const constants_1 = require("./constants.js");
require("./DefinitionList.css");
function DefinitionList(rawProps) {
const { responsive, direction = 'horizontal', nameMaxWidth, contentMaxWidth, className, children, qa, ...restProps } = (0, useDefaultProps_1.useDefaultProps)('DefinitionList', rawProps);
const normalizedChildren = prepareChildren(children);
const withCopy = normalizedChildren.some((item) => item.props.copyText);
return ((0, jsx_runtime_1.jsx)(DefinitionListContext_1.DefinitionListProvider, { direction: direction, nameMaxWidth: nameMaxWidth, contentMaxWidth: contentMaxWidth, children: (0, jsx_runtime_1.jsx)("dl", { ...(0, filterDOMProps_1.filterDOMProps)(restProps, { labelable: true }), className: (0, constants_1.b)({ responsive, vertical: direction === 'vertical', 'with-copy': withCopy }, className), "data-qa": qa, children: normalizedChildren }) }));
}
const isDefinitionListItem = (0, isOfType_1.isOfType)(DefinitionListItem_1.DefinitionListItem);
function prepareChildren(children) {
const items = React.Children.toArray(children);
const normalizedItems = [];
for (const item of items) {
const isItem = isDefinitionListItem(item);
if (isItem) {
normalizedItems.push(item);
}
else {
(0, warn_1.warnOnce)('[DefinitionList] Only <DefinitionList.Item> components is allowed as children');
}
}
return normalizedItems;
}
DefinitionList.Item = DefinitionListItem_1.DefinitionListItem;
DefinitionList.displayName = 'DefinitionList';
//# sourceMappingURL=DefinitionList.js.map