完善属性编辑器基本功能 #1

Merged
liuhuajie merged 18 commits from master into stage 2024-11-10 01:44:05 +08:00
116 changed files with 1105 additions and 744 deletions

4
.gitignore vendored
View File

@ -23,3 +23,7 @@ dist-ssr
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw?
package-lock.json
src/utils/*.cjs
src/**/*.js
/stats.html

View File

@ -26,12 +26,13 @@
"@types/node": "^22.9.0", "@types/node": "^22.9.0",
"@vitejs/plugin-vue": "^5.0.5", "@vitejs/plugin-vue": "^5.0.5",
"less": "^4.2.0", "less": "^4.2.0",
"rollup-plugin-visualizer": "^5.12.0",
"sass": "^1.77.8", "sass": "^1.77.8",
"typescript": "^5.5.4", "typescript": "^5.5.4",
"unplugin-auto-import": "^0.18.2", "unplugin-auto-import": "^0.18.2",
"unplugin-vue-components": "^0.27.3", "unplugin-vue-components": "^0.27.3",
"vfonts": "^0.0.3", "vfonts": "^0.0.3",
"vite": "^5.3.4", "vite": "5.4.6",
"vue-loader": "^17.4.2", "vue-loader": "^17.4.2",
"vue-template-compiler": "^2.7.16", "vue-template-compiler": "^2.7.16",
"vue-tsc": "^2.0.24" "vue-tsc": "^2.0.24"

View File

@ -13,7 +13,7 @@
<VueDraggable <VueDraggable
v-model="store.components" v-model="store.components"
:animation="150" :animation="150"
:group="{ name: 'people', pull: 'clone', put: false }" :group="{ name: 'designer', pull: 'clone', put: false }"
:sort="false" :sort="false"
:clone="clone" :clone="clone"
@start="onStart" @start="onStart"
@ -27,34 +27,49 @@
<div ref="targetContent" class="center"> <div ref="targetContent" class="center">
<VueDraggable <VueDraggable
v-model="store.previewScheme" v-model="store.previewScheme"
:group="{name: 'designer', pull: 'clone', put: false}" :sort="true"
:animation="150"
group="designer"
ghost-class="ghost" ghost-class="ghost"
class="canvas" class="canvas"
@start="onPreviewStart"
@update="onPreviewUpdate"
@stop="onPreviewStop"
> >
<NestedFunction v-model="store.previewScheme"></NestedFunction> <!-- {{store.previewScheme}}-->
<DynamicComponent v-for="component in store.previewScheme" :key="component.id" :componentData="component">
{{ component.id }}
</DynamicComponent>
</VueDraggable> </VueDraggable>
</div>
<div class="right">
<PropertyEditor :scheme="store.nowComponentsData"></PropertyEditor>
</div> </div>
<!-- <div class="right">-->
<!-- <component :is="componentsList[store?.nowComponent?.set]"></component>-->
<!-- </div>-->
</div> </div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {VueDraggable} from "vue-draggable-plus"; import {RadioGroup,Radio} from '@arco-design/web-vue'
import {onMounted, watch} from 'vue'; import {onMounted, ref, watch} from 'vue';
import {uuid} from 'lsp-uuid'; import {uuid} from 'lsp-uuid';
import {componentScheme} from "@/schemes/scheme"; import {componentScheme} from "@/schemes/scheme";
import {useSchemeStore} from '@/stores/useSchemeStore'; import {useSchemeStore} from '@/stores/useSchemeStore';
import {IComponent} from "@/type/IComponent"; import {IComponent} from "@/type/IComponent";
import NestedFunction from "@/components/NestedFunction.vue"; import DynamicComponent from "@/components/DynamicComponent.vue";
import PropertyEditor from "@/components/PropertyEditor.vue";
import {DraggableEvent, VueDraggable} from "vue-draggable-plus";
let list0 = ref([])
let list = ref([])
let componentsList = []; let componentsList = [];
const store = useSchemeStore(); const store = useSchemeStore();
watch(store, (n, e) => { watch(store, (n) => {
console.log("数据", n); console.log("store发生了变化", n);
}); });
const baseScheme = const baseScheme =
@ -84,7 +99,7 @@ store.$onAction(
onError, // action 抛出或拒绝的钩子 onError, // action 抛出或拒绝的钩子
}) => { }) => {
after((result) => { after((result) => {
console.log(result); console.log(`store action-${name}回调后:` + result);
}) })
// 如果 action 抛出或返回一个拒绝的 promise这将触发 // 如果 action 抛出或返回一个拒绝的 promise这将触发
onError((error) => { onError((error) => {
@ -103,11 +118,23 @@ const initScheme = () => {
onMounted(() => { onMounted(() => {
list0.value.push(
{
"id": 123,
"name": "www"
},
{
"id": 125,
"name": "rrr"
}
);
list.value = []
initScheme(); initScheme();
// @ts-ignore // @ts-ignore
}); });
const clone = function (element: IComponent) { function clone(element: Record<'name' | 'id' | 'type' | 'props' | 'class' | 'text' | 'style' | 'slots'|'visible'|'disable'|'children', IComponent>) {
console.log("clone", element)
return { return {
id: `${element.type}-${uuid()}`, id: `${element.type}-${uuid()}`,
name: element.name, name: element.name,
@ -116,25 +143,38 @@ const clone = function (element: IComponent) {
class: element.class, class: element.class,
designer: '', designer: '',
text: element.text, text: element.text,
children: [], children: element.children||[],
style: element.style, style: element.style,
visible: "", visible: element.visible,
slots: element.slots, slots: element.slots,
disable: "", disable: element.visible,
events: {}, events: {},
loop: {}, loop: {},
}; };
} }
const onEnd = (obj: any) => { const onEnd = (event: DraggableEvent) => {
console.log("onEnd", event)
store.nowComponentsData=event.clonedData
// const {oldDraggableIndex} = obj; // const {oldDraggableIndex} = obj;
// store.previewData(store.component[oldDraggableIndex]); // store.previewData(store.component[oldDraggableIndex]);
// store.nowComponentsData(store.component[oldDraggableIndex]); // store.nowComponentsData(store.component[oldDraggableIndex]);
}; };
const onStart = function () { const onStart = function (event) {
console.log("start") console.log("onStart", event)
} }
const onPreviewStart = function (event) {
console.log("onPreviewStart", event)
}
const onPreviewUpdate = function (event) {
console.log("onPreviewUpdate", event)
}
const onPreviewStop = function (event) {
console.log(event)
}
const view = () => { const view = () => {
localStorage.setItem("lowcode", JSON.stringify(store.previewScheme)); localStorage.setItem("lowcode", JSON.stringify(store.previewScheme));
@ -183,7 +223,7 @@ const view = () => {
} }
.tem_btn { .tem_btn {
padding: 0px 10px; padding: 0 10px;
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
text-align: center; text-align: center;
@ -208,6 +248,7 @@ const view = () => {
background-color: #fff; background-color: #fff;
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow-y: auto; /* 确保当内容超出时,出现垂直滚动条 */
} }
.ghost { .ghost {

View File

@ -1,9 +1,9 @@
<template> <template>
<div> <div style="overflow-y: scroll">
<div style="width: 100%;"> <div style="width: 100%;">
<slot name="header"></slot> <slot name="header"></slot>
</div> </div>
<div style="width: 100%;min-height: 480px;background-color: #f7f8fa;"> <div style="width: 100%;height: 100%;background-color: #f7f8fa;">
<slot> <slot>
MAIN MAIN
</slot> </slot>

View File

@ -1,5 +1,5 @@
<template> <template>
<component @click.stop="handleClick" :id="componentId" :is="componentType" v-bind="componentProps" <component v-if="componentVisible" @click.stop="handleClick" :id="componentId" :is="componentType" v-bind="componentProps"
:class="componentClass" :style="componentStyle"> :class="componentClass" :style="componentStyle">
{{ componentText }} {{ componentText }}
<template v-for="child in componentChildren" :key="child.id"> <template v-for="child in componentChildren" :key="child.id">
@ -10,39 +10,63 @@
</template> </template>
</component> </component>
</template> </template>
<script setup lang="ts">
import { defineProps, computed, onMounted } from 'vue';
import { componentMapping } from './componentMapping';
import { useSchemeStore } from '../stores/useSchemeStore'
const store = useSchemeStore() <script setup lang="ts">
import { defineProps, ref, computed, onMounted, watch, markRaw } from 'vue';
import { componentMapping } from './componentMapping';
import { useSchemeStore } from '../stores/useSchemeStore';
const store = useSchemeStore();
const props = defineProps({ const props = defineProps({
componentData: Object componentData: Object
}); });
onMounted(() => { onMounted(() => {
// console.log(props.componentData) console.log(props.componentData);
}) });
const componentId = computed(() => props.componentData?.id || ''); const componentId = ref(props.componentData?.id || '');
const componentType = computed(() => componentMapping[props.componentData?.type] || 'div'); const componentType = ref(markRaw(componentMapping[props.componentData?.type]) || 'div'); // 使用 markRaw
const componentProps = computed(() => props.componentData?.props || {}); const componentProps = ref(props.componentData?.props || {});
const componentChildren = computed(() => props.componentData?.children || []); const componentDisable = ref(props.componentData?.disable || false);
const componentText = computed(() => props.componentData?.text || ''); const componentVisible = ref(props.componentData?.visible || true);
const componentClass = computed(() => props.componentData?.class || []); const componentChildren = ref(props.componentData?.children || []);
const componentStyle = computed(() => props.componentData?.style || []); const componentText = ref(props.componentData?.text || '');
const componentSlots = computed(() => props.componentData?.slots || []); const componentClass = ref(props.componentData?.class || []);
const componentStyle = ref(props.componentData?.style || []);
const componentSlots = ref(props.componentData?.slots || {});
// @ts-ignore // 确保 componentProps 包含 disabled 属性
const updateScheme = () => { watch(componentDisable, (newDisable) => {
componentProps.value['disabled'] = newDisable;
} });
// 获取当前组件的最新数据
const getCurrentSchemeObj = () => { const getCurrentSchemeObj = () => {
return store.getSchemeObj(componentId.value) return store.getSchemeObj(componentId.value);
} };
// 监听 previewScheme 的变化
watch(() => store.previewScheme, (newPreviewScheme) => {
// 重新获取当前组件的最新数据
const currentComponent = getCurrentSchemeObj();
console.log("currentComponent", JSON.stringify(currentComponent));
if (currentComponent) {
// 更新组件数据
componentProps.value = currentComponent.props ;
componentDisable.value = currentComponent.disable ;
componentVisible.value = currentComponent?.visible;
componentChildren.value = currentComponent.children ;
componentText.value = currentComponent.text;
componentClass.value = currentComponent.class ;
componentStyle.value = currentComponent.style ;
componentSlots.value = currentComponent.slots ;
}
console.log("store.previewScheme has changed",componentVisible.value)
}, { deep: true });
const handleClick = () => { const handleClick = () => {
console.log(`Div with id ${JSON.stringify(getCurrentSchemeObj())} was clicked.`); console.log(`Component with id ${JSON.stringify(getCurrentSchemeObj())} was clicked.`);
// 你可以在这里执行更多的逻辑,例如发出一个事件或调用一个方法 // 你可以在这里执行更多的逻辑,例如发出一个事件或调用一个方法
}; };
</script> </script>

View File

@ -22,7 +22,11 @@
</div> </div>
<div style="display: flex;justify-content: space-between;vertical-align: middle;"> <div style="display: flex;justify-content: space-between;vertical-align: middle;">
<span>是否可见</span> <span>是否可见</span>
<a-switch /> <a-switch v-model="scheme.visible" />
</div>
<div style="display: flex;justify-content: space-between;vertical-align: middle;">
<span>是否禁用</span>
<a-switch v-model="scheme.disable" />
</div> </div>
<a-collapse :expand-icon-position="`right`" :default-active-key="['1', 2]"> <a-collapse :expand-icon-position="`right`" :default-active-key="['1', 2]">
<a-collapse-item header="基本配置" key="1"> <a-collapse-item header="基本配置" key="1">
@ -56,20 +60,31 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { defineProps, computed, ref, onMounted } from 'vue'; import { watch, defineProps, computed, ref, onMounted } from 'vue';
import { IPageComponent } from '../type/IPageComponent'; import { IPageComponent } from '@/type/IPageComponent';
import { useSchemeStore } from '../stores/useSchemeStore'
import {IComponent} from "@/type/IComponent.ts";
const props = defineProps<{ const props = defineProps<{
scheme: IPageComponent scheme: IPageComponent
}>(); }>();
const store = useSchemeStore()
const selectedOption = ref('property') const selectedOption = ref('property');
const scheme = computed(() => props.scheme || ''); const scheme = computed<IPageComponent>(() => props.scheme || {} as IPageComponent);
// 使用 deep 选项来深度监听对象的变化
watch(scheme, (value, oldValue) => {
console.log("scheme Changed", value);
store.updateScheme(value.id,value as IComponent);
}, { deep: true });
onMounted(() => { onMounted(() => {
}) // 初始化时的逻辑
});
</script> </script>
<style scoped> <style scoped>

View File

@ -1,6 +1,5 @@
// componentMapping.ts // componentMapping.ts
import TestComponent from './TestComponent.vue'; import AdaptivePage from '@/components/AdaptivePage.vue';
import AdaptivePage from './AdaptivePage.vue';
import Icon from './Icon.tsx'; import Icon from './Icon.tsx';
import { import {
@ -31,8 +30,7 @@ import {
} from '@arco-design/web-vue'; } from '@arco-design/web-vue';
export const componentMapping: { [key: string]: any } = { export const componentMapping: { [key: string]: any } = {
TestComponent, AdaptivePage, AdaptivePage, Affix, Alert, Anchor, AnchorLink,
Affix, Alert, Anchor, AnchorLink,
AutoComplete, Avatar, AvatarGroup, BackTop, AutoComplete, Avatar, AvatarGroup, BackTop,
Badge, Breadcrumb, BreadcrumbItem, Button, Badge, Breadcrumb, BreadcrumbItem, Button,
ButtonGroup, Card, CardGrid, CardMeta, ButtonGroup, Card, CardGrid, CardMeta,

View File

@ -1,19 +1,21 @@
{ {
"type": "AdaptivePage", "type": "AdaptivePage",
"name":"AdaptivePage", "name": "AdaptivePage",
"id":"AdaptivePage", "id": "AdaptivePage",
"version": "2.0", "version": "2.0",
"props": {}, "props": {},
"class":"", "class": "",
"style":"", "style": "",
"variables": {}, "variables": {},
"dataSources":{}, "dataSources": {},
"functions" : {}, "functions": {},
"orchestrations" : {}, "orchestrations": {},
"events":{}, "events": {},
"slots":{}, "slots": {},
"header":{}, "header": {},
"footer":{}, "footer": {},
"children":[], "children": [],
"meta":{} "meta": {},
"visible": true,
"disable": false
} }

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -5,14 +5,14 @@
"designer": {}, "designer": {},
"text": "button", "text": "button",
"props": { "props": {
"type":"primary", "type": "primary",
"status":"waring" "status": "waring"
}, },
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -9,9 +9,9 @@
}, },
"style": "width:360px", "style": "width:360px",
"class": "arco-card arco-card-size-medium arco-card-bordered", "class": "arco-card arco-card-size-medium arco-card-bordered",
"visible": "", "visible": true,
"slots": { "slots": {
"extra":{ "extra": {
"id": "9f8289a12910000", "id": "9f8289a12910000",
"name": "avatar", "name": "avatar",
"type": "Avatar", "type": "Avatar",
@ -28,7 +28,7 @@
"loop": {} "loop": {}
} }
}, },
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -5,16 +5,16 @@
"designer": {}, "designer": {},
"text": "分割", "text": "分割",
"props": { "props": {
"direction":"horizontal", "direction": "horizontal",
"orientation":"center", "orientation": "center",
"type":"dotted", "type": "dotted",
"size":2.5 "size": 2.5
}, },
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -5,13 +5,13 @@
"designer": {}, "designer": {},
"text": "grid", "text": "grid",
"props": { "props": {
"cols":24 "cols": 24
}, },
"style": "display: block;", "style": "display: block;",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -4,13 +4,12 @@
"id": "icon", "id": "icon",
"designer": {}, "designer": {},
"text": "", "text": "",
"props": { "props": {},
},
"style": "{fontSize:'32px'}", "style": "{fontSize:'32px'}",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -3,15 +3,19 @@
"name": "link", "name": "link",
"id": "link", "id": "link",
"designer": {}, "designer": {},
"text": "Link", "text": "链接",
"props": { "props": {
"status":"" "status": "normal",
"href": "https://www.baidu.com",
"loading": false,
"hoverable": "",
"icon": false
}, },
"style": "", "style": "",
"class": "", "class": "",
"visible": "",
"slots": {}, "slots": {},
"disable": "", "disable": false,
"visible": true,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -4,7 +4,26 @@
"id": "radiogroup", "id": "radiogroup",
"designer": {}, "designer": {},
"text": "", "text": "",
"props": {}, "props": {
"type": "button"
},
"style": "",
"class": "",
"visible": true,
"slots": {},
"disable": false,
"events": {},
"loop": {},
"children": [
{
"type": "Radio",
"name": "radio",
"id": "radio",
"designer": {},
"text": "广州",
"props": {
"value": "guangzhou"
},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": "",
@ -13,4 +32,24 @@
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []
},
{
"type": "Radio",
"name": "radio",
"id": "radio",
"designer": {},
"text": "深圳",
"props": {
"value": "shenzhen"
},
"style": "",
"class": "",
"visible": "",
"slots": {},
"disable": "",
"events": {},
"loop": {},
"children": []
}
]
} }

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

View File

@ -7,9 +7,9 @@
"props": {}, "props": {},
"style": "", "style": "",
"class": "", "class": "",
"visible": "", "visible": true,
"slots": {}, "slots": {},
"disable": "", "disable": false,
"events": {}, "events": {},
"loop": {}, "loop": {},
"children": [] "children": []

Some files were not shown because too many files have changed in this diff Show More