From 1a11f7115e61c548f9ffc77d0a9e504307ca71b2 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 24 八月 2021 18:37:20 +0800 Subject: [PATCH] 2021-08-24 --- src/menu/components/group/normal-group/index.jsx | 81 +++++++++++++++++++++++++--------------- 1 files changed, 50 insertions(+), 31 deletions(-) diff --git a/src/menu/components/group/normal-group/index.jsx b/src/menu/components/group/normal-group/index.jsx index 5fb24c3..ac34bbd 100644 --- a/src/menu/components/group/normal-group/index.jsx +++ b/src/menu/components/group/normal-group/index.jsx @@ -1,21 +1,20 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { connect } from 'react-redux' import { is, fromJS } from 'immutable' -import { Icon, Popover } from 'antd' +import { Icon, Popover, Button } from 'antd' import MKEmitter from '@/utils/events.js' import asyncComponent from '@/utils/asyncComponent' import asyncIconComponent from '@/utils/asyncIconComponent' - +import { resetStyle } from '@/utils/utils-custom.js' import zhCN from '@/locales/zh-CN/model.js' import enUS from '@/locales/en-US/model.js' import './index.scss' -const SettingComponent = asyncIconComponent(() => import('../tabsetting')) +const SettingComponent = asyncIconComponent(() => import('../groupsetting')) const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent')) const PasteController = asyncIconComponent(() => import('@/menu/pastecontroller')) -const TabComponents = asyncComponent(() => import('../tabcomponents')) +const GroupComponents = asyncComponent(() => import('../groupcomponents')) class NormalGroup extends Component { static propTpyes = { @@ -25,7 +24,7 @@ } state = { - dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, + dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, group: null, editab: null, } @@ -63,8 +62,9 @@ } componentDidMount () { - MKEmitter.addListener('tabsChange', this.handleTabsChange) MKEmitter.addListener('submitStyle', this.getStyle) + MKEmitter.addListener('tabsChange', this.handleTabsChange) + MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) } /** @@ -74,14 +74,34 @@ this.setState = () => { return } + MKEmitter.removeListener('submitStyle', this.getStyle) MKEmitter.removeListener('tabsChange', this.handleTabsChange) - MKEmitter.addListener('submitStyle', this.getStyle) + MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) + } + + updateComponentStyle = (parentId, keys, style) => { + const { group } = this.state + + if (group.uuid !== parentId) return + + let components = group.components.map(item => { + if (keys.includes(item.uuid)) { + item.style = {...item.style, ...style} + } + return item + }) + + this.setState({ + group: {...group, components: []} + }, () => { + this.updateComponent({...group, components: components}) + }) } changeStyle = () => { const { group } = this.state - MKEmitter.emit('changeStyle', [group.uuid], ['background', 'border', 'padding', 'margin'], group.style) + MKEmitter.emit('changeStyle', [group.uuid], ['background', 'border', 'padding', 'margin', 'shadow'], group.style) } getStyle = (comIds, style) => { @@ -109,8 +129,8 @@ updateComponent = (component) => { const { group } = this.state - if (!is(fromJS(group.setting), fromJS(component.setting))) { - // 娉ㄥ唽浜嬩欢-鏍囩鍙樺寲锛岄�氱煡鏍囩鍐呭厓绱� + if (!is(fromJS(group.setting), fromJS(component.setting)) || !is(fromJS(group.style), fromJS(component.style))) { + // 娉ㄥ唽浜嬩欢-鏍囩鍙樺寲锛岄�氱煡缁勫唴鍏冪礌 MKEmitter.emit('tabsChange', group.uuid) } @@ -123,24 +143,33 @@ this.props.updateConfig(component) } - insert = (item, cell) => { + insert = (item) => { let group = fromJS(this.state.group).toJS() - group.components.forEach(stab => { - if (stab.uuid === cell.uuid) { - stab.components.push(item) - } - }) + group.components.push(item) this.setState({group}) this.props.updateConfig(group) } + clickComponent = (e) => { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { + e.stopPropagation() + MKEmitter.emit('clickComponent', this.state.group) + } + } + render() { const { group } = this.state + let _style = resetStyle(group.style) + + let paddingTop = true + if (group.style.paddingTop && parseInt(group.style.paddingTop) >= 28) { + paddingTop = false + } return ( - <div className="menu-group-edit-box" style={group.style}> + <div className={'menu-group-edit-box' + (paddingTop ? ' padding' : '')} style={_style} onClick={this.clickComponent} id={group.uuid}> <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> <SettingComponent config={group} updateConfig={this.updateComponent} /> @@ -152,21 +181,11 @@ } trigger="hover"> <Icon type="tool" /> </Popover> - <TabComponents config={group} handleList={this.updateComponent} deleteCard={this.deleteCard} /> - + {group.setting && group.setting.print === 'true' ? <Button className="print-button" icon="printer" onClick={this.print}></Button> : null} + <GroupComponents config={group} handleList={this.updateComponent} deleteCard={this.deleteCard} /> </div> ) } } -const mapStateToProps = (state) => { - return { - menu: state.customMenu - } -} - -const mapDispatchToProps = () => { - return {} -} - -export default connect(mapStateToProps, mapDispatchToProps)(NormalGroup) \ No newline at end of file +export default NormalGroup \ No newline at end of file -- Gitblit v1.8.0