@itwin/itwinui-react
Version:
A react component library for iTwinUI
33 lines (32 loc) • 1.1 kB
JavaScript
import * as React from 'react';
import cx from 'classnames';
import { SvgChevronRight, SvgChevronRightSmall } from '../../utils/index.js';
import { IconButton } from '../Buttons/IconButton.js';
import { TreeContext } from './TreeContext.js';
export const TreeNodeExpander = React.forwardRef((props, ref) => {
let { isExpanded, expanderIconProps = {}, ...rest } = props;
let size = React.useContext(TreeContext)?.size ?? 'default';
let ChevronIcon = 'small' === size ? SvgChevronRightSmall : SvgChevronRight;
return React.createElement(
IconButton,
{
styleType: 'borderless',
size: 'small',
'aria-label': isExpanded ? 'Collapse' : 'Expand',
ref: ref,
...rest,
},
React.createElement(ChevronIcon, {
...expanderIconProps,
className: cx(
'iui-tree-node-content-expander-icon',
expanderIconProps?.className,
{
'iui-tree-node-content-expander-icon-expanded': isExpanded,
},
),
}),
);
});
if ('development' === process.env.NODE_ENV)
TreeNodeExpander.displayName = 'TreeNode.Expander';