Skip to content

Commit e207992

Browse files
committed
Implemented renderCustomTreeItem
1 parent 19273e0 commit e207992

File tree

3 files changed

+55
-44
lines changed

3 files changed

+55
-44
lines changed

docs/documentation/docs/controls/TreeView.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,17 @@ For example, you can define your function in a tsx file like this:
104104
```typescript
105105
import * as React from 'react';
106106

107-
export const renderCustomTreeItem = (item: ITreeItem): JSX.Element => {
108-
return (
109-
<span>
110-
<i className={"ms-Icon ms-Icon--" + item.iconProps.iconName} style={{paddingRight:'4px'}}/>
111-
{item.label}
112-
</span>
113-
);
114-
};
107+
private renderCustomTreeItem(item: ITreeItem): JSX.Element {
108+
return (
109+
<span>
110+
{
111+
item.iconProps &&
112+
<i className={"ms-Icon ms-Icon--" + item.iconProps.iconName} style={{ paddingRight: '4px' }} />
113+
}
114+
{item.label}
115+
</span>
116+
);
117+
}
115118
```
116119

117120
## Implementation

src/controls/treeView/TreeItem.tsx

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -158,38 +158,38 @@ export default class TreeItem extends React.Component<ITreeItemProps, ITreeItemS
158158
return (
159159
// Default rendering of tree item
160160
<div
161-
className={styles.labels}
162-
onClick={(e) => {
163-
164-
if (this.props.selectionMode != TreeViewSelectionMode.None && item.selectable != false) {
165-
e.stopPropagation();
166-
if (!item.disabled) {
167-
this._itemSelected(e, !this.state.selected);
168-
}
169-
}}}>
161+
className={styles.labels}
162+
onClick={(e) => {
163+
if (this.props.selectionMode != TreeViewSelectionMode.None && item.selectable != false) {
164+
e.stopPropagation();
165+
if (!item.disabled) {
166+
this._itemSelected(e, !this.state.selected);
167+
}
168+
}
169+
}}>
170170
{
171171
this.props.showCheckboxes && item.selectable == false && !item.children &&
172172
<span className={styles.blankspace}>&nbsp;</span>
173173
}
174+
174175
{
175176
// Rendering when item has iconProps
176177
item.iconProps &&
177-
<span>
178+
<span>
178179
<Icon className={styles.icon} iconName={item.iconProps.iconName} style={item.iconProps.style} />
179180
&nbsp;
180181
</span>
181182
}
182-
183-
{item.label}
184-
{
185-
// Render sublabel
186-
item.subLabel &&
187-
<div className={styles.itemSubLabel}>
188-
{item.subLabel}
189-
</div>
190-
}
191-
</div>
192-
183+
184+
{item.label}
185+
{
186+
// Render sublabel
187+
item.subLabel &&
188+
<div className={styles.itemSubLabel}>
189+
{item.subLabel}
190+
</div>
191+
}
192+
</div>
193193
);
194194
}
195195
}

src/webparts/controlsTest/components/ControlsTest.tsx

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -934,19 +934,17 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
934934
</div>
935935

936936
<div>
937-
Demo of Tree View
938-
<TreeView items={this.treeitems}
939-
defaultExpanded={false}
940-
selectionMode={TreeViewSelectionMode.Multiple}
941-
showCheckboxes={true}
942-
treeItemActionsDisplayMode={TreeItemActionsDisplayMode.ContextualMenu}
943-
defaultSelectedKeys={['R2', '6']}
944-
onExpandCollapse={this.onExpandCollapseTree}
945-
onSelect={this.onItemSelected}
946-
>
947-
948-
</TreeView>
949-
</div>
937+
<h3>Tree View</h3>
938+
<TreeView items={this.treeitems}
939+
defaultExpanded={false}
940+
selectionMode={TreeViewSelectionMode.Multiple}
941+
showCheckboxes={true}
942+
treeItemActionsDisplayMode={TreeItemActionsDisplayMode.ContextualMenu}
943+
defaultSelectedKeys={['R2', '6']}
944+
onExpandCollapse={this.onExpandCollapseTree}
945+
onSelect={this.onItemSelected}
946+
onRenderItem={this.renderCustomTreeItem} />
947+
</div>
950948
</div>
951949
);
952950
}
@@ -959,6 +957,18 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
959957
console.log("items selected: " + items.length);
960958
}
961959

960+
private renderCustomTreeItem(item: ITreeItem): JSX.Element {
961+
return (
962+
<span>
963+
{
964+
item.iconProps &&
965+
<i className={"ms-Icon ms-Icon--" + item.iconProps.iconName} style={{ paddingRight: '4px' }} />
966+
}
967+
{item.label}
968+
</span>
969+
);
970+
}
971+
962972
private skypeCheckIcon: IIconProps = { iconName: 'SkypeCheck' };
963973
private treeitems = [
964974
{
@@ -1053,7 +1063,5 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
10531063

10541064
private _onFolderSelect = (folder: IFolder): void => {
10551065
console.log('selected folder', folder);
1056-
10571066
}
1058-
10591067
}

0 commit comments

Comments
 (0)