/* * @Author: your name * @Date: 2022-04-11 15:26:48 * @Description: 元件列表 * @FilePath: /zl-large-screen/src/components/LargeScreenElement/index.tsx */ import React from 'react'; import LargeScreenBlockTitle from '../LargeScreenTitle/index'; import ElementMenus from './LargeScreenElementContentMenus/index'; import LargeScreenElementCards from './LargeScreenElementCards/index'; import { ILargeScreenElementProps, ILargeScreenElementState, IElementMenusItem, ISubListItem, ICardListITem, } from '../../type/LargeScreenElement'; import './style.scss'; class LargeScreenElement extends React.Component< ILargeScreenElementProps, ILargeScreenElementState > { constructor(props: ILargeScreenElementProps) { super(props); const { structure, sidebarList, subMenusList, cardList, cardStyle, sidebarDetail, componentLoading, title, } = props; this.state = { structure: structure, // content内部包含的组件列表,在里面来控制显示隐藏 sidebarList: sidebarList, subMenusList: subMenusList, cardList: cardList, cardStyle: cardStyle, sidebarDetail: sidebarDetail, componentLoading: componentLoading }; } componentDidUpdate(prevProps, prevState) { if (this.props.sidebarList !== prevProps.sidebarList) { this.setState({ sidebarList: this.props.sidebarList }); } if (this.props.sidebarDetail !== prevProps.sidebarDetail) { this.setState({ sidebarDetail: this.props.sidebarDetail }); } if (this.props.structure !==prevProps.structure) { this.setState({ structure: this.props.structure }); } if (this.props.cardList !== prevProps.cardList) { this.setState({ cardList: this.props.cardList }); } if (this.props.subMenusList !== prevProps.subMenusList) { this.setState({ subMenusList: this.props.subMenusList }); } } // ElementMenus silder item click public switchElementSilderBar = (item: IElementMenusItem) => { this.props.elementEvent('menuChange', item); }; // ElementCards searchInput change public SearchElementCardChange = (value: string, type: string) => { if (type === 'change') { this.props.elementEvent('searchChange', value); } else { this.props.elementEvent('searchBlur', value); } }; // subSildr item click public clickSubSilder = (item: ISubListItem) => { // let { subMenusList } = this.state // subMenusList.forEach(itemz => { // if (item.key === itemz.key) { // itemz.selected = true // } else { // itemz.selected = false // } // }) // this.setState({ subMenusList }) this.props.elementEvent('subMenuChange', item); }; public dragStart = (e: React.DragEvent) => { this.props.elementEvent('componentDragStart', "true"); }; public sidebarDetailEvent = (value: any, key: string, type: string) => { this.props.elementEvent('sidebarDetailEvent', { value, key, type }); }; public doubleClick = (value: ICardListITem) => { this.props.elementEvent('doubleClickCard', value); }; public sceneEvent = (value: ICardListITem) => { this.props.elementEvent('sceneEvent', value); }; public cardMouseDown = (value: ICardListITem) => { this.props.elementEvent('cardMouseDown', value); }; render() { const { structure, sidebarList, subMenusList, cardList, sidebarDetail, cardStyle, componentLoading } = this.state; return (