|
@@ -4,6 +4,7 @@
|
|
|
ref="nodeRef"
|
|
ref="nodeRef"
|
|
|
:class="schema.type === 'page' ? '' : 'ignore-click widget-wrapper'"
|
|
:class="schema.type === 'page' ? '' : 'ignore-click widget-wrapper'"
|
|
|
@click.stop="handleSelect"
|
|
@click.stop="handleSelect"
|
|
|
|
|
+ v-if="!schema.hidden"
|
|
|
>
|
|
>
|
|
|
<!-- 控件 -->
|
|
<!-- 控件 -->
|
|
|
<component :is="widget" v-bind="schema.props" :styles="schema.style" />
|
|
<component :is="widget" v-bind="schema.props" :styles="schema.style" />
|
|
@@ -20,8 +21,8 @@
|
|
|
<div v-show="schema.type !== 'page' && selected">
|
|
<div v-show="schema.type !== 'page' && selected">
|
|
|
<Moveable
|
|
<Moveable
|
|
|
:target="nodeRef"
|
|
:target="nodeRef"
|
|
|
- :draggable="selected"
|
|
|
|
|
- :resizable="selected"
|
|
|
|
|
|
|
+ :draggable="selected && !schema.locked"
|
|
|
|
|
+ :resizable="selected && !schema.locked"
|
|
|
:padding="2"
|
|
:padding="2"
|
|
|
:container="rootContainer"
|
|
:container="rootContainer"
|
|
|
:snappable="true"
|
|
:snappable="true"
|
|
@@ -46,6 +47,8 @@
|
|
|
:maxSnapElementGuidelineDistance="50"
|
|
:maxSnapElementGuidelineDistance="50"
|
|
|
:elementGuidelines="elementGridelines"
|
|
:elementGuidelines="elementGridelines"
|
|
|
:controlPadding="4"
|
|
:controlPadding="4"
|
|
|
|
|
+ :verticalGuidelines="verticalGuidelines"
|
|
|
|
|
+ :horizontalGuidelines="horizontalGuidelines"
|
|
|
@render="onRender"
|
|
@render="onRender"
|
|
|
@drag="onDrag"
|
|
@drag="onDrag"
|
|
|
@resize="onResize"
|
|
@resize="onResize"
|
|
@@ -90,6 +93,17 @@ const nodeRef = ref<HTMLDivElement>()
|
|
|
const selected = computed(() =>
|
|
const selected = computed(() =>
|
|
|
projectStore.activeWidgets.map((item) => item.id).includes(props.schema.id)
|
|
projectStore.activeWidgets.map((item) => item.id).includes(props.schema.id)
|
|
|
)
|
|
)
|
|
|
|
|
+// 辅助线
|
|
|
|
|
+const verticalGuidelines = computed(() => {
|
|
|
|
|
+ return projectStore.activePage?.referenceLine
|
|
|
|
|
+ .filter((item) => item.type === 'vertical')
|
|
|
|
|
+ .map((item) => item.value)
|
|
|
|
|
+})
|
|
|
|
|
+const horizontalGuidelines = computed(() => {
|
|
|
|
|
+ return projectStore.activePage?.referenceLine
|
|
|
|
|
+ .filter((item) => item.type === 'horizontal')
|
|
|
|
|
+ .map((item) => item.value)
|
|
|
|
|
+})
|
|
|
|
|
|
|
|
// 组件样式
|
|
// 组件样式
|
|
|
const getStyle = computed((): CSSProperties => {
|
|
const getStyle = computed((): CSSProperties => {
|