parent
43b6361515
commit
240a0bd779
@ -0,0 +1,44 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-14 12:24:12 |
||||||
|
* @LastEditTime: 2021-06-14 12:38:02 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\packages\base-widgets\notice-bar\createFieldProps.ts |
||||||
|
*/ |
||||||
|
import { |
||||||
|
createEditorInputProp, |
||||||
|
createEditorSelectProp, |
||||||
|
createEditorSwitchProp |
||||||
|
} from '@/visual-editor/visual-editor.props' |
||||||
|
|
||||||
|
export const createFieldProps = () => ({ |
||||||
|
background: createEditorInputProp({ label: '滚动条背景' }), |
||||||
|
color: createEditorInputProp({ label: '通知文本颜色' }), |
||||||
|
delay: createEditorInputProp({ label: '动画延迟时间 (s)' }), |
||||||
|
leftIcon: createEditorInputProp({ label: '左侧图标名称或图片链接', defaultValue: 'volume-o' }), |
||||||
|
mode: createEditorSelectProp({ |
||||||
|
label: '通知栏模式', |
||||||
|
options: [ |
||||||
|
{ |
||||||
|
label: '默认', |
||||||
|
value: '' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '可关闭', |
||||||
|
value: 'closeable' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '链接', |
||||||
|
value: 'link' |
||||||
|
} |
||||||
|
] |
||||||
|
}), |
||||||
|
scrollable: createEditorSwitchProp({ label: '是否开启滚动播放,内容长度溢出时默认开启' }), |
||||||
|
speed: createEditorInputProp({ label: '滚动速率 (px/s)' }), |
||||||
|
text: createEditorInputProp({ |
||||||
|
label: '通知文本内容', |
||||||
|
defaultValue: '在代码阅读过程中人们说脏话的频率是衡量代码质量的唯一标准。' |
||||||
|
}), |
||||||
|
wrapable: createEditorSwitchProp({ label: '是否开启文本换行,只在禁用滚动时生效' }) |
||||||
|
}) |
@ -0,0 +1,37 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-14 12:24:12 |
||||||
|
* @LastEditTime: 2021-06-14 12:56:23 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\packages\base-widgets\notice-bar\index.tsx |
||||||
|
*/ |
||||||
|
import { NoticeBar } from 'vant' |
||||||
|
import { VisualEditorComponent } from '@/visual-editor/visual-editor.utils' |
||||||
|
import { createFieldProps } from './createFieldProps' |
||||||
|
import { useGlobalProperties } from '@/hooks/useGlobalProperties' |
||||||
|
|
||||||
|
export default { |
||||||
|
key: 'NoticeBar', |
||||||
|
moduleName: 'baseWidgets', |
||||||
|
label: '通知栏', |
||||||
|
preview: () => ( |
||||||
|
<NoticeBar |
||||||
|
style={{ width: '180px' }} |
||||||
|
leftIcon={'volume-o'} |
||||||
|
text={'在代码阅读过程中人们说脏话的频率是衡量代码质量的唯一标准。'} |
||||||
|
/> |
||||||
|
), |
||||||
|
render: ({ block, props }) => { |
||||||
|
const { registerRef } = useGlobalProperties() |
||||||
|
|
||||||
|
return <NoticeBar ref={(el) => registerRef(el, block._vid)} {...props} /> |
||||||
|
}, |
||||||
|
props: createFieldProps(), |
||||||
|
resize: { |
||||||
|
width: true |
||||||
|
}, |
||||||
|
model: { |
||||||
|
default: '绑定字段' |
||||||
|
} |
||||||
|
} as VisualEditorComponent |
@ -0,0 +1,33 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-14 12:24:12 |
||||||
|
* @LastEditTime: 2021-06-14 18:43:21 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\packages\base-widgets\swipe\createFieldProps.ts |
||||||
|
*/ |
||||||
|
import { |
||||||
|
createEditorInputProp, |
||||||
|
createEditorSwitchProp, |
||||||
|
createEditorCrossSortableProp |
||||||
|
} from '@/visual-editor/visual-editor.props' |
||||||
|
|
||||||
|
export const createFieldProps = () => ({ |
||||||
|
images: createEditorCrossSortableProp({ |
||||||
|
label: '图片列表', |
||||||
|
labelPosition: 'top', |
||||||
|
defaultValue: ['https://img.yzcdn.cn/vant/apple-1.jpg', 'https://img.yzcdn.cn/vant/apple-2.jpg'] |
||||||
|
}), |
||||||
|
width: createEditorInputProp({ label: '滑块宽度,单位为 px', defaultValue: 'auto' }), |
||||||
|
height: createEditorInputProp({ label: '滑块高度,单位为 px', defaultValue: '200' }), |
||||||
|
autoplay: createEditorInputProp({ label: '自动轮播间隔,单位为 ms', defaultValue: '' }), |
||||||
|
duration: createEditorInputProp({ label: '动画时长,单位为 ms', defaultValue: '500' }), |
||||||
|
indicatorColor: createEditorInputProp({ label: '指示器颜色', defaultValue: '#1989fa' }), |
||||||
|
initialSwipe: createEditorInputProp({ label: '初始位置索引值', defaultValue: '0' }), |
||||||
|
lazyRender: createEditorSwitchProp({ label: '是否延迟渲染未展示的轮播', defaultValue: false }), |
||||||
|
loop: createEditorSwitchProp({ label: '是否开启循环播放', defaultValue: true }), |
||||||
|
showIndicators: createEditorSwitchProp({ label: '是否显示指示器', defaultValue: true }), |
||||||
|
stopPropagation: createEditorSwitchProp({ label: '是否阻止滑动事件冒泡', defaultValue: true }), |
||||||
|
touchable: createEditorSwitchProp({ label: '是否可以通过手势滑动', defaultValue: true }), |
||||||
|
vertical: createEditorSwitchProp({ label: '是否为纵向滚动', defaultValue: false }) |
||||||
|
}) |
@ -0,0 +1,54 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-14 12:24:12 |
||||||
|
* @LastEditTime: 2021-06-14 18:48:44 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\packages\base-widgets\swipe\index.tsx |
||||||
|
*/ |
||||||
|
import { Swipe, SwipeItem } from 'vant' |
||||||
|
import { VisualEditorComponent } from '@/visual-editor/visual-editor.utils' |
||||||
|
import { createFieldProps } from './createFieldProps' |
||||||
|
import { useGlobalProperties } from '@/hooks/useGlobalProperties' |
||||||
|
|
||||||
|
const swipeItemStyle = `color: #fff;
|
||||||
|
font-size: 20px; |
||||||
|
line-height: 150px; |
||||||
|
text-align: center; |
||||||
|
background-color: #39a9ed;` |
||||||
|
|
||||||
|
export default { |
||||||
|
key: 'swipe', |
||||||
|
moduleName: 'baseWidgets', |
||||||
|
label: '轮播图', |
||||||
|
preview: () => ( |
||||||
|
<Swipe style={{ width: '180px', height: '80%' }} indicatorColor={'white'}> |
||||||
|
<SwipeItem style={swipeItemStyle}>1</SwipeItem> |
||||||
|
<SwipeItem style={swipeItemStyle}>2</SwipeItem> |
||||||
|
<SwipeItem style={swipeItemStyle}>3</SwipeItem> |
||||||
|
<SwipeItem style={swipeItemStyle}>4</SwipeItem> |
||||||
|
</Swipe> |
||||||
|
), |
||||||
|
render: ({ block, props }) => { |
||||||
|
const { registerRef } = useGlobalProperties() |
||||||
|
|
||||||
|
return ( |
||||||
|
<Swipe ref={(el) => registerRef(el, block._vid)} {...props}> |
||||||
|
{props.images?.map((item) => ( |
||||||
|
<> |
||||||
|
<SwipeItem key={item}> |
||||||
|
<img src={item} /> |
||||||
|
</SwipeItem> |
||||||
|
</> |
||||||
|
))} |
||||||
|
</Swipe> |
||||||
|
) |
||||||
|
}, |
||||||
|
props: createFieldProps(), |
||||||
|
resize: { |
||||||
|
width: true |
||||||
|
}, |
||||||
|
model: { |
||||||
|
default: '绑定字段' |
||||||
|
} |
||||||
|
} as VisualEditorComponent |
@ -0,0 +1,54 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-14 00:53:21 |
||||||
|
* @LastEditTime: 2021-06-14 00:55:55 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: 可用字体集 |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\packages\base-widgets\text\fontArr.ts |
||||||
|
*/ |
||||||
|
export const fontArr = [ |
||||||
|
{ label: '宋体', value: 'SimSun' }, |
||||||
|
{ label: '黑体', value: 'SimHei' }, |
||||||
|
{ label: '微软雅黑', value: 'Microsoft Yahei' }, |
||||||
|
{ label: '微软正黑体', value: 'Microsoft JhengHei' }, |
||||||
|
{ label: '楷体', value: 'KaiTi' }, |
||||||
|
{ label: '新宋体', value: 'NSimSun' }, |
||||||
|
{ label: '仿宋', value: 'FangSong' }, |
||||||
|
{ label: '苹方', value: 'PingFang SC' }, |
||||||
|
{ label: '华文黑体', value: 'STHeiti' }, |
||||||
|
{ label: '华文楷体', value: 'STKaiti' }, |
||||||
|
{ label: '华文宋体', value: 'STSong' }, |
||||||
|
{ label: '华文仿宋', value: 'STFangsong' }, |
||||||
|
{ label: '华文中宋', value: 'STZhongsong' }, |
||||||
|
{ label: '华文琥珀', value: 'STHupo' }, |
||||||
|
{ label: '华文新魏', value: 'STXinwei' }, |
||||||
|
{ label: '华文隶书', value: 'STLiti' }, |
||||||
|
{ label: '华文行楷', value: 'STXingkai' }, |
||||||
|
{ label: '冬青黑体简', value: 'Hiragino Sans GB' }, |
||||||
|
{ label: '兰亭黑-简', value: 'Lantinghei SC' }, |
||||||
|
{ label: '翩翩体-简', value: 'Hanzipen SC' }, |
||||||
|
{ label: '手札体-简', value: 'Hannotate SC' }, |
||||||
|
{ label: '宋体-简', value: 'Songti SC' }, |
||||||
|
{ label: '娃娃体-简', value: 'Wawati SC' }, |
||||||
|
{ label: '魏碑-简', value: 'Weibei SC' }, |
||||||
|
{ label: '行楷-简', value: 'Xingkai SC' }, |
||||||
|
{ label: '雅痞-简', value: 'Yapi SC' }, |
||||||
|
{ label: '圆体-简', value: 'Yuanti SC' }, |
||||||
|
{ label: '幼圆', value: 'YouYuan' }, |
||||||
|
{ label: '隶书', value: 'LiSu' }, |
||||||
|
{ label: '华文细黑', value: 'STXihei' }, |
||||||
|
{ label: '华文楷体', value: 'STKaiti' }, |
||||||
|
{ label: '华文宋体', value: 'STSong' }, |
||||||
|
{ label: '华文仿宋', value: 'STFangsong' }, |
||||||
|
{ label: '华文中宋', value: 'STZhongsong' }, |
||||||
|
{ label: '华文彩云', value: 'STCaiyun' }, |
||||||
|
{ label: '华文琥珀', value: 'STHupo' }, |
||||||
|
{ label: '华文新魏', value: 'STXinwei' }, |
||||||
|
{ label: '华文隶书', value: 'STLiti' }, |
||||||
|
{ label: '华文行楷', value: 'STXingkai' }, |
||||||
|
{ label: '方正舒体', value: 'FZShuTi' }, |
||||||
|
{ label: '方正姚体', value: 'FZYaoti' }, |
||||||
|
{ label: '思源黑体', value: 'Source Han Sans CN' }, |
||||||
|
{ label: '思源宋体', value: 'Source Han Serif SC' }, |
||||||
|
{ label: '文泉驿微米黑', value: 'WenQuanYi Micro Hei' } |
||||||
|
] |
@ -0,0 +1,72 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-14 15:00:45 |
||||||
|
* @LastEditTime: 2021-06-14 17:41:14 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: 可以拖拽排序的选项列表 |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\right-attribute-panel\components\cross-sortable-options\cross-sortable-options.tsx |
||||||
|
*/ |
||||||
|
|
||||||
|
import { defineComponent, reactive, computed, PropType } from 'vue' |
||||||
|
import Draggable from 'vuedraggable' |
||||||
|
import { ElInput } from 'element-plus' |
||||||
|
import { useVModel } from '@vueuse/core' |
||||||
|
|
||||||
|
export const CrossSortableOptionsEditor = defineComponent({ |
||||||
|
props: { |
||||||
|
modelValue: { |
||||||
|
type: Array as PropType<string[]>, |
||||||
|
default: () => [] |
||||||
|
} |
||||||
|
}, |
||||||
|
setup(props, { emit }) { |
||||||
|
const state = reactive({ |
||||||
|
list: useVModel(props, 'modelValue', emit), |
||||||
|
drag: false |
||||||
|
}) |
||||||
|
|
||||||
|
const dragOptions = computed(() => { |
||||||
|
return { |
||||||
|
animation: 200, |
||||||
|
group: 'description', |
||||||
|
disabled: false, |
||||||
|
ghostClass: 'ghost' |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
return () => ( |
||||||
|
<Draggable |
||||||
|
tag="ul" |
||||||
|
list={state.list} |
||||||
|
class="list-group" |
||||||
|
component-data={{ |
||||||
|
tag: 'ul', |
||||||
|
type: 'transition-group', |
||||||
|
name: !state.drag ? 'flip-list' : null |
||||||
|
}} |
||||||
|
handle=".handle" |
||||||
|
{...dragOptions.value} |
||||||
|
itemKey={''} |
||||||
|
onStart={() => (state.drag = true)} |
||||||
|
onEnd={() => (state.drag = false)} |
||||||
|
> |
||||||
|
{{ |
||||||
|
item: ({ element, index }) => ( |
||||||
|
<div class={'flex items-center justify-between'}> |
||||||
|
<i class={'el-icon-s-grid handle'}></i> |
||||||
|
<ElInput |
||||||
|
v-model={state.list[index]} |
||||||
|
class={'m-12px'} |
||||||
|
style={{ width: '270px' }} |
||||||
|
></ElInput> |
||||||
|
<div class={'flex flex-col'}> |
||||||
|
<i class={'el-icon-circle-plus-outline'} onClick={() => state.list.push('')}></i> |
||||||
|
<i class={'el-icon-remove-outline'} onClick={() => state.list.splice(index, 1)}></i> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
) |
||||||
|
}} |
||||||
|
</Draggable> |
||||||
|
) |
||||||
|
} |
||||||
|
}) |
@ -1,10 +1,13 @@ |
|||||||
/** |
/* |
||||||
* @name: index |
* @Author: 卜启缘 |
||||||
* @author: 卜启缘 |
* @Date: 2021-06-12 22:18:48 |
||||||
* @date: 2021/5/30 10:57 |
* @LastEditTime: 2021-06-14 16:58:34 |
||||||
* @description:index |
* @LastEditors: 卜启缘 |
||||||
* @update: 2021/5/30 10:57 |
* @Description: |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\right-attribute-panel\components\index.ts |
||||||
*/ |
*/ |
||||||
|
|
||||||
export { TablePropEditor } from './table-prop-editor/table-prop-editor' |
export { TablePropEditor } from './table-prop-editor/table-prop-editor' |
||||||
export { AttrEditor } from './attr-editor/AttrEditor' |
export { AttrEditor } from './attr-editor/AttrEditor' |
||||||
export { Animate } from './animate/Animate' |
export { Animate } from './animate/Animate' |
||||||
|
export { CrossSortableOptionsEditor } from './cross-sortable-options/cross-sortable-options' |
||||||
|
@ -0,0 +1,8 @@ |
|||||||
|
/* |
||||||
|
* @Author: 卜启缘 |
||||||
|
* @Date: 2021-06-13 22:07:29 |
||||||
|
* @LastEditTime: 2021-06-14 18:18:51 |
||||||
|
* @LastEditors: 卜启缘 |
||||||
|
* @Description: 当前页面配置 |
||||||
|
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\right-attribute-panel\components\page-setting\pageSetting.tsx |
||||||
|
*/ |
@ -1,17 +0,0 @@ |
|||||||
/** |
|
||||||
* @name: index.common |
|
||||||
* @author: 卜启缘 |
|
||||||
* @date: 2021/5/3 16:05 |
|
||||||
* @description:index.common |
|
||||||
* @update: 2021/5/3 16:05 |
|
||||||
*/ |
|
||||||
body { |
|
||||||
.el-form-item__label { |
|
||||||
font-size: 12px; |
|
||||||
} |
|
||||||
.el-form-item--mini .el-form-item__content { |
|
||||||
display: flex; |
|
||||||
justify-content: flex-end; |
|
||||||
align-items: center; |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue