| | |
| | | import React from 'react' |
| | | // import React, { useState } from 'react' |
| | | import React, { useState } from 'react' |
| | | import { useDrop } from 'react-dnd' |
| | | // import { is, fromJS } from 'immutable' |
| | | // import update from 'immutability-helper' |
| | | // import Utils from '@/utils/utils.js' |
| | | import { is, fromJS } from 'immutable' |
| | | import update from 'immutability-helper' |
| | | import { message } from 'antd' |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import Card from './card' |
| | | import './index.scss' |
| | | |
| | | const Container = ({list, placeholder, handleList, handleMenu, deleteMenu, doubleClickCard }) => { |
| | | // let target = null |
| | | const Container = ({config, handleList, handleMenu, deleteMenu, doubleClickCard }) => { |
| | | let target = null |
| | | |
| | | // const [cards, setCards] = useState(list) |
| | | // const moveCard = (id, atIndex) => { |
| | | // const { card, index } = findCard(id) |
| | | // const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] }) |
| | | // handleList(_cards) |
| | | // } |
| | | const [cards, setCards] = useState(config.components) |
| | | const moveCard = (id, atIndex) => { |
| | | const { card, index } = findCard(id) |
| | | const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] }) |
| | | handleList({...config, components: _cards}) |
| | | console.log(_cards) |
| | | } |
| | | |
| | | // if (!is(fromJS(cards), fromJS(list))) { |
| | | // setCards(list) |
| | | // } |
| | | if (!is(fromJS(cards), fromJS(config.components))) { |
| | | setCards(config.components) |
| | | } |
| | | |
| | | // const findCard = id => { |
| | | // const card = cards.filter(c => `${c.uuid}` === id)[0] |
| | | // return { |
| | | // card, |
| | | // index: cards.indexOf(card), |
| | | // } |
| | | // } |
| | | const findCard = id => { |
| | | const card = cards.filter(c => `${c.uuid}` === id)[0] |
| | | return { |
| | | card, |
| | | index: cards.indexOf(card), |
| | | } |
| | | } |
| | | |
| | | // const doubleClickBtn = id => { |
| | | // const { card } = findCard(id) |
| | |
| | | // deleteMenu(card) |
| | | // } |
| | | |
| | | // const hasDrop = (item) => { |
| | | // target = item |
| | | // } |
| | | const hasDrop = (item) => { |
| | | target = item |
| | | } |
| | | |
| | | const [, drop] = useDrop({ |
| | | accept: 'action', |
| | | accept: 'mob', |
| | | drop(item) { |
| | | if (item.hasOwnProperty('originalIndex')) { |
| | | return |
| | | } |
| | | |
| | | // let newcard = {} |
| | | // newcard.uuid = Utils.getuuid() |
| | | if (cards.length > 0 && cards[0].type === 'login') { |
| | | message.warning('登录页不可添加其他元素!') |
| | | return |
| | | } |
| | | |
| | | let newcard = fromJS(item.param).toJS() |
| | | newcard.uuid = Utils.getuuid() |
| | | |
| | | // let targetId = cards.length > 0 ? cards[cards.length - 1].uuid : 0 |
| | | // if (target) { |
| | | // targetId = target.uuid |
| | | // } |
| | | let targetId = cards.length > 0 ? cards[cards.length - 1].uuid : 0 |
| | | if (target) { |
| | | targetId = target.uuid |
| | | } |
| | | |
| | | // const { index: overIndex } = findCard(`${targetId}`) |
| | | // let targetIndex = overIndex |
| | | const { index: overIndex } = findCard(`${targetId}`) |
| | | let targetIndex = overIndex |
| | | |
| | | // targetIndex++ |
| | | targetIndex++ |
| | | |
| | | // const _cards = update(cards, { $splice: [[targetIndex, 0, newcard]] }) |
| | | const _cards = update(cards, { $splice: [[targetIndex, 0, newcard]] }) |
| | | |
| | | // handleList(_cards, newcard) |
| | | // target = null |
| | | handleList({...config, components: _cards}) |
| | | target = null |
| | | } |
| | | }) |
| | | |
| | | return ( |
| | | <div ref={drop} className="mob-shell-inner"> |
| | | {/* {cards.map(card => ( |
| | | {cards.map(card => ( |
| | | <Card |
| | | id={card.uuid} |
| | | key={card.uuid} |
| | | card={card} |
| | | moveCard={moveCard} |
| | | editCard={editCard} |
| | | delCard={delCard} |
| | | // editCard={editCard} |
| | | // delCard={delCard} |
| | | findCard={findCard} |
| | | hasDrop={hasDrop} |
| | | doubleClickCard={doubleClickBtn} |
| | | // doubleClickCard={doubleClickBtn} |
| | | /> |
| | | ))} */} |
| | | <Card /> |
| | | |
| | | ))} |
| | | {/* {cards.length === 0 ? |
| | | <div className="common-drawarea-placeholder"> |
| | | {placeholder} |