UNPKG

@gravity-ui/uikit

Version:

Gravity UI base styling and components

32 lines (31 loc) 1.62 kB
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