vue3.x + vite2.x + vant + element-plus H5移动端低代码平台 lowcode 可视化拖拽 可视化编辑器 visual editor 类似易企秀的H5制作、建站工具、可视化搭建工具
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
2.2 KiB

/*
* @Author: 卜启缘
* @Date: 2021-06-01 09:45:21
* @LastEditTime: 2021-07-13 17:15:15
* @LastEditors: 卜启缘
* @Description: 表单项类型 - 滑块
* @FilePath: \vite-vue3-lowcode\src\packages\base-widgets\slider\index.tsx
*/
import { Field, Slider } from 'vant';
import type { VisualEditorComponent } from '@/visual-editor/visual-editor.utils';
import { createFieldProps } from './createFieldProps';
import { useGlobalProperties } from '@/hooks/useGlobalProperties';
import {
createEditorInputNumberProp,
createEditorInputProp,
createEditorModelBindProp,
createEditorSwitchProp,
} from '@/visual-editor/visual-editor.props';
import { omit } from 'lodash-es';
export default {
key: 'slider',
moduleName: 'baseWidgets',
label: '表单项类型 - 滑块',
preview: () => (
<Field
name="rate"
label="滑块"
labelWidth={50}
v-slots={{ input: () => <Slider modelValue={3} /> }}
></Field>
),
render: ({ styles, block, props }) => {
const { registerRef } = useGlobalProperties();
return () => (
<div style={styles}>
<Field
{...omit(props, 'size')}
name={Array.isArray(props.name) ? [...props.name].pop() : props.name}
v-slots={{
input: () => (
<Slider
ref={(el) => registerRef(el, block._vid)}
{...props}
v-model={props.modelValue}
></Slider>
),
}}
/>
</div>
);
},
props: {
modelValue: createEditorInputNumberProp({ label: '默认值', defaultValue: 0 }),
name: createEditorModelBindProp({ label: '字段绑定', defaultValue: '' }),
label: createEditorInputProp({ label: '输入框左侧文本', defaultValue: '滑块' }),
min: createEditorInputNumberProp({ label: '最小值' }),
max: createEditorInputNumberProp({ label: '最大值', defaultValue: 10 }),
size: createEditorInputNumberProp({ label: '图标大小' }),
range: createEditorSwitchProp({ label: '是否开启双滑块模式' }),
...createFieldProps(),
},
resize: {
width: true,
},
model: {
default: '绑定字段',
},
} as VisualEditorComponent;