From 73de056506c59617bfd20ab72f58f646d5e1262f Mon Sep 17 00:00:00 2001 From: Halil Focic Date: Mon, 11 Nov 2024 15:16:48 +0100 Subject: [PATCH 1/2] fix: popup menu story caused has more submenus open Added logic to remove mxPopupMenu,mxWidow and mxTooltip classes before each render. This should not impact the functionality since graph initialization inside story will add them afterwards. --- packages/html/.storybook/preview.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/html/.storybook/preview.ts b/packages/html/.storybook/preview.ts index 9a1959c2b6..08e05012af 100644 --- a/packages/html/.storybook/preview.ts +++ b/packages/html/.storybook/preview.ts @@ -18,6 +18,10 @@ const resetMaxGraphConfigs = (): void => { resetVertexHandlerConfig(); resetHandleConfig(); + const classesToRemove = ['.mxPopupMenu', '.mxWindow', '.mxTooltip']; + classesToRemove.forEach(cls => { + document.querySelectorAll(cls).forEach(e => e.remove()); + }) }; const preview: Preview = { From c96776f85bcbb72ccc490d9ec9941a5b75d3420f Mon Sep 17 00:00:00 2001 From: Thomas Bouffard <27200110+tbouffard@users.noreply.github.com> Date: Thu, 2 Jan 2025 16:20:58 +0100 Subject: [PATCH 2/2] extract a function for extra elements removal and simplify the query selectors --- packages/html/.storybook/preview.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/html/.storybook/preview.ts b/packages/html/.storybook/preview.ts index 663fe8f7e3..7265443ea2 100644 --- a/packages/html/.storybook/preview.ts +++ b/packages/html/.storybook/preview.ts @@ -22,12 +22,14 @@ const resetMaxGraphConfigs = (): void => { resetHandleConfig(); resetStyleDefaultsConfig(); resetVertexHandlerConfig(); - const classesToRemove = ['.mxPopupMenu', '.mxWindow', '.mxTooltip']; - classesToRemove.forEach(cls => { - document.querySelectorAll(cls).forEach(e => e.remove()); - }) }; +// This function is a workaround to destroy mxGraph elements that are not released by the previous story. +// See https://github.com/maxGraph/maxGraph/issues/400 +function destroyUnreleasedElements() { + document.querySelectorAll('.mxPopupMenu,.mxWindow').forEach((e) => e.remove()); +} + const preview: Preview = { parameters: { actions: { argTypesRegex: '^on[A-Z].*' }, @@ -43,6 +45,7 @@ const preview: Preview = { // inspired by https://github.com/storybookjs/storybook/issues/4997#issuecomment-447301514 (storyFn) => { resetMaxGraphConfigs(); + destroyUnreleasedElements(); return storyFn(); }, ],