feat(core,nodes): add elevateNodesOnSelect option

Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
braks
2022-12-19 16:44:38 +01:00
committed by Braks
parent 2f187a0f7d
commit af534083fa
5 changed files with 21 additions and 14 deletions
@@ -32,6 +32,7 @@ const {
getNodeTypes, getNodeTypes,
nodeExtent, nodeExtent,
onNodesInitialized, onNodesInitialized,
elevateNodesOnSelect,
} = $(useVueFlow()) } = $(useVueFlow())
const node = $(useVModel(props, 'node')) const node = $(useVModel(props, 'node'))
@@ -116,7 +117,7 @@ watch(
x: newX, x: newX,
y: newY, y: newY,
// if a zIndex style is present, add 1000 to it // if a zIndex style is present, add 1000 to it
z: (isNumber(getStyle.value.zIndex) ? getStyle.value.zIndex : 0) + (node.selected ? 1000 : 0), z: (isNumber(getStyle.value.zIndex) ? getStyle.value.zIndex : 0) + (elevateNodesOnSelect ? (node.selected ? 1000 : 0) : 0),
} }
updatePosition(xyzPos, parentX && parentY ? { x: parentX, y: parentY, z: parentZ || 0 } : undefined) updatePosition(xyzPos, parentX && parentY ? { x: parentX, y: parentY, z: parentZ || 0 } : undefined)
@@ -137,21 +138,20 @@ onNodesInitialized(() => {
initialized.value = true initialized.value = true
}) })
onMounted(() => { /** Initial clamp of node position */
until(initialized) until(initialized)
.toBe(true) .toBe(true)
.then(() => { .then(() => {
const extent = applyExtent(node, nodeExtent, parentNode) const extent = applyExtent(node, nodeExtent, parentNode)
const clampedPos = clampPosition(node.computedPosition, extent) const clampedPos = clampPosition(node.computedPosition, extent)
node.computedPosition = { ...node.computedPosition, ...clampedPos } node.computedPosition = { ...node.computedPosition, ...clampedPos }
node.position = { node.position = {
x: node.computedPosition.x - (parentNode?.computedPosition.x || 0), x: node.computedPosition.x - (parentNode?.computedPosition.x || 0),
y: node.computedPosition.y - (parentNode?.computedPosition.y || 0), y: node.computedPosition.y - (parentNode?.computedPosition.y || 0),
} }
}) })
})
function updateInternals() { function updateInternals() {
if (nodeElement.value) updateNodeDimensions([{ id, nodeElement: nodeElement.value, forceUpdate: true }]) if (nodeElement.value) updateNodeDimensions([{ id, nodeElement: nodeElement.value, forceUpdate: true }])
@@ -37,6 +37,7 @@ const props = withDefaults(defineProps<FlowProps>(), {
connectionLineStyle: undefined, connectionLineStyle: undefined,
autoConnect: undefined, autoConnect: undefined,
elevateEdgesOnSelect: undefined, elevateEdgesOnSelect: undefined,
elevateNodesOnSelect: undefined,
}) })
const emit = defineEmits<{ const emit = defineEmits<{
+1
View File
@@ -110,6 +110,7 @@ const defaultState = (): State => ({
noPanClassName: 'nopan', noPanClassName: 'nopan',
defaultEdgeOptions: undefined, defaultEdgeOptions: undefined,
elevateEdgesOnSelect: false, elevateEdgesOnSelect: false,
elevateNodesOnSelect: true,
__experimentalFeatures: { __experimentalFeatures: {
nestedFlow: false, nestedFlow: false,
+2
View File
@@ -157,6 +157,8 @@ export interface FlowProps {
defaultEdgeOptions?: DefaultEdgeOptions defaultEdgeOptions?: DefaultEdgeOptions
/** elevates edges when selected and applies z-Index to put them above their nodes */ /** elevates edges when selected and applies z-Index to put them above their nodes */
elevateEdgesOnSelect?: boolean elevateEdgesOnSelect?: boolean
/** elevates nodes when selected and applies z-Index + 1000 */
elevateNodesOnSelect?: boolean
__experimentalFeatures?: { __experimentalFeatures?: {
nestedFlow?: boolean nestedFlow?: boolean
+3
View File
@@ -115,6 +115,9 @@ export interface State extends Omit<FlowOptions, 'id' | 'modelValue'> {
defaultEdgeOptions?: DefaultEdgeOptions defaultEdgeOptions?: DefaultEdgeOptions
elevateEdgesOnSelect: boolean
elevateNodesOnSelect: boolean
/** current vue flow version you're using */ /** current vue flow version you're using */
readonly vueFlowVersion: string readonly vueFlowVersion: string
} }