diff --git a/packages/frontend/editor-ui/src/components/NDVDraggablePanels.vue b/packages/frontend/editor-ui/src/components/NDVDraggablePanels.vue index fe49d1318c..efe62b92e6 100644 --- a/packages/frontend/editor-ui/src/components/NDVDraggablePanels.vue +++ b/packages/frontend/editor-ui/src/components/NDVDraggablePanels.vue @@ -43,6 +43,7 @@ const props = defineProps(); const isDragging = ref(false); const initialized = ref(false); +const containerWidth = ref(uiStore.appGridWidth); const emit = defineEmits<{ init: [{ position: number }]; @@ -84,28 +85,36 @@ onBeforeUnmount(() => { ndvEventBus.off('setPositionByName', setPositionByName); }); -const containerWidth = computed(() => uiStore.appGridWidth); +watch( + () => uiStore.appGridWidth, + (width) => { + const ndv = document.getElementById('ndv'); + if (ndv) { + const { width: ndvWidth } = ndv.getBoundingClientRect(); + containerWidth.value = ndvWidth; + } else { + containerWidth.value = width; + } + const minRelativeWidth = pxToRelativeWidth(MIN_PANEL_WIDTH); + const isBelowMinWidthMainPanel = mainPanelDimensions.value.relativeWidth < minRelativeWidth; -watch(containerWidth, (width) => { - const minRelativeWidth = pxToRelativeWidth(MIN_PANEL_WIDTH); - const isBelowMinWidthMainPanel = mainPanelDimensions.value.relativeWidth < minRelativeWidth; + // Prevent the panel resizing below MIN_PANEL_WIDTH while maintain position + if (isBelowMinWidthMainPanel) { + setMainPanelWidth(minRelativeWidth); + } - // Prevent the panel resizing below MIN_PANEL_WIDTH whhile maintaing position - if (isBelowMinWidthMainPanel) { - setMainPanelWidth(minRelativeWidth); - } + const isBelowMinLeft = minimumLeftPosition.value > mainPanelDimensions.value.relativeLeft; + const isMaxRight = maximumRightPosition.value > mainPanelDimensions.value.relativeRight; - const isBelowMinLeft = minimumLeftPosition.value > mainPanelDimensions.value.relativeLeft; - const isMaxRight = maximumRightPosition.value > mainPanelDimensions.value.relativeRight; + // When user is resizing from non-supported view(sub ~488px) we need to refit the panels + if (width > MIN_WINDOW_WIDTH && isBelowMinLeft && isMaxRight) { + setMainPanelWidth(minRelativeWidth); + setPositions(getInitialLeftPosition(mainPanelDimensions.value.relativeWidth)); + } - // When user is resizing from non-supported view(sub ~488px) we need to refit the panels - if (width > MIN_WINDOW_WIDTH && isBelowMinLeft && isMaxRight) { - setMainPanelWidth(minRelativeWidth); - setPositions(getInitialLeftPosition(mainPanelDimensions.value.relativeWidth)); - } - - setPositions(mainPanelDimensions.value.relativeLeft); -}); + setPositions(mainPanelDimensions.value.relativeLeft); + }, +); const currentNodePaneType = computed((): MainPanelType => { if (!hasInputSlot.value) return 'inputless'; diff --git a/packages/frontend/editor-ui/src/components/NodeDetailsView.vue b/packages/frontend/editor-ui/src/components/NodeDetailsView.vue index 5b18599579..6add05c56f 100644 --- a/packages/frontend/editor-ui/src/components/NodeDetailsView.vue +++ b/packages/frontend/editor-ui/src/components/NodeDetailsView.vue @@ -706,6 +706,7 @@ onBeforeUnmount(() => {