Skip to content

Commit

Permalink
fix(editor): Fix initial node and sticky insert position in new canva…
Browse files Browse the repository at this point in the history
…s (no-changelog) (n8n-io#10153)
  • Loading branch information
alexgrozav authored Jul 23, 2024
1 parent 6b8ad6f commit 6209ac6
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/* eslint-disable vue/no-multiple-template-root */
import { useCanvasNode } from '@/composables/useCanvasNode';
import type { CanvasNodeStickyNoteRender } from '@/types';
import { ref, computed } from 'vue';
import { ref, computed, useCssModule } from 'vue';
import { NodeResizer } from '@vue-flow/node-resizer';
import type { OnResize } from '@vue-flow/node-resizer/dist/types';
import type { XYPosition } from '@vue-flow/core';
Expand All @@ -17,10 +17,17 @@ const emit = defineEmits<{
dblclick: [event: MouseEvent];
}>();
const { id, render } = useCanvasNode();
const $style = useCssModule();
const { id, isSelected, render } = useCanvasNode();
const renderOptions = computed(() => render.value.options as CanvasNodeStickyNoteRender['options']);
const classes = computed(() => ({
[$style.sticky]: true,
[$style.selected]: isSelected.value,
}));
/**
* Resizing
*/
Expand Down Expand Up @@ -68,10 +75,10 @@ function onDoubleClick(event: MouseEvent) {
<N8nSticky
v-bind="$attrs"
:id="id"
:class="classes"
data-test-id="canvas-sticky-note-node"
:height="renderOptions.height"
:width="renderOptions.width"
:class="$style.sticky"
:model-value="renderOptions.content"
:background="renderOptions.color"
:edit-mode="isActive"
Expand All @@ -84,5 +91,14 @@ function onDoubleClick(event: MouseEvent) {
<style lang="scss" module>
.sticky {
position: relative;
/**
* State classes
* The reverse order defines the priority in case multiple states are active
*/
&.selected {
box-shadow: 0 0 0 4px var(--color-canvas-selected);
}
}
</style>
14 changes: 11 additions & 3 deletions packages/editor-ui/src/views/NodeView.v2.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import type {
ToggleNodeCreatorOptions,
XYPosition,
} from '@/Interface';
import type { Connection } from '@vue-flow/core';
import type { Connection, ViewportTransform } from '@vue-flow/core';
import type {
CanvasConnectionCreateData,
CanvasNode,
Expand Down Expand Up @@ -135,7 +135,7 @@ const templatesStore = useTemplatesStore();
const canvasEventBus = createEventBus();
const lastClickPosition = ref<XYPosition>([450, 450]);
const lastClickPosition = ref<XYPosition>([0, 0]);
const { runWorkflow, stopCurrentExecution, stopWaitingForWebhook } = useRunWorkflow({ router });
const {
Expand Down Expand Up @@ -1303,6 +1303,13 @@ async function onSaveFromWithinExecutionDebug() {
* Canvas
*/
const viewportTransform = ref<ViewportTransform>({ x: 0, y: 0, zoom: 1 });
function onViewportChange(event: ViewportTransform) {
viewportTransform.value = event;
uiStore.nodeViewOffsetPosition = [event.x, event.y];
}
function fitView() {
setTimeout(() => canvasEventBus.emit('fitView'));
}
Expand Down Expand Up @@ -1500,6 +1507,7 @@ onBeforeUnmount(() => {
@run:workflow="onRunWorkflow"
@save:workflow="onSaveWorkflow"
@create:workflow="onCreateWorkflow"
@viewport-change="onViewportChange"
>
<div :class="$style.executionButtons">
<CanvasRunWorkflowButton
Expand Down Expand Up @@ -1528,7 +1536,7 @@ onBeforeUnmount(() => {
<NodeCreation
v-if="!isCanvasReadOnly"
:create-node-active="uiStore.isCreateNodeActive"
:node-view-scale="1"
:node-view-scale="viewportTransform.zoom"
@toggle-node-creator="onOpenNodeCreator"
@add-nodes="onAddNodesAndConnections"
/>
Expand Down

0 comments on commit 6209ac6

Please sign in to comment.