import { Icon } from 'antd'; import MenuInline from './MenuInline'; import MenuVertical from './MenuVertical'; import cloneDeep from 'lodash/cloneDeep'; import { WeaNewScroll, WeaIntro } from 'ecCom'; const { Step } = WeaIntro; class WeaMenu extends React.Component { constructor(props) { super(props); this.state = { mode: props.mode || 'inline', defaultSelectedKey: props.defaultSelectedKey || '', datas: props.datas || [], verticalWidth: props.verticalWidth || 50, inlineWidth: props.inlineWidth || 190, menuHeight: jQuery(document.body).height() - 55 - props.translatepageheight, fontSize: props.fontSize, translatepage: props.translatepage || '', }; } resetHeigth() { const { portalThemeStore } = this.props; const { translatepage } = portalThemeStore; let transheight = translatepage == '1' ? 30 : 0; this.setState({ menuHeight: jQuery(document.body).height() - 55 - transheight }); } componentDidMount() { jQuery(window).resize(() => { this._reactInternalInstance !== undefined && this.resetHeigth(); }); } componentWillReceiveProps(nextProps) { if ( JSON.stringify(this.props.datas) !== JSON.stringify(nextProps.datas) || (this.props.defaultSelectedKey !== nextProps.defaultSelectedKey && this.state.defaultSelectedKey !== nextProps.defaultSelectedKey) ) { // 计算出openKeys this.setState({ datas: nextProps.datas || [], defaultSelectedKey: nextProps.defaultSelectedKey || '', }); } if (this.props.mode != nextProps.mode) { this.setState({ mode: nextProps.mode, }); } } render() { const { mode, datas, verticalWidth, inlineWidth, defaultSelectedKey, menuHeight, fontSize, translatepage } = this.state; const newDatas = this.setTreeKey('', datas); const { addonBefore, addonAfter, addonBeforeHeight, addonAfterHeight, clickBlock, needSwitch } = this.props; let style = { width: mode == 'vertical' ? verticalWidth : inlineWidth }; let conHeightNum = (needSwitch ? 40 : 0) + (!!addonBeforeHeight && mode == 'inline' ? addonBeforeHeight : 0) + (!!addonAfterHeight && mode == 'inline' ? addonAfterHeight : 0); return (
{needSwitch ? (
) : ( '' )} {!!addonBefore && mode == 'inline' ? addonBefore : ''} {mode === 'inline' ? ( ) : ( )} {!!addonAfter && mode == 'inline' ? addonAfter : ''}
); } onModeChange(mode) { // console.log("mode:",mode); const { inlineWidth, verticalWidth } = this.state; const newMode = mode == 'inline' ? 'vertical' : 'inline'; const newWidth = newMode == 'inline' ? inlineWidth : verticalWidth; this.setState({ mode: newMode, }); if (typeof this.props.onModeChange == 'function') { this.props.onModeChange(newMode, newWidth); } } onSelect(key, data, type) { // console.log("key:",key," data:",data,"type",type); this.setState({ defaultSelectedKey: key, }); if (typeof this.props.onSelect == 'function') { this.props.onSelect(key, data, type); } } setTreeKey(pKey, datas) { // console.log("datas:",datas); let that = this; let newDatas = new Array(); for (let i = 0; i < datas.length; i++) { let data = datas[i]; data.treeKey = pKey != '' ? `${pKey}{$}${data.id}` : data.id; if (data.child && data.child.length > 0) { data.child = that.setTreeKey(data.treeKey, data.child); } newDatas.push(data); } return newDatas; } getVerticalDatas(datas) { // console.log("datas:",datas); let newDatas = new Array(); for (let i = 0; i < datas.length; i++) { const data = datas[i]; let newData = cloneDeep(data); newData.child = []; let newDataNoChild = cloneDeep(newData); newDataNoChild.id = `verTop_${newDataNoChild.id}`; if (data.child) { newData.child = [newDataNoChild].concat(data.child); } else { newData.child = [newDataNoChild]; } newDatas.push(newData); // newDataNoChild.child = [cloneDeep(datas[i])]; // newDatas.push(newDataNoChild); } // console.log("newDatas:",newDatas); return newDatas; } } export default WeaMenu;