import React, { PureComponent } from 'react'; import CustomScrollbar from 'app/core/components/CustomScrollbar/CustomScrollbar'; import { FadeIn } from 'app/core/components/Animations/FadeIn'; interface Props { children: JSX.Element; main: EditorToolBarView; toolbarItems: EditorToolBarView[]; } export interface EditorToolBarView { title: string; imgSrc?: string; icon?: string; render: () => JSX.Element; } interface State { openView?: EditorToolBarView; } export class EditorTabBody extends PureComponent { constructor(props) { super(props); this.state = { openView: null, }; } onToggleToolBarView = (item: EditorToolBarView) => { this.setState({ openView: item === this.state.openView ? null : item, }); }; onCloseOpenView = () => { this.setState({ openView: null }); }; renderMainSelection(view: EditorToolBarView) { return (
this.onToggleToolBarView(view)} key={view.title}>
{view.title}
); } renderButton(view: EditorToolBarView) { return (
); } renderOpenView(view: EditorToolBarView) { return (
{view.render()}
); } render() { const { children, toolbarItems, main } = this.props; const { openView } = this.state; return ( <>
{this.renderMainSelection(main)}
{toolbarItems.map(item => this.renderButton(item))}
{openView && this.renderOpenView(openView)} {children}
); } }