add NodePreviewZone layout
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<div
|
||||
id="preview-zone"
|
||||
class="preview-zone" :class="{ 'no-events-container': value === null }"
|
||||
@mousedown="onZoneClick"
|
||||
>
|
||||
<b-popover
|
||||
v-for="node in nodes" :key="'popover-' + node.id"
|
||||
custom-class="popover-node-preview"
|
||||
:target="'preview-node-' + node.id" container="preview-zone"
|
||||
placement="auto"
|
||||
triggers="manual" :boundary-padding="0"
|
||||
>
|
||||
<node-view
|
||||
:node="node"
|
||||
mode="card" preview
|
||||
@open-node="$emit('open-node', $event)"
|
||||
@open-child="$emit('open-node', { parentId: node.id, ...$event })"
|
||||
/>
|
||||
</b-popover>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { NodeView } from '@/components/nodes'
|
||||
|
||||
|
||||
export default {
|
||||
name: 'NodePreviewZone',
|
||||
|
||||
components: {
|
||||
NodeView
|
||||
},
|
||||
|
||||
props: {
|
||||
value: { type: Object, default: null },
|
||||
nodes: { type: Array, required: true }
|
||||
},
|
||||
|
||||
methods: {
|
||||
onZoneClick (e) {
|
||||
if (this.value) {
|
||||
if (e.target.id !== 'preview-zone') return
|
||||
this.$root.$emit('bv::hide::popover', 'preview-node-' + this.value.id)
|
||||
this.$emit('input', null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.preview-zone {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.popover-node-preview {
|
||||
max-width: 100%;
|
||||
|
||||
.popover-body {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,2 +1,3 @@
|
||||
export { default as MapZoom } from './MapZoom'
|
||||
export { default as NodePreviewZone } from './NodePreviewZone'
|
||||
export { default as NodeBook } from './NodeBook'
|
||||
|
||||
Reference in New Issue
Block a user