@gravity-ui/uikit
Version:
Gravity UI base styling and components
32 lines (31 loc) • 1.62 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import * as React from 'react';
import { filterDOMProps } from "../utils/filterDOMProps.js";
import { isOfType } from "../utils/isOfType.js";
import { warnOnce } from "../utils/warn.js";
import { DefinitionListProvider } from "./components/DefinitionListContext.js";
import { DefinitionListItem } from "./components/DefinitionListItem.js";
import { b } from "./constants.js";
import "./DefinitionList.css";
export function DefinitionList({ responsive, direction = 'horizontal', nameMaxWidth, contentMaxWidth, className, children, qa, ...restProps }) {
const normalizedChildren = prepareChildren(children);
return (_jsx(DefinitionListProvider, { direction: direction, nameMaxWidth: nameMaxWidth, contentMaxWidth: contentMaxWidth, children: _jsx("dl", { ...filterDOMProps(restProps, { labelable: true }), className: b({ responsive, vertical: direction === 'vertical' }, className), "data-qa": qa, children: normalizedChildren }) }));
}
const isDefinitionListItem = isOfType(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 {
warnOnce('[DefinitionList] Only <DefinitionList.Item> components is allowed as children');
}
}
return normalizedItems;
}
DefinitionList.Item = DefinitionListItem;
DefinitionList.displayName = 'DefinitionList';
//# sourceMappingURL=DefinitionList.js.map