in src/data-list/item.tsx [116:211]
render() {
const {
title,
items,
showMoreLessButton,
level,
parentShift,
showFocus,
selectable,
selected,
partialSelected,
collapsible,
collapsed,
onCollapse,
onExpand,
} = this.props;
let moreLessButton;
if (showMoreLessButton === moreLessButtonStates.MORE || showMoreLessButton === moreLessButtonStates.MORE_LOADING) {
moreLessButton = (
<Text info size={Text.Size.S}>
<Link inherit pseudo onClick={this.onShowMore}>
{'Show more'}
</Link>
{showMoreLessButton === moreLessButtonStates.MORE_LOADING && (
<LoaderInline className={styles.showMoreLoader} />
)}
</Text>
);
} else if (showMoreLessButton === moreLessButtonStates.LESS) {
moreLessButton = (
<Text info size={Text.Size.S}>
<Link inherit pseudo onClick={this.onShowLess}>
{'Show less'}
</Link>
</Text>
);
}
let collapserExpander = null;
if (collapsible) {
if (collapsed) {
collapserExpander = (
<Button
title='Expand'
onClick={onExpand}
icon={chevronRightIcon}
className={styles.collapseButton}
iconClassName={styles.collapseIcon}
data-test='ring-data-list-expand'
/>
);
} else {
collapserExpander = (
<Button
title='Collapse'
onClick={onCollapse}
icon={chevronDownIcon}
className={styles.collapseButton}
iconClassName={styles.collapseIcon}
data-test='ring-data-list-collapse'
/>
);
}
}
const itemIsEmpty = !items?.length || (collapsible && collapsed);
const offset = level * LIST_LEFT_OFFSET + ITEM_LEFT_OFFSET + parentShift;
return (
<li>
<Title
title={title}
focused={showFocus}
showFocus={showFocus}
selectable={selectable}
selected={selected}
partialSelected={partialSelected}
collapserExpander={collapserExpander}
onFocus={this.onFocus}
onSelect={this.onSelect}
offset={offset}
/>
{!itemIsEmpty ? (
<ul className={styles.itemContent}>
{items.map(model => this.renderItem(model, parentShift))}
{showMoreLessButton !== moreLessButtonStates.UNUSED ? (
<li className={styles.showMore}>{moreLessButton}</li>
) : null}
</ul>
) : null}
</li>
);
}