From 67424656ccfd49aa0196abc77893ea15224860c4 Mon Sep 17 00:00:00 2001 From: sodenn Date: Sun, 23 Feb 2025 12:35:14 +0100 Subject: [PATCH] fix: ensure menu attributes are set on initial render --- .../lexical-react/src/shared/LexicalMenu.ts | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/lexical-react/src/shared/LexicalMenu.ts b/packages/lexical-react/src/shared/LexicalMenu.ts index 05fc084eb00..1662bb84bf4 100644 --- a/packages/lexical-react/src/shared/LexicalMenu.ts +++ b/packages/lexical-react/src/shared/LexicalMenu.ts @@ -480,6 +480,20 @@ export function LexicalMenu({ ); } +function setContainerDivAttributes( + containerDiv: HTMLElement, + className?: string, +) { + if (className != null) { + containerDiv.className = className; + } + containerDiv.setAttribute('aria-label', 'Typeahead menu'); + containerDiv.setAttribute('id', 'typeahead-menu'); + containerDiv.setAttribute('role', 'listbox'); + containerDiv.style.display = 'block'; + containerDiv.style.position = 'absolute'; +} + export function useMenuAnchorRef( resolution: MenuResolution | null, setResolution: (r: MenuResolution | null) => void, @@ -540,14 +554,7 @@ export function useMenuAnchorRef( } if (!containerDiv.isConnected) { - if (className != null) { - containerDiv.className = className; - } - containerDiv.setAttribute('aria-label', 'Typeahead menu'); - containerDiv.setAttribute('id', 'typeahead-menu'); - containerDiv.setAttribute('role', 'listbox'); - containerDiv.style.display = 'block'; - containerDiv.style.position = 'absolute'; + setContainerDivAttributes(containerDiv, className); parent.append(containerDiv); } anchorElementRef.current = containerDiv; @@ -599,7 +606,7 @@ export function useMenuAnchorRef( // Append the context for the menu immediately const containerDiv = anchorElementRef.current; if (containerDiv != null) { - containerDiv.style.position = 'absolute'; + setContainerDivAttributes(containerDiv, className); if (parent != null) { parent.append(containerDiv); }