mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
feat(editor): Improve UX of embedded NDV experiment (no-changelog) (#17515)
This commit is contained in:
@@ -160,6 +160,7 @@ const {
|
||||
nodesSelectionActive,
|
||||
userSelectionRect,
|
||||
setViewport,
|
||||
setCenter,
|
||||
onEdgeMouseLeave,
|
||||
onEdgeMouseEnter,
|
||||
onEdgeMouseMove,
|
||||
@@ -285,6 +286,18 @@ function selectUpstreamNodes(id: string) {
|
||||
onSelectNodes({ ids: [...upstreamNodes.map((node) => node.id), id] });
|
||||
}
|
||||
|
||||
function onToggleZoomMode() {
|
||||
experimentalNdvStore.toggleZoomMode({
|
||||
canvasViewport: viewport.value,
|
||||
canvasDimensions: dimensions.value,
|
||||
selectedNodes: selectedNodes.value,
|
||||
setViewport,
|
||||
fitView,
|
||||
zoomTo,
|
||||
setCenter,
|
||||
});
|
||||
}
|
||||
|
||||
const keyMap = computed(() => {
|
||||
const readOnlyKeymap: KeyMap = {
|
||||
ctrl_shift_o: emitWithLastSelectedNode((id) => emit('open:sub-workflow', id)),
|
||||
@@ -308,6 +321,7 @@ const keyMap = computed(() => {
|
||||
l: () => emit('update:logs-open'),
|
||||
i: () => emit('update:logs:input-open'),
|
||||
o: () => emit('update:logs:output-open'),
|
||||
z: onToggleZoomMode,
|
||||
};
|
||||
|
||||
if (props.readOnly) return readOnlyKeymap;
|
||||
@@ -431,7 +445,7 @@ function onSelectNodes({ ids, panIntoView }: CanvasEventBusEvents['nodes:select'
|
||||
|
||||
const newViewport = updateViewportToContainNodes(viewport.value, dimensions.value, nodes, 100);
|
||||
|
||||
void setViewport(newViewport, { duration: 200 });
|
||||
void setViewport(newViewport, { duration: 200, interpolate: 'linear' });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,6 +469,18 @@ function onUpdateNodeOutputs(id: string) {
|
||||
emit('update:node:outputs', id);
|
||||
}
|
||||
|
||||
function onFocusNode(id: string) {
|
||||
const node = vueFlow.nodeLookup.value.get(id);
|
||||
|
||||
if (node) {
|
||||
experimentalNdvStore.focusNode(node, {
|
||||
canvasViewport: viewport.value,
|
||||
canvasDimensions: dimensions.value,
|
||||
setCenter,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Connections / Edges
|
||||
*/
|
||||
@@ -896,7 +922,6 @@ provide(CanvasKey, {
|
||||
:event-bus="eventBus"
|
||||
:hovered="nodesHoveredById[nodeProps.id]"
|
||||
:nearby-hovered="nodeProps.id === hoveredTriggerNode.id.value"
|
||||
:is-experimental-ndv-active="isExperimentalNdvActive"
|
||||
@delete="onDeleteNode"
|
||||
@run="onRunNode"
|
||||
@select="onSelectNode"
|
||||
@@ -909,6 +934,7 @@ provide(CanvasKey, {
|
||||
@update:outputs="onUpdateNodeOutputs"
|
||||
@move="onUpdateNodePosition"
|
||||
@add="onClickNodeAdd"
|
||||
@focus="onFocusNode"
|
||||
>
|
||||
<template v-if="$slots.nodeToolbar" #toolbar="toolbarProps">
|
||||
<slot name="nodeToolbar" v-bind="toolbarProps" />
|
||||
@@ -972,6 +998,7 @@ provide(CanvasKey, {
|
||||
@zoom-out="onZoomOut"
|
||||
@reset-zoom="onResetZoom"
|
||||
@tidy-up="onTidyUp({ source: 'canvas-button' })"
|
||||
@toggle-zoom-mode="onToggleZoomMode"
|
||||
/>
|
||||
|
||||
<Suspense>
|
||||
@@ -1004,7 +1031,7 @@ provide(CanvasKey, {
|
||||
}
|
||||
|
||||
&.isExperimentalNdvActive {
|
||||
--canvas-zoom-compensation-factor: 0.67;
|
||||
--canvas-zoom-compensation-factor: 0.5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user