in src/components/side-panel/panel-header.js [265:317]
render() {
const {
appName,
appWebsite,
version,
actionItems,
visibleDropdown,
showExportDropdown,
hideExportDropdown,
...dropdownCallbacks
} = this.props;
let items = actionItems || [];
// don't render cloud storage icon if onSaveToStorage is not provided
if (typeof this.props.onSaveToStorage !== 'function') {
items = actionItems.filter(ai => ai.id !== 'storage');
}
return (
<StyledPanelHeader className="side-panel__panel-header">
<StyledPanelHeaderTop className="side-panel__panel-header__top">
<this.props.logoComponent appName={appName} version={version} appWebsite={appWebsite} />
<StyledPanelTopActions>
{items.map(item => (
<div
className="side-panel__panel-header__right"
key={item.id}
style={{position: 'relative'}}
>
<PanelAction
item={item}
onClick={() => {
if (item.dropdownComponent) {
showExportDropdown(item.id);
} else {
item.onClick && item.onClick(this.props);
}
}}
/>
{item.dropdownComponent ? (
<item.dropdownComponent
onClose={hideExportDropdown}
show={visibleDropdown === item.id}
{...dropdownCallbacks}
/>
) : null}
</div>
))}
</StyledPanelTopActions>
</StyledPanelHeaderTop>
</StyledPanelHeader>
);
}