diff --git a/src/components/BackTop/index.tsx b/src/components/BackTop/index.tsx deleted file mode 100644 index 64126f0..0000000 --- a/src/components/BackTop/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { memo } from 'react'; -import { BackToTop, Icon } from 'zarm'; -import React from 'react'; -const themeObj = { - simple: { bgColor: '#fff', color: '#999' }, - black: { bgColor: '#000', color: '#fff' }, - danger: { bgColor: '#ff5050', color: '#fff' }, - primary: { bgColor: '#00bc71', color: '#fff' }, - blue: { bgColor: '#06c', color: '#fff' }, -}; -const BackTop = memo((props: { theme: keyof typeof themeObj }) => { - const { theme = 'simple' } = props; - - return ( - - - - - - ); -}); - -export default BackTop; diff --git a/src/components/BasicShop/BasicComponents/List/schema.ts b/src/components/BasicShop/BasicComponents/List/schema.ts index 41f38e0..9529122 100644 --- a/src/components/BasicShop/BasicComponents/List/schema.ts +++ b/src/components/BasicShop/BasicComponents/List/schema.ts @@ -7,7 +7,7 @@ import { TDataListDefaultType, TNumberDefaultType, TSelectDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; +} from '@/core/FormComponents/types'; import { baseConfig, baseDefault, ICommonBaseType } from '../../common'; export type TListSelectKeyType = '60' | '80' | '100' | '120' | '150'; export type TListEditData = Array< diff --git a/src/components/BasicShop/BasicComponents/LongText/schema.ts b/src/components/BasicShop/BasicComponents/LongText/schema.ts index e89dc95..1a2af73 100644 --- a/src/components/BasicShop/BasicComponents/LongText/schema.ts +++ b/src/components/BasicShop/BasicComponents/LongText/schema.ts @@ -7,7 +7,7 @@ import { TNumberDefaultType, TSelectDefaultType, TTextAreaDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; +} from '@/core/FormComponents/types'; export type TLongTextSelectKeyType = 'left' | 'center' | 'right'; export type TLongTextEditData = Array< diff --git a/src/components/BasicShop/BasicComponents/Text/schema.ts b/src/components/BasicShop/BasicComponents/Text/schema.ts index f23ffc7..cbbea30 100644 --- a/src/components/BasicShop/BasicComponents/Text/schema.ts +++ b/src/components/BasicShop/BasicComponents/Text/schema.ts @@ -7,7 +7,7 @@ import { TNumberDefaultType, TSelectDefaultType, TTextDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; +} from '@/core/FormComponents/types'; export type TTextSelectKeyType = 'left' | 'right' | 'center'; export type TTextEditData = Array< diff --git a/src/components/CommonComponents/BasicComponents/Notice/index.tsx b/src/components/CommonComponents/BasicComponents/Notice/index.tsx deleted file mode 100644 index dd3a702..0000000 --- a/src/components/CommonComponents/BasicComponents/Notice/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { NoticeBar } from 'zarm'; -import React, { memo } from 'react'; -import { INoticeConfig } from './schema'; -const Notice = memo((props: INoticeConfig) => { - const { text, speed, theme, isClose = false } = props; - return ( - - {text} - - ); -}); - -export default Notice; diff --git a/src/components/CommonComponents/BasicComponents/Notice/schema.ts b/src/components/CommonComponents/BasicComponents/Notice/schema.ts deleted file mode 100644 index 5d84168..0000000 --- a/src/components/CommonComponents/BasicComponents/Notice/schema.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { - INumberConfigType, - ISelectConfigType, - ISwitchConfigType, - ITextConfigType, - TNumberDefaultType, - TSelectDefaultType, - TSwitchDefaultType, - TTextDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; - -export type TNoticeSelectKeyType = 'default' | 'warning' | 'primary' | 'success' | 'danger'; -export type TNoticeEditData = Array< - ITextConfigType | INumberConfigType | ISelectConfigType | ISwitchConfigType ->; -export interface INoticeConfig { - text: TTextDefaultType; - speed: TNumberDefaultType; - theme: TSelectDefaultType; - isClose: TSwitchDefaultType; -} - -export interface INoticeSchema { - editData: TNoticeEditData; - config: INoticeConfig; -} - -const Notice: INoticeSchema = { - editData: [ - { - key: 'text', - name: '文本', - type: 'Text', - }, - { - key: 'speed', - name: '滚动速度', - type: 'Number', - }, - { - key: 'theme', - name: '主题', - type: 'Select', - range: [ - { - key: 'default', - text: '默认', - }, - { - key: 'warning', - text: '警告', - }, - { - key: 'primary', - text: '主要', - }, - { - key: 'success', - text: '成功', - }, - { - key: 'danger', - text: '危险', - }, - ], - }, - { - key: 'isClose', - name: '是否可关闭', - type: 'Switch', - }, - ], - config: { - text: '通知栏: 趣谈前端上线啦', - speed: 50, - theme: 'warning', - isClose: false, - }, -}; - -export default Notice; diff --git a/src/components/CommonComponents/BasicComponents/Notice/template.ts b/src/components/CommonComponents/BasicComponents/Notice/template.ts deleted file mode 100644 index fd0e415..0000000 --- a/src/components/CommonComponents/BasicComponents/Notice/template.ts +++ /dev/null @@ -1,5 +0,0 @@ -const template = { - type: 'Notice', - h: 20, -}; -export default template; diff --git a/src/components/CommonComponents/BasicComponents/Tab/index.less b/src/components/CommonComponents/BasicComponents/Tab/index.less deleted file mode 100644 index 1583925..0000000 --- a/src/components/CommonComponents/BasicComponents/Tab/index.less +++ /dev/null @@ -1,27 +0,0 @@ -.tabWrap { - padding-top: 16px; - padding-bottom: 16px; - .content { - display: flex; - flex-wrap: wrap; - .item { - padding: 20px 20px 0; - width: 50%; - text-align: center; - justify-content: center; - .imgWrap { - display: inline-block; - width: 80%; - img { - border-radius: 6px; - width: 120px; - height: 120px; - object-fit: cover; - } - .title { - line-height: 2.4; - } - } - } - } -} diff --git a/src/components/CommonComponents/BasicComponents/Tab/index.tsx b/src/components/CommonComponents/BasicComponents/Tab/index.tsx deleted file mode 100644 index d4a6162..0000000 --- a/src/components/CommonComponents/BasicComponents/Tab/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React, { useEffect, useRef } from 'react'; -import { Tabs } from 'zarm'; -import styles from './index.less'; -import { ITabConfig } from './schema'; - -const { Panel } = Tabs; - -const XTab = (props: ITabConfig) => { - const { tabs = ['分类一', '分类二'], activeColor, color, fontSize, sourceData } = props; - - const tabWrapRef = useRef(null); - - useEffect(() => { - if (tabWrapRef.current) { - let res = tabWrapRef.current.querySelector('.za-tabs__line') as HTMLElement; - if (res) { - res.style.backgroundColor = activeColor; - } - } - }, [activeColor]); - - return ( - - - {tabs.map((item, i) => { - return ( - - - {sourceData - .filter(item => item.type === i) - .map((item, i) => { - return ( - - - - - {item.title} - - - - ); - })} - - - ); - })} - - - ); -}; - -export default XTab; diff --git a/src/components/CommonComponents/BasicComponents/Tab/schema.ts b/src/components/CommonComponents/BasicComponents/Tab/schema.ts deleted file mode 100644 index 9ba1794..0000000 --- a/src/components/CommonComponents/BasicComponents/Tab/schema.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { - IColorConfigType, - IDataListConfigType, - IMutiTextConfigType, - INumberConfigType, - TColorDefaultType, - TDataListDefaultType, - TMutiTextDefaultType, - TNumberDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; - -export type TTabEditData = Array< - IMutiTextConfigType | IColorConfigType | INumberConfigType | IDataListConfigType ->; -export interface ITabConfig { - tabs: TMutiTextDefaultType; - color: TColorDefaultType; - activeColor: TColorDefaultType; - fontSize: TNumberDefaultType; - imgSize: TNumberDefaultType; - sourceData: TDataListDefaultType; -} - -export interface ITabSchema { - editData: TTabEditData; - config: ITabConfig; -} - -const Tab: ITabSchema = { - editData: [ - { - key: 'tabs', - name: '项目类别', - type: 'MutiText', - }, - { - key: 'activeColor', - name: '激活颜色', - type: 'Color', - }, - { - key: 'color', - name: '文字颜色', - type: 'Color', - }, - { - key: 'fontSize', - name: '文字大小', - type: 'Number', - }, - { - key: 'imgSize', - name: '图片大小', - type: 'Number', - }, - { - key: 'sourceData', - name: '数据源', - type: 'DataList', - }, - ], - config: { - tabs: ['类别一', '类别二'], - color: 'rgba(153,153,153,1)', - activeColor: 'rgba(0,102,204,1)', - fontSize: 16, - imgSize: 100, - sourceData: [ - { - id: '1', - title: '趣谈小课1', - desc: '致力于打造优质小课程', - link: 'xxxxx', - type: 0, - imgUrl: [ - { - uid: '001', - name: 'image.png', - status: 'done', - url: 'http://io.nainor.com/uploads/1_1740c6fbcd9.png', - }, - ], - }, - { - id: '2', - title: '趣谈小课2', - desc: '致力于打造优质小课程', - link: 'xxxxx', - type: 0, - imgUrl: [ - { - uid: '001', - name: 'image.png', - status: 'done', - url: 'http://io.nainor.com/uploads/2_1740c7033a9.png', - }, - ], - }, - { - id: '3', - title: '趣谈小课3', - desc: '致力于打造优质小课程', - link: 'xxxxx', - type: 1, - imgUrl: [ - { - uid: '001', - name: 'image.png', - status: 'done', - url: 'http://io.nainor.com/uploads/1_1740c6fbcd9.png', - }, - ], - }, - ], - }, -}; - -export default Tab; diff --git a/src/components/CommonComponents/BasicComponents/Tab/template.ts b/src/components/CommonComponents/BasicComponents/Tab/template.ts deleted file mode 100644 index dbab411..0000000 --- a/src/components/CommonComponents/BasicComponents/Tab/template.ts +++ /dev/null @@ -1,5 +0,0 @@ -const template = { - type: 'Tab', - h: 130, -}; -export default template; diff --git a/src/components/CommonComponents/BasicComponents/schema.ts b/src/components/CommonComponents/BasicComponents/schema.ts deleted file mode 100644 index 983dff2..0000000 --- a/src/components/CommonComponents/BasicComponents/schema.ts +++ /dev/null @@ -1,28 +0,0 @@ -import Carousel from './Carousel/schema'; -import Footer from './Footer/schema'; -import Form from './Form/schema'; -import Header from './Header/schema'; -import Icon from './Icon/schema'; -import Image from './Image/schema'; -import List from './List/schema'; -import LongText from './LongText/schema'; -import Notice from './Notice/schema'; -import Qrcode from './Qrcode/schema'; -import Tab from './Tab/schema'; -import Text from './Text/schema'; - -const basicSchema = { - Carousel, - Footer, - Form, - Header, - Icon, - Image, - List, - LongText, - Notice, - Qrcode, - Tab, - Text, -}; -export default basicSchema; diff --git a/src/components/CommonComponents/BasicComponents/template.ts b/src/components/CommonComponents/BasicComponents/template.ts deleted file mode 100644 index ae567de..0000000 --- a/src/components/CommonComponents/BasicComponents/template.ts +++ /dev/null @@ -1,32 +0,0 @@ -import Carousel from './Carousel/template'; -import Footer from './Footer/template'; -import Form from './Form/template'; -import Header from './Header/template'; -import Icon from './Icon/template'; -import Image from './Image/template'; -import List from './List/template'; -import LongText from './LongText/template'; -import Notice from './Notice/template'; -import Qrcode from './Qrcode/template'; -import Tab from './Tab/template'; -import Text from './Text/template'; - -const basicTemplate = [ - Carousel, - Footer, - Form, - Header, - Icon, - Image, - List, - LongText, - Notice, - Qrcode, - Tab, - Text, -]; -const BasicTemplate = basicTemplate.map(v => { - return { ...v, category: 'base' }; -}); - -export default BasicTemplate; diff --git a/src/components/CommonComponents/VisualComponents/Carousel/index.less b/src/components/CommonComponents/VisualComponents/Carousel/index.less deleted file mode 100644 index 44c9f46..0000000 --- a/src/components/CommonComponents/VisualComponents/Carousel/index.less +++ /dev/null @@ -1,10 +0,0 @@ -.carousel__item__pic { - display: inline-block; - width: 100%; - max-height: 220px; - overflow: hidden; - vertical-align: top; - img { - width: 100%; - } -} diff --git a/src/components/CommonComponents/VisualComponents/Carousel/index.tsx b/src/components/CommonComponents/VisualComponents/Carousel/index.tsx deleted file mode 100644 index a2a5ee9..0000000 --- a/src/components/CommonComponents/VisualComponents/Carousel/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React, { memo, PropsWithChildren } from 'react'; -import { Carousel } from 'zarm'; -import styles from './index.less'; -import { ICarouselConfig } from './schema'; - -interface CarouselTypes extends ICarouselConfig { - isTpl: boolean; -} - -const XCarousel = memo((props: PropsWithChildren) => { - const { direction, swipeable, autoPlay, isTpl, imgList, tplImg } = props; - const contentRender = () => { - return imgList.map((item, i) => { - return ( - - 0 ? item.imgUrl[0].url : ''} alt="" /> - - ); - }); - }; - return ( - - {isTpl ? ( - - - - ) : ( - { - // console.log(`onChange: ${index}`); - }} - direction={direction} - swipeable={swipeable} - autoPlay={autoPlay} - loop - > - {contentRender()} - - )} - - ); -}); - -export default XCarousel; diff --git a/src/components/CommonComponents/VisualComponents/Carousel/schema.ts b/src/components/CommonComponents/VisualComponents/Carousel/schema.ts deleted file mode 100644 index a8ade45..0000000 --- a/src/components/CommonComponents/VisualComponents/Carousel/schema.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { - IDataListConfigType, - IRadioConfigType, - ISwitchConfigType, - TDataListDefaultType, - TRadioDefaultType, - TSwitchDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; - -export type CarouselDirectionKeyType = 'down' | 'left'; - -export type TCarouselEditData = Array< - IRadioConfigType | ISwitchConfigType | IDataListConfigType ->; -export interface ICarouselConfig { - direction: TRadioDefaultType; - swipeable: TSwitchDefaultType; - autoPlay: TSwitchDefaultType; - imgList: TDataListDefaultType; - tplImg: string; -} - -export interface ICarouselSchema { - editData: TCarouselEditData; - config: ICarouselConfig; -} - -const Carousel: ICarouselSchema = { - editData: [ - { - key: 'direction', - name: '方向', - type: 'Radio', - range: [ - { - key: 'down', - text: '从上到下', - }, - { - key: 'left', - text: '从左到右', - }, - ], - }, - { - key: 'swipeable', - name: '是否可拖拽', - type: 'Switch', - }, - { - key: 'autoPlay', - name: '是否自动播放', - type: 'Switch', - }, - { - key: 'imgList', - name: '图片列表', - type: 'DataList', - }, - ], - config: { - direction: 'left', - swipeable: false, - autoPlay: false, - imgList: [ - { - id: '1', - title: '趣谈小课1', - desc: '致力于打造优质小课程', - link: 'xxxxx', - imgUrl: [ - { - uid: '001', - name: 'image.png', - status: 'done', - url: 'http://io.nainor.com/uploads/1_1740bd7c3dc.png', - }, - ], - }, - { - id: '2', - title: '趣谈小课1', - desc: '致力于打造优质小课程', - link: 'xxxxx', - imgUrl: [ - { - uid: '001', - name: 'image.png', - status: 'done', - url: 'http://io.nainor.com/uploads/2_1740bd8d525.png', - }, - ], - }, - ], - tplImg: 'http://io.nainor.com/uploads/carousal_17442e1420f.png', - }, -}; -export default Carousel; diff --git a/src/components/CommonComponents/VisualComponents/Carousel/template.ts b/src/components/CommonComponents/VisualComponents/Carousel/template.ts deleted file mode 100644 index b915ba4..0000000 --- a/src/components/CommonComponents/VisualComponents/Carousel/template.ts +++ /dev/null @@ -1,5 +0,0 @@ -const template = { - type: 'Carousel', - h: 82, -}; -export default template; diff --git a/src/components/CommonComponents/VisualComponents/Form/BaseForm.tsx b/src/components/CommonComponents/VisualComponents/Form/BaseForm.tsx deleted file mode 100644 index 78f4a3f..0000000 --- a/src/components/CommonComponents/VisualComponents/Form/BaseForm.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import { Input, Cell, DateSelect, Radio, Select } from 'zarm'; -import styles from './baseForm.less'; -import React from 'react'; -import { - baseFormDateTpl, - baseFormMyRadioTpl, - baseFormMySelectTpl, - baseFormNumberTpl, - baseFormTextAreaTpl, - baseFormTextTpl, - baseFormUnionType, -} from '@/components/PanelComponents/FormEditor/types'; -// 维护表单控件, 提高form渲染性能 - -type TBaseForm = { - [key in baseFormUnionType]: any; -}; - -const BaseForm: TBaseForm = { - Text: (props: baseFormTextTpl & { onChange: (v: string | undefined) => void }) => { - const { label, placeholder, onChange } = props; - return ( - - - - ); - }, - Textarea: (props: baseFormTextAreaTpl & { onChange: (v: string | undefined) => void }) => { - const { label, placeholder, onChange } = props; - return ( - - - - ); - }, - Number: (props: baseFormNumberTpl & { onChange: (v: string | undefined | number) => void }) => { - const { label, placeholder, onChange } = props; - return ( - - - - ); - }, - MyRadio: (props: baseFormMyRadioTpl & { onChange: (v: string | undefined | number) => void }) => { - const { label, options, onChange } = props; - return ( - - {label} - - - {options.map((item, i) => { - return ( - - {item.label} - - ); - })} - - - - ); - }, - Date: (props: baseFormDateTpl & { onChange: (v: Date) => void }) => { - const { label, placeholder, onChange } = props; - return ( - - - - ); - }, - MySelect: ( - props: baseFormMySelectTpl & { onChange: ((v: Record) => void) | undefined }, - ) => { - const { label, options, onChange } = props; - return ( - - - - ); - }, -}; - -export default BaseForm; diff --git a/src/components/CommonComponents/VisualComponents/Form/baseForm.less b/src/components/CommonComponents/VisualComponents/Form/baseForm.less deleted file mode 100644 index bf11ee9..0000000 --- a/src/components/CommonComponents/VisualComponents/Form/baseForm.less +++ /dev/null @@ -1,10 +0,0 @@ -.radioWrap { - margin-bottom: 10px; - .radioTitle { - padding: 19px 14px; - // font-size: 15px; - } - .radioItem { - margin-top: 10px; - } -} diff --git a/src/components/CommonComponents/VisualComponents/Form/index.less b/src/components/CommonComponents/VisualComponents/Form/index.less deleted file mode 100644 index d106cbb..0000000 --- a/src/components/CommonComponents/VisualComponents/Form/index.less +++ /dev/null @@ -1,14 +0,0 @@ -.formWrap { - margin: 10px; - padding: 20px 16px; - border-radius: 6px; - background-color: #fff; - box-shadow: 0 2px 6px #f0f0f0; - .title { - padding-bottom: 20px; - text-align: center; - font-size: 18px; - } - .formContent { - } -} diff --git a/src/components/CommonComponents/VisualComponents/Form/index.tsx b/src/components/CommonComponents/VisualComponents/Form/index.tsx deleted file mode 100644 index 2ded63c..0000000 --- a/src/components/CommonComponents/VisualComponents/Form/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React, { memo, useCallback } from 'react'; -import { Button } from 'zarm'; -import BaseForm from './BaseForm'; -import styles from './index.less'; -import { IFormConfig } from './schema'; - -const FormComponent = (props: IFormConfig) => { - const { title, bgColor, fontSize, titColor, btnColor, btnTextColor, api, formControls } = props; - const formData: Record = {}; - const handleChange = useCallback( - (item, v) => { - if (item.options) { - formData[item.label] = v[0].label; - return; - } - formData[item.label] = v; - }, - [formData], - ); - const handleSubmit = () => { - if (api) { - fetch(api, { - body: JSON.stringify(formData), - cache: 'no-cache', - headers: { - 'content-type': 'application/json', - }, - method: 'POST', - mode: 'cors', - }); - } - }; - return ( - - {title && ( - - {title} - - )} - - {formControls.map(item => { - const FormItem = BaseForm[item.type]; - return ; - })} - - - 提交 - - - - - ); -}; - -export default memo(FormComponent); diff --git a/src/components/CommonComponents/VisualComponents/Form/schema.ts b/src/components/CommonComponents/VisualComponents/Form/schema.ts deleted file mode 100644 index 89185a9..0000000 --- a/src/components/CommonComponents/VisualComponents/Form/schema.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { - IColorConfigType, - IFormItemsConfigType, - INumberConfigType, - ITextConfigType, - TColorDefaultType, - TFormItemsDefaultType, - TNumberDefaultType, - TTextDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; - -export type TFormEditData = Array< - ITextConfigType | INumberConfigType | IColorConfigType | ITextConfigType | IFormItemsConfigType ->; -export interface IFormConfig { - title: TTextDefaultType; - fontSize: TNumberDefaultType; - titColor: TColorDefaultType; - bgColor: TColorDefaultType; - btnColor: TColorDefaultType; - btnTextColor: TColorDefaultType; - api: TTextDefaultType; - formControls: TFormItemsDefaultType; -} - -export interface IFormSchema { - editData: TFormEditData; - config: IFormConfig; -} - -const Form: IFormSchema = { - editData: [ - { - key: 'title', - name: '标题', - type: 'Text', - }, - { - key: 'fontSize', - name: '标题大小', - type: 'Number', - }, - { - key: 'titColor', - name: '标题颜色', - type: 'Color', - }, - { - key: 'bgColor', - name: '背景色', - type: 'Color', - }, - { - key: 'btnColor', - name: '按钮颜色', - type: 'Color', - }, - { - key: 'btnTextColor', - name: '按钮文本颜色', - type: 'Color', - }, - { - key: 'api', - name: '表单Api地址', - type: 'Text', - }, - { - key: 'formControls', - name: '表单控件', - type: 'FormItems', - }, - ], - config: { - title: '表单定制组件', - fontSize: 18, - titColor: 'rgba(60,60,60,1)', - bgColor: 'rgba(255,255,255,1)', - btnColor: 'rgba(129,173,173,1)', - btnTextColor: 'rgba(255,255,255,1)', - api: '', - formControls: [ - { - id: '1', - type: 'Text', - label: '姓名', - placeholder: '请输入姓名', - }, - { - id: '2', - type: 'Number', - label: '年龄', - placeholder: ' 请输入年龄', - }, - { - id: '4', - type: 'MySelect', - label: '爱好', - options: [ - { label: '篮球', value: '1' }, - { label: '乒乓球', value: '2' }, - { label: '健身', value: '3' }, - ], - }, - ], - }, -}; -export default Form; diff --git a/src/components/CommonComponents/VisualComponents/Form/template.ts b/src/components/CommonComponents/VisualComponents/Form/template.ts deleted file mode 100644 index 2861692..0000000 --- a/src/components/CommonComponents/VisualComponents/Form/template.ts +++ /dev/null @@ -1,5 +0,0 @@ -const template = { - type: 'Form', - h: 172, -}; -export default template; diff --git a/src/components/CommonComponents/VisualComponents/XProgress/index.tsx b/src/components/CommonComponents/VisualComponents/XProgress/index.tsx deleted file mode 100644 index f25377b..0000000 --- a/src/components/CommonComponents/VisualComponents/XProgress/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React, { memo } from 'react'; -import { Progress } from 'zarm'; -import styles from './index.less'; -import { IXProgressConfig } from './schema'; - -const XProgress = memo((props: IXProgressConfig) => { - const { theme, size, shape, percent, strokeWidth } = props; - return ( - - - - ); -}); - -export default XProgress; diff --git a/src/components/CommonComponents/VisualComponents/XProgress/schema.ts b/src/components/CommonComponents/VisualComponents/XProgress/schema.ts deleted file mode 100644 index 9b03d45..0000000 --- a/src/components/CommonComponents/VisualComponents/XProgress/schema.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { - INumberConfigType, - IRadioConfigType, - ISelectConfigType, - TNumberDefaultType, - TRadioDefaultType, - TSelectDefaultType, -} from '@/components/PanelComponents/FormEditor/types'; -export type TXProgressSelectKeyType = 'success' | 'warning' | 'danger'; -export type TXProgressRadiotKeyType = 'circle' | 'line' | 'semi-circle'; -export type TXProgressEditData = Array< - | ISelectConfigType - | IRadioConfigType - | INumberConfigType ->; -export interface IXProgressConfig { - theme: TSelectDefaultType; - shape: TRadioDefaultType; - size: TNumberDefaultType; - percent: TNumberDefaultType; - strokeWidth: TNumberDefaultType; -} - -export interface IXProgressSchema { - editData: TXProgressEditData; - config: IXProgressConfig; -} - -const XProgress: IXProgressSchema = { - editData: [ - { - key: 'theme', - name: '主题', - type: 'Select', - range: [ - { - key: 'success', - text: '成功', - }, - { - key: 'warning', - text: '警告', - }, - { - key: 'danger', - text: '危险', - }, - ], - }, - { - key: 'shape', - name: '形状', - type: 'Radio', - range: [ - { - key: 'circle', - text: '圆形', - }, - { - key: 'line', - text: '线形', - }, - { - key: 'semi-circle', - text: '半圆形', - }, - ], - }, - { - key: 'size', - name: '大小', - type: 'Number', - }, - { - key: 'percent', - name: '进度值', - type: 'Number', - range: [0, 100], - }, - { - key: 'strokeWidth', - name: '线条粗细', - type: 'Number', - }, - ], - config: { - theme: 'success', - shape: 'circle', - size: 200, - percent: 30, - strokeWidth: 10, - }, -}; - -export default XProgress; diff --git a/src/components/CommonComponents/VisualComponents/XProgress/template.ts b/src/components/CommonComponents/VisualComponents/XProgress/template.ts deleted file mode 100644 index 5460258..0000000 --- a/src/components/CommonComponents/VisualComponents/XProgress/template.ts +++ /dev/null @@ -1,5 +0,0 @@ -const template = { - type: 'XProgress', - h: 102, -}; -export default template; diff --git a/src/components/DynamicEngine/.DS_Store b/src/components/DynamicEngine/.DS_Store deleted file mode 100644 index 6eca943..0000000 Binary files a/src/components/DynamicEngine/.DS_Store and /dev/null differ diff --git a/src/components/PanelComponents/Color/index.less b/src/components/PanelComponents/Color/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/PanelComponents/FormEditor/index.less b/src/components/PanelComponents/FormEditor/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/DynamicEngine/index.tsx b/src/core/DynamicEngine.tsx similarity index 95% rename from src/components/DynamicEngine/index.tsx rename to src/core/DynamicEngine.tsx index cc0fa7c..c519c85 100644 --- a/src/components/DynamicEngine/index.tsx +++ b/src/core/DynamicEngine.tsx @@ -1,9 +1,8 @@ import { dynamic } from 'umi'; -import Loading from '../LoadingCp'; +import Loading from '../components/LoadingCp'; import { useMemo, memo, FC, useContext } from 'react'; import React from 'react'; import { dooringContext, dooringContextType } from '@/layouts'; -// import { AllTemplateType } from './schema'; export type componentsType = 'media' | 'base' | 'visible'; diff --git a/src/components/PanelComponents/CardPicker/index.less b/src/core/FormComponents/CardPicker/index.less similarity index 100% rename from src/components/PanelComponents/CardPicker/index.less rename to src/core/FormComponents/CardPicker/index.less diff --git a/src/components/PanelComponents/CardPicker/index.tsx b/src/core/FormComponents/CardPicker/index.tsx similarity index 90% rename from src/components/PanelComponents/CardPicker/index.tsx rename to src/core/FormComponents/CardPicker/index.tsx index 99ed4c2..9ba1293 100644 --- a/src/components/PanelComponents/CardPicker/index.tsx +++ b/src/core/FormComponents/CardPicker/index.tsx @@ -1,10 +1,10 @@ import { useState, useEffect, memo } from 'react'; import classnames from 'classnames'; -import Icon from '../../BasicShop/BasicComponents/Icon'; +import Icon from '@/components/BasicShop/BasicComponents/Icon'; import styles from './index.less'; import React from 'react'; import { IconTypes } from '@/components/BasicShop/BasicComponents/Icon/schema'; -import { ICardPickerConfigType } from '../FormEditor/types'; +import { ICardPickerConfigType } from '../types'; interface CardPickerType extends Omit, 'type' | 'key' | 'name'> { onChange?: (v: string) => void; diff --git a/src/components/CommonComponents/VisualComponents/XProgress/index.less b/src/core/FormComponents/Color/index.less similarity index 100% rename from src/components/CommonComponents/VisualComponents/XProgress/index.less rename to src/core/FormComponents/Color/index.less diff --git a/src/components/PanelComponents/Color/index.tsx b/src/core/FormComponents/Color/index.tsx similarity index 100% rename from src/components/PanelComponents/Color/index.tsx rename to src/core/FormComponents/Color/index.tsx diff --git a/src/components/PanelComponents/DataList/editorModal.tsx b/src/core/FormComponents/DataList/editorModal.tsx similarity index 100% rename from src/components/PanelComponents/DataList/editorModal.tsx rename to src/core/FormComponents/DataList/editorModal.tsx diff --git a/src/components/PanelComponents/DataList/index.less b/src/core/FormComponents/DataList/index.less similarity index 100% rename from src/components/PanelComponents/DataList/index.less rename to src/core/FormComponents/DataList/index.less diff --git a/src/components/PanelComponents/DataList/index.tsx b/src/core/FormComponents/DataList/index.tsx similarity index 99% rename from src/components/PanelComponents/DataList/index.tsx rename to src/core/FormComponents/DataList/index.tsx index fe3539a..0395469 100644 --- a/src/components/PanelComponents/DataList/index.tsx +++ b/src/core/FormComponents/DataList/index.tsx @@ -18,7 +18,7 @@ import { HTML5Backend } from 'react-dnd-html5-backend'; import EditorModal from './editorModal'; import { uuid } from '@/utils/tool'; import styles from './index.less'; -import { TDataListDefaultType, TDataListDefaultTypeItem } from '../FormEditor/types'; +import { TDataListDefaultType, TDataListDefaultTypeItem } from '../types'; type ListItemProps = DndItemProps & { isDragging: boolean; diff --git a/src/components/PanelComponents/FormItems/EditorModal.tsx b/src/core/FormComponents/FormItems/EditorModal.tsx similarity index 98% rename from src/components/PanelComponents/FormItems/EditorModal.tsx rename to src/core/FormComponents/FormItems/EditorModal.tsx index 4908d7d..71c839e 100644 --- a/src/components/PanelComponents/FormItems/EditorModal.tsx +++ b/src/core/FormComponents/FormItems/EditorModal.tsx @@ -1,6 +1,6 @@ import React, { FC, memo, useEffect } from 'react'; import { Form, Select, Input, Modal, Button, InputNumber } from 'antd'; -import { baseFormOptionsType } from '../FormEditor/types'; +import { baseFormOptionsType } from '../types'; import Color from '../Color'; const { Option } = Select; diff --git a/src/components/PanelComponents/FormItems/FormItems.tsx b/src/core/FormComponents/FormItems/FormItems.tsx similarity index 96% rename from src/components/PanelComponents/FormItems/FormItems.tsx rename to src/core/FormComponents/FormItems/FormItems.tsx index f3d038f..8368d36 100644 --- a/src/components/PanelComponents/FormItems/FormItems.tsx +++ b/src/core/FormComponents/FormItems/FormItems.tsx @@ -1,10 +1,10 @@ import React, { memo, RefObject, useCallback, useEffect, useState } from 'react'; -import BaseForm from '../../BasicShop/BasicComponents/Form/BaseForm'; -import BasePopoverForm from '../../BasicShop/BasicComponents/Form/BasePopoverForm'; +import BaseForm from '@/components/BasicShop/BasicComponents/Form/BaseForm'; +import BasePopoverForm from '@/components/BasicShop/BasicComponents/Form/BasePopoverForm'; import EditorModal from './EditorModal'; import { MinusCircleFilled, EditFilled, PlusOutlined } from '@ant-design/icons'; import styles from './formItems.less'; -import { baseFormUnion, TFormItemsDefaultType } from '../FormEditor/types'; +import { baseFormUnion, TFormItemsDefaultType } from '../types'; import { uuid } from '@/utils/tool'; import { Button } from 'antd'; import MyPopover from 'yh-react-popover'; diff --git a/src/components/PanelComponents/FormItems/formItems.less b/src/core/FormComponents/FormItems/formItems.less similarity index 100% rename from src/components/PanelComponents/FormItems/formItems.less rename to src/core/FormComponents/FormItems/formItems.less diff --git a/src/components/PanelComponents/FormItems/index.tsx b/src/core/FormComponents/FormItems/index.tsx similarity index 100% rename from src/components/PanelComponents/FormItems/index.tsx rename to src/core/FormComponents/FormItems/index.tsx diff --git a/src/components/PanelComponents/MutiText/index.less b/src/core/FormComponents/MutiText/index.less similarity index 100% rename from src/components/PanelComponents/MutiText/index.less rename to src/core/FormComponents/MutiText/index.less diff --git a/src/components/PanelComponents/MutiText/index.tsx b/src/core/FormComponents/MutiText/index.tsx similarity index 97% rename from src/components/PanelComponents/MutiText/index.tsx rename to src/core/FormComponents/MutiText/index.tsx index b47354c..1237d88 100644 --- a/src/components/PanelComponents/MutiText/index.tsx +++ b/src/core/FormComponents/MutiText/index.tsx @@ -2,7 +2,7 @@ import React, { memo, useEffect } from 'react'; import { Input, Button, Popconfirm } from 'antd'; import { MinusCircleFilled } from '@ant-design/icons'; import styles from './index.less'; -import { TMutiTextDefaultType } from '../FormEditor/types'; +import { TMutiTextDefaultType } from '../types'; type MultiTextProps = { onChange?: (v: TMutiTextDefaultType) => void; diff --git a/src/components/PanelComponents/Pos/index.less b/src/core/FormComponents/Pos/index.less similarity index 100% rename from src/components/PanelComponents/Pos/index.less rename to src/core/FormComponents/Pos/index.less diff --git a/src/components/PanelComponents/Pos/index.tsx b/src/core/FormComponents/Pos/index.tsx similarity index 93% rename from src/components/PanelComponents/Pos/index.tsx rename to src/core/FormComponents/Pos/index.tsx index 628078e..f39ef81 100644 --- a/src/components/PanelComponents/Pos/index.tsx +++ b/src/core/FormComponents/Pos/index.tsx @@ -1,7 +1,7 @@ import React, { memo, useState, useEffect } from 'react'; import { InputNumber } from 'antd'; import styles from './index.less'; -import { TPosDefaultType, TPosItem } from '../FormEditor/types'; +import { TPosDefaultType, TPosItem } from '../types'; type PosProps = { value?: TPosDefaultType; diff --git a/src/components/PanelComponents/Table/index.less b/src/core/FormComponents/Table/index.less similarity index 100% rename from src/components/PanelComponents/Table/index.less rename to src/core/FormComponents/Table/index.less diff --git a/src/components/PanelComponents/Table/index.tsx b/src/core/FormComponents/Table/index.tsx similarity index 100% rename from src/components/PanelComponents/Table/index.tsx rename to src/core/FormComponents/Table/index.tsx diff --git a/src/components/PanelComponents/Upload/index.less b/src/core/FormComponents/Upload/index.less similarity index 100% rename from src/components/PanelComponents/Upload/index.less rename to src/core/FormComponents/Upload/index.less diff --git a/src/components/PanelComponents/Upload/index.tsx b/src/core/FormComponents/Upload/index.tsx similarity index 100% rename from src/components/PanelComponents/Upload/index.tsx rename to src/core/FormComponents/Upload/index.tsx diff --git a/src/components/PanelComponents/XEditor/index.less b/src/core/FormComponents/XEditor/index.less similarity index 100% rename from src/components/PanelComponents/XEditor/index.less rename to src/core/FormComponents/XEditor/index.less diff --git a/src/components/PanelComponents/XEditor/index.tsx b/src/core/FormComponents/XEditor/index.tsx similarity index 95% rename from src/components/PanelComponents/XEditor/index.tsx rename to src/core/FormComponents/XEditor/index.tsx index ff739db..d6091df 100644 --- a/src/components/PanelComponents/XEditor/index.tsx +++ b/src/core/FormComponents/XEditor/index.tsx @@ -27,11 +27,10 @@ const controls = [ ]; export default memo(function XEditor(props: any) { - const [editorState, setEditorState] = useState(BraftEditor.createEditorState()); - const { value, onChange } = props; + const [editorState, setEditorState] = useState(BraftEditor.createEditorState(value)); - const myUploadFn = param => { + const myUploadFn = (param: any) => { const fd = new FormData(); fd.append('file', param.file); @@ -46,8 +45,7 @@ export default memo(function XEditor(props: any) { param.progress((event.loaded / event.total) * 100); }, }) - .then(res => { - console.log(res); + .then((res: any) => { // 上传成功后调用param.success并传入上传后的文件地址 param.success({ url: res.url, diff --git a/src/components/PanelComponents/FormEditor/types.ts b/src/core/FormComponents/types.ts similarity index 100% rename from src/components/PanelComponents/FormEditor/types.ts rename to src/core/FormComponents/types.ts diff --git a/src/components/PanelComponents/FormEditor/index.tsx b/src/core/FormRender.tsx similarity index 90% rename from src/components/PanelComponents/FormEditor/index.tsx rename to src/core/FormRender.tsx index 1bdbfc4..8a924cd 100644 --- a/src/components/PanelComponents/FormEditor/index.tsx +++ b/src/core/FormRender.tsx @@ -1,16 +1,15 @@ import React, { memo, RefObject, useEffect } from 'react'; -import { Form, Select, InputNumber, Input, Switch, Radio, Button } from 'antd'; -import Upload from '../Upload'; -import DataList from '../DataList'; -import MutiText from '../MutiText'; -import Color from '../Color'; -import CardPicker from '../CardPicker'; -import Table from '../Table'; -import Pos from '../Pos'; +import { Form, Select, InputNumber, Input, Switch, Radio } from 'antd'; +import Upload from './FormComponents/Upload'; +import DataList from './FormComponents/DataList'; +import MutiText from './FormComponents/MutiText'; +import Color from './FormComponents/Color'; +import CardPicker from './FormComponents/CardPicker'; +import Table from './FormComponents/Table'; +import Pos from './FormComponents/Pos'; import { Store } from 'antd/lib/form/interface'; -import RichText from '../XEditor'; -import FormItems from '../FormItems'; -// import styles from './index.less'; +import RichText from './FormComponents/XEditor'; +import FormItems from './FormComponents/FormItems'; const normFile = (e: any) => { console.log('Upload event:', e); if (Array.isArray(e)) { diff --git a/src/core/ViewRender.tsx b/src/core/ViewRender.tsx new file mode 100644 index 0000000..110b733 --- /dev/null +++ b/src/core/ViewRender.tsx @@ -0,0 +1,50 @@ +import React, { memo } from 'react'; +import GridLayout, { ItemCallback } from 'react-grid-layout'; +import DynamicEngine from '@/core/DynamicEngine'; +import styles from './viewRender.less'; + +interface PointDataItem { + id: string; + item: Record; + point: Record; +} + +interface ViewProps { + pointData: Array; + pageData?: any; + width?: number; + dragStop?: ItemCallback; + onDragStart?: ItemCallback; + onResizeStop?: ItemCallback; +} + +const ViewRender = memo((props: ViewProps) => { + const { pointData, pageData, width, dragStop, onDragStart, onResizeStop } = props; + + return ( + + {pointData.map((value: PointDataItem) => ( + + + + ))} + + ); +}); + +export default ViewRender; diff --git a/src/core/viewRender.less b/src/core/viewRender.less new file mode 100644 index 0000000..fa4cbe5 --- /dev/null +++ b/src/core/viewRender.less @@ -0,0 +1,14 @@ +.dragItem { + display: inline-block; + position: absolute; + z-index: 2; + border: 2px solid transparent; + cursor: move; + &:hover { + border: 2px solid #06c; + } + :global(a) { + display: block; + pointer-events: none; + } +} diff --git a/src/pages/editor/Container.tsx b/src/pages/editor/Container.tsx index f7089c8..11147aa 100644 --- a/src/pages/editor/Container.tsx +++ b/src/pages/editor/Container.tsx @@ -1,5 +1,5 @@ -import React, { useState, useEffect, useMemo, useCallback, useContext, useRef } from 'react'; -import { Result, Tabs, Button } from 'antd'; +import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react'; +import { Result, Tabs } from 'antd'; import { PieChartOutlined, PlayCircleOutlined, @@ -13,8 +13,8 @@ import CanvasControl from './components/CanvasControl'; import SourceBox from './SourceBox'; import TargetBox from './TargetBox'; import Calibration from 'components/Calibration'; -import DynamicEngine, { componentsType } from 'components/DynamicEngine'; -import FormEditor from 'components/PanelComponents/FormEditor'; +import DynamicEngine, { componentsType } from '@/core/DynamicEngine'; +import FormRender from '@/core/FormRender'; import template from 'components/BasicShop/BasicComponents/template'; import mediaTpl from 'components/BasicShop/MediaComponents/template'; @@ -22,7 +22,6 @@ import graphTpl from 'components/BasicShop/VisualComponents/template'; import schemaH5 from 'components/BasicShop/schema'; import { ActionCreators, StateWithHistory } from 'redux-undo'; -import { dooringContext } from '@/layouts'; import { throttle } from '@/utils/tool'; import styles from './index.less'; @@ -53,7 +52,6 @@ const Container = (props: { setRightColla(c); }; }, []); - const context = useContext(dooringContext); const curPoint = pstate ? pstate.curPoint : {}; // 指定画布的id @@ -91,48 +89,26 @@ const Container = (props: { }, []); const handleFormSave = useMemo(() => { - if (context.theme === 'h5') { - return (data: any) => { - dispatch({ - type: 'editorModal/modPointData', - payload: { ...curPoint, item: { ...curPoint.item, config: data } }, - }); - }; - } else { - return (data: any) => { - dispatch({ - type: 'editorPcModal/modPointData', - payload: { ...curPoint, item: { ...curPoint.item, config: data } }, - }); - }; - } - }, [context.theme, curPoint, dispatch]); + return (data: any) => { + dispatch({ + type: 'editorModal/modPointData', + payload: { ...curPoint, item: { ...curPoint.item, config: data } }, + }); + }; + }, [curPoint, dispatch]); const clearData = useCallback(() => { - if (context.theme === 'h5') { - dispatch({ type: 'editorModal/clearAll' }); - } else { - dispatch({ type: 'editorPcModal/clearAll' }); - } - }, [context.theme, dispatch]); + dispatch({ type: 'editorModal/clearAll' }); + }, [dispatch]); const handleDel = useMemo(() => { - if (context.theme === 'h5') { - return (id: any) => { - dispatch({ - type: 'editorModal/delPointData', - payload: { id }, - }); - }; - } else { - return (id: any) => { - dispatch({ - type: 'editorPcModal/delPointData', - payload: { id }, - }); - }; - } - }, [context.theme, dispatch]); + return (id: any) => { + dispatch({ + type: 'editorModal/delPointData', + payload: { id }, + }); + }; + }, [dispatch]); const redohandler = useMemo(() => { return () => { @@ -184,81 +160,35 @@ const Container = (props: { const ref = useRef(null); const renderRight = useMemo(() => { - if (context.theme === 'h5') { - return ( - - {pointData.length && curPoint ? ( - <> - 属性设置 - - > - ) : ( - - - - )} - - ); - } else { - return ( - - {cpointData.length && curPoint ? ( - <> - 属性设置 - - > - ) : ( - - - - )} - - ); - } - }, [ - context.theme, - cpointData.length, - curPoint, - handleDel, - handleFormSave, - pointData.length, - rightColla, - ]); + return ( + + {pointData.length && curPoint ? ( + <> + 属性设置 + + > + ) : ( + + + + )} + + ); + }, [cpointData.length, curPoint, handleDel, handleFormSave, pointData.length, rightColla]); const tabRender = useMemo(() => { if (collapsed) { diff --git a/src/pages/editor/SourceBox.tsx b/src/pages/editor/SourceBox.tsx index 7d6ed0c..a5aa5e1 100644 --- a/src/pages/editor/SourceBox.tsx +++ b/src/pages/editor/SourceBox.tsx @@ -1,16 +1,15 @@ import React, { memo, useCallback, useContext, useEffect, useMemo, useState } from 'react'; import { useDrop } from 'react-dnd'; import Draggable, { DraggableData, DraggableEvent } from 'react-draggable'; -import GridLayout, { ItemCallback } from 'react-grid-layout'; +import { ItemCallback } from 'react-grid-layout'; import { connect } from 'dva'; -import DynamicEngine from 'components/DynamicEngine'; +import ViewRender from '@/core/ViewRender'; import styles from './index.less'; import { uuid } from '@/utils/tool'; import { Dispatch } from 'umi'; import { StateWithHistory } from 'redux-undo'; import { Menu, Item, MenuProvider } from 'react-contexify'; import 'react-contexify/dist/ReactContexify.min.css'; -import { dooringContext } from '@/layouts'; interface SourceBoxProps { pstate: { pointData: { id: string; item: any; point: any; isMenu?: any }[]; curPoint: any }; cstate: { pointData: { id: string; item: any; point: any }[]; curPoint: any }; @@ -29,15 +28,12 @@ interface SourceBoxProps { const SourceBox = memo((props: SourceBoxProps) => { const { pstate, scaleNum, canvasId, allType, dispatch, dragState, setDragState, cstate } = props; - const context = useContext(dooringContext); let pointData = pstate ? pstate.pointData : []; const cpointData = cstate ? cstate.pointData : []; const [canvasRect, setCanvasRect] = useState([]); const [isShowTip, setIsShowTip] = useState(true); - // const [clonePointData, setPointData] = useState(pointData); - // const [isMenu, setIsMenu] = useState(false); const [{ isOver }, drop] = useDrop({ accept: allType, drop: (item: { h: number; type: string; x: number }, monitor) => { @@ -51,34 +47,15 @@ const SourceBox = memo((props: SourceBoxProps) => { w = item.type === 'Icon' ? 3 : col; // 转换成网格规则的坐标和大小 let gridY = Math.ceil(y / cellHeight); - if (context.theme === 'h5') { - dispatch({ - type: 'editorModal/addPointData', - payload: { - id: uuid(6, 10), - item, - point: { i: `x-${pointData.length}`, x: 0, y: gridY, w, h: item.h, isBounded: true }, - status: 'inToCanvas', - }, - }); - } else { - dispatch({ - type: 'editorPcModal/addPointData', - payload: { - id: uuid(6, 10), - item, - point: { - i: `x-${cpointData.length}`, - x: item.x || 0, - y: gridY, - w, - h: item.h, - isBounded: true, - }, - status: 'inToCanvas', - }, - }); - } + dispatch({ + type: 'editorModal/addPointData', + payload: { + id: uuid(6, 10), + item, + point: { i: `x-${pointData.length}`, x: 0, y: gridY, w, h: item.h, isBounded: true }, + status: 'inToCanvas', + }, + }); }, collect: monitor => ({ isOver: monitor.isOver(), @@ -94,21 +71,8 @@ const SourceBox = memo((props: SourceBoxProps) => { type: 'editorModal/modPointData', payload: { ...curPointData, point: newItem, status: 'inToCanvas' }, }); - // if (context.theme === 'h5') { - // const curPointData = pointData.filter(item => item.id === newItem.i)[0]; - // dispatch({ - // type: 'editorModal/modPointData', - // payload: { ...curPointData, point: newItem, status: 'inToCanvas' }, - // }); - // } else { - // const curPointData = cpointData.filter(item => item.id === newItem.i)[0]; - // dispatch({ - // type: 'editorPcModal/modPointData', - // payload: { ...curPointData, point: newItem, status: 'inToCanvas' }, - // }); - // } }; - }, [context.theme, cpointData, dispatch, pointData]); + }, [cpointData, dispatch, pointData]); const onDragStart: ItemCallback = useMemo(() => { return (layout, oldItem, newItem, placeholder, e, element) => { @@ -117,19 +81,6 @@ const SourceBox = memo((props: SourceBoxProps) => { type: 'editorModal/modPointData', payload: { ...curPointData, status: 'inToCanvas' }, }); - // if (context.theme === 'h5') { - // const curPointData = pointData.filter(item => item.id === newItem.i)[0]; - // dispatch({ - // type: 'editorModal/modPointData', - // payload: { ...curPointData, status: 'inToCanvas' }, - // }); - // } else { - // const curPointData = cpointData.filter(item => item.id === newItem.i)[0]; - // dispatch({ - // type: 'editorPcModal/modPointData', - // payload: { ...curPointData, status: 'inToCanvas' }, - // }); - // } }; }, [dispatch, pointData]); @@ -140,32 +91,9 @@ const SourceBox = memo((props: SourceBoxProps) => { type: 'editorModal/modPointData', payload: { ...curPointData, point: newItem, status: 'inToCanvas' }, }); - // if (context.theme === 'h5') { - // const curPointData = pointData.filter(item => item.id === newItem.i)[0]; - // dispatch({ - // type: 'editorModal/modPointData', - // payload: { ...curPointData, point: newItem, status: 'inToCanvas' }, - // }); - // } else { - // const curPointData = cpointData.filter(item => item.id === newItem.i)[0]; - // dispatch({ - // type: 'editorPcModal/modPointData', - // payload: { ...curPointData, point: newItem, status: 'inToCanvas' }, - // }); - // } }; }, [dispatch, pointData]); - const initSelect: any = (data: any = []) => { - return ( - data && - data.map((itemData: any) => ({ - ...itemData, - isMenu: false, - })) - ); - }; - const handleContextMenuDel = () => { if (pstate.curPoint) { dispatch({ @@ -245,26 +173,13 @@ const SourceBox = memo((props: SourceBoxProps) => { ref={drop} > {pointData.length > 0 ? ( - - {pointData.map(value => ( - - - - ))} - + /> ) : null} diff --git a/src/pages/editor/index.less b/src/pages/editor/index.less index 2137dc5..7c29bf6 100644 --- a/src/pages/editor/index.less +++ b/src/pages/editor/index.less @@ -132,7 +132,6 @@ display: inline-block; position: absolute; z-index: 2; - border: 2px solid transparent; cursor: move; :global(a) { display: block; diff --git a/src/pages/editor/preview.tsx b/src/pages/editor/preview.tsx index 4a15b1b..8356185 100644 --- a/src/pages/editor/preview.tsx +++ b/src/pages/editor/preview.tsx @@ -1,9 +1,7 @@ import React, { CSSProperties, memo, useEffect, useMemo, useRef, useState } from 'react'; -import GridLayout from 'react-grid-layout'; -import DynamicEngine from 'components/DynamicEngine'; +import ViewRender from '@/core/ViewRender'; import domtoimage from 'dom-to-image'; import req from '@/utils/req'; -import styles from './index.less'; import { useGetScrollBarWidth } from '@/utils/tool'; import { LocationDescriptorObject } from 'history-with-query'; @@ -123,25 +121,7 @@ const PreviewPage = memo((props: PreviewPageProps) => { } > - 800 ? 375 : vw} - margin={[0, 0]} - style={{ - backgroundColor: pageData.bgColor, - backgroundImage: pageData.bgImage ? `url(${pageData.bgImage[0].url})` : 'initial', - backgroundSize: 'contain', - backgroundRepeat: 'no-repeat', - }} - > - {pointData.map((value: PointDataItem) => ( - - - - ))} - + 800 ? 375 : vw} />