Skip to content

Commit c28f302

Browse files
authored
fix(editor): Fix NDV resize handle and scrollbar overlapping (#12509)
1 parent 326a221 commit c28f302

File tree

2 files changed

+49
-30
lines changed

2 files changed

+49
-30
lines changed

Diff for: packages/design-system/src/components/N8nResizeWrapper/ResizeWrapper.vue

+48-30
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts" setup>
2-
import { computed, ref } from 'vue';
2+
import { computed, ref, useCssModule } from 'vue';
33
44
import { directionsCursorMaps, type Direction, type ResizeData } from 'n8n-design-system/types';
55
@@ -32,6 +32,7 @@ interface ResizeProps {
3232
scale?: number;
3333
gridSize?: number;
3434
supportedDirections?: Direction[];
35+
outset?: boolean;
3536
}
3637
3738
const props = withDefaults(defineProps<ResizeProps>(), {
@@ -42,9 +43,12 @@ const props = withDefaults(defineProps<ResizeProps>(), {
4243
minWidth: 0,
4344
scale: 1,
4445
gridSize: 20,
46+
outset: false,
4547
supportedDirections: () => [],
4648
});
4749
50+
const $style = useCssModule();
51+
4852
const emit = defineEmits<{
4953
resizestart: [];
5054
resize: [value: ResizeData];
@@ -70,6 +74,11 @@ const state = {
7074
y: ref(0),
7175
};
7276
77+
const classes = computed(() => ({
78+
[$style.resize]: true,
79+
[$style.outset]: props.outset,
80+
}));
81+
7382
const mouseMove = (event: MouseEvent) => {
7483
event.preventDefault();
7584
event.stopPropagation();
@@ -147,7 +156,7 @@ const resizerMove = (event: MouseEvent) => {
147156
</script>
148157

149158
<template>
150-
<div :class="$style.resize">
159+
<div :class="classes">
151160
<div
152161
v-for="direction in enabledDirections"
153162
:key="direction"
@@ -161,6 +170,10 @@ const resizerMove = (event: MouseEvent) => {
161170

162171
<style lang="scss" module>
163172
.resize {
173+
--resizer--size: 12px;
174+
--resizer--side-offset: -2px;
175+
--resizer--corner-offset: -3px;
176+
164177
position: relative;
165178
width: 100%;
166179
height: 100%;
@@ -173,66 +186,71 @@ const resizerMove = (event: MouseEvent) => {
173186
}
174187
175188
.right {
176-
width: 12px;
189+
width: var(--resizer--size);
177190
height: 100%;
178-
top: -2px;
179-
right: -2px;
191+
top: var(--resizer--side-offset);
192+
right: var(--resizer--side-offset);
180193
cursor: ew-resize;
181194
}
182195
183196
.top {
184197
width: 100%;
185-
height: 12px;
186-
top: -2px;
187-
left: -2px;
198+
height: var(--resizer--size);
199+
top: var(--resizer--side-offset);
200+
left: var(--resizer--side-offset);
188201
cursor: ns-resize;
189202
}
190203
191204
.bottom {
192205
width: 100%;
193-
height: 12px;
194-
bottom: -2px;
195-
left: -2px;
206+
height: var(--resizer--size);
207+
bottom: var(--resizer--side-offset);
208+
left: var(--resizer--side-offset);
196209
cursor: ns-resize;
197210
}
198211
199212
.left {
200-
width: 12px;
213+
width: var(--resizer--size);
201214
height: 100%;
202-
top: -2px;
203-
left: -2px;
215+
top: var(--resizer--side-offset);
216+
left: var(--resizer--side-offset);
204217
cursor: ew-resize;
205218
}
206219
207220
.topLeft {
208-
width: 12px;
209-
height: 12px;
210-
top: -3px;
211-
left: -3px;
221+
width: var(--resizer--size);
222+
height: var(--resizer--size);
223+
top: var(--resizer--corner-offset);
224+
left: var(--resizer--corner-offset);
212225
cursor: nw-resize;
213226
}
214227
215228
.topRight {
216-
width: 12px;
217-
height: 12px;
218-
top: -3px;
219-
right: -3px;
229+
width: var(--resizer--size);
230+
height: var(--resizer--size);
231+
top: var(--resizer--corner-offset);
232+
right: var(--resizer--corner-offset);
220233
cursor: ne-resize;
221234
}
222235
223236
.bottomLeft {
224-
width: 12px;
225-
height: 12px;
226-
bottom: -3px;
227-
left: -3px;
237+
width: var(--resizer--size);
238+
height: var(--resizer--size);
239+
bottom: var(--resizer--corner-offset);
240+
left: var(--resizer--corner-offset);
228241
cursor: sw-resize;
229242
}
230243
231244
.bottomRight {
232-
width: 12px;
233-
height: 12px;
234-
bottom: -3px;
235-
right: -3px;
245+
width: var(--resizer--size);
246+
height: var(--resizer--size);
247+
bottom: var(--resizer--corner-offset);
248+
right: var(--resizer--corner-offset);
236249
cursor: se-resize;
237250
}
251+
252+
.outset {
253+
--resizer--side-offset: calc(-1 * var(--resizer--size) + 2px);
254+
--resizer--corner-offset: calc(-1 * var(--resizer--size) + 3px);
255+
}
238256
</style>

Diff for: packages/editor-ui/src/components/NDVDraggablePanels.vue

+1
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ function onDragEnd() {
375375
:min-width="MIN_PANEL_WIDTH"
376376
:grid-size="20"
377377
:supported-directions="supportedResizeDirections"
378+
outset
378379
@resize="onResizeThrottle"
379380
@resizeend="onResizeEnd"
380381
>

0 commit comments

Comments
 (0)