diff --git a/packages/website/docs/_samples/fiori/UserMenu/Advanced/main.js b/packages/website/docs/_samples/fiori/UserMenu/Advanced/main.js index 6ff5c7455efb..eb2276b71885 100644 --- a/packages/website/docs/_samples/fiori/UserMenu/Advanced/main.js +++ b/packages/website/docs/_samples/fiori/UserMenu/Advanced/main.js @@ -1,7 +1,7 @@ import "@ui5/webcomponents-fiori/dist/UserMenu.js"; import "@ui5/webcomponents-fiori/dist/UserMenuAccount.js"; import "@ui5/webcomponents-fiori/dist/UserMenuItem.js"; - +import "@ui5/webcomponents-fiori/dist/UserMenuItemGroup.js"; import "@ui5/webcomponents/dist/Avatar.js"; import "@ui5/webcomponents-fiori/dist/ShellBar.js"; import "@ui5/webcomponents-fiori/dist/ShellBarBranding.js"; @@ -12,6 +12,7 @@ import "@ui5/webcomponents-icons/dist/collaborate.js"; import "@ui5/webcomponents-icons/dist/official-service.js"; import "@ui5/webcomponents-icons/dist/private.js"; import "@ui5/webcomponents-icons/dist/accelerated.js"; +import "@ui5/webcomponents-icons/dist/message-information.js"; const shellbar = document.getElementById("shellbar"); const menu = document.getElementById("userMenu"); @@ -20,7 +21,7 @@ const menu = document.getElementById("userMenu"); shellbar.addEventListener("ui5-profile-click", (event) => { menu.opener = event.detail.targetRef; - menu.open = true; + menu.open = !menu.open; }); menu.addEventListener("item-click", function (event) { diff --git a/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.html b/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.html index b4378dce7440..623dbe039344 100644 --- a/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.html +++ b/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.html @@ -15,7 +15,7 @@ @@ -59,6 +59,12 @@ + + + + + + diff --git a/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.tsx b/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.tsx index 58bc614d9669..4cdc33edde29 100644 --- a/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.tsx +++ b/packages/website/docs/_samples/fiori/UserMenu/Advanced/sample.tsx @@ -1,11 +1,12 @@ import createReactComponent from "@ui5/webcomponents-base/dist/createReactComponent.js"; import { type UI5CustomEvent } from "@ui5/webcomponents-base"; -import { useState, useRef, useCallback } from "react"; +import { useRef, useCallback } from "react"; import ShellBarClass from "@ui5/webcomponents-fiori/dist/ShellBar.js"; import ShellBarBrandingClass from "@ui5/webcomponents-fiori/dist/ShellBarBranding.js"; import UserMenuClass from "@ui5/webcomponents-fiori/dist/UserMenu.js"; import UserMenuAccountClass from "@ui5/webcomponents-fiori/dist/UserMenuAccount.js"; import UserMenuItemClass from "@ui5/webcomponents-fiori/dist/UserMenuItem.js"; +import UserMenuItemGroupClass from "@ui5/webcomponents-fiori/dist/UserMenuItemGroup.js"; import AvatarClass from "@ui5/webcomponents/dist/Avatar.js"; import "@ui5/webcomponents-icons/dist/action-settings.js"; import "@ui5/webcomponents-icons/dist/globe.js"; @@ -19,16 +20,19 @@ const ShellBarBranding = createReactComponent(ShellBarBrandingClass); const UserMenu = createReactComponent(UserMenuClass); const UserMenuAccount = createReactComponent(UserMenuAccountClass); const UserMenuItem = createReactComponent(UserMenuItemClass); +const UserMenuItemGroup = createReactComponent(UserMenuItemGroupClass); const Avatar = createReactComponent(AvatarClass); function App() { - const [menuOpen, setMenuOpen] = useState(false); - const openerRef = useRef(null); + const userMenuRef = useRef(null); const handleProfileClick = useCallback( (e: UI5CustomEvent) => { - openerRef.current = e.detail.targetRef; - setMenuOpen(true); + const menu = userMenuRef.current; + if (menu) { + menu.opener = e.detail.targetRef; + menu.open = !menu.open; + } }, [], ); @@ -86,7 +90,10 @@ function App() { console.log("Sign Out clicked"); const result = prompt("Sign Out", "Are you sure you want to sign out?"); if (result) { - setMenuOpen(false); + const menu = userMenuRef.current; + if (menu) { + menu.open = false; + } } e.preventDefault(); }, []); @@ -103,8 +110,7 @@ function App() { setMenuOpen(false)} > + + + + + + ); diff --git a/packages/website/docs/_samples/fiori/UserMenu/Basic/main.js b/packages/website/docs/_samples/fiori/UserMenu/Basic/main.js index 9a364d44f509..4cc08a3ce226 100644 --- a/packages/website/docs/_samples/fiori/UserMenu/Basic/main.js +++ b/packages/website/docs/_samples/fiori/UserMenu/Basic/main.js @@ -11,13 +11,14 @@ import "@ui5/webcomponents-icons/dist/collaborate.js"; import "@ui5/webcomponents-icons/dist/official-service.js"; import "@ui5/webcomponents-icons/dist/private.js"; import "@ui5/webcomponents-icons/dist/accelerated.js"; +import "@ui5/webcomponents-icons/dist/message-information.js"; const shellbar = document.getElementById("shellbar"); const menu = document.getElementById("userMenu"); shellbar.addEventListener("ui5-profile-click", (event) => { menu.opener = event.detail.targetRef; - menu.open = true; + menu.open = !menu.open; }); menu.addEventListener("item-click", function (event) { diff --git a/packages/website/docs/_samples/fiori/UserMenu/Basic/sample.html b/packages/website/docs/_samples/fiori/UserMenu/Basic/sample.html index 7cfb1b877ae0..19990da21f7c 100644 --- a/packages/website/docs/_samples/fiori/UserMenu/Basic/sample.html +++ b/packages/website/docs/_samples/fiori/UserMenu/Basic/sample.html @@ -15,7 +15,7 @@ @@ -31,7 +31,7 @@ - + (null); const handleProfileClick = useCallback( (e: UI5CustomEvent) => { - openerRef.current = e.detail.targetRef; - setMenuOpen(true); + const menu = userMenuRef.current; + if (menu) { + menu.opener = e.detail.targetRef; + menu.open = !menu.open; + } }, [], ); @@ -67,7 +69,10 @@ function App() { console.log("Sign Out clicked"); const result = prompt("Sign Out", "Are you sure you want to sign out?"); if (result) { - setMenuOpen(false); + const menu = userMenuRef.current; + if (menu) { + menu.open = false; + } } e.preventDefault(); }, []); @@ -84,12 +89,10 @@ function App() { setMenuOpen(false)} > + + + + + + diff --git a/packages/website/src/components/Editor/ReactPlayground.tsx b/packages/website/src/components/Editor/ReactPlayground.tsx index fdba04efcc97..e86e49519232 100644 --- a/packages/website/src/components/Editor/ReactPlayground.tsx +++ b/packages/website/src/components/Editor/ReactPlayground.tsx @@ -229,6 +229,7 @@ import SearchItemClass from "@ui5/webcomponents-fiori/dist/SearchItem.js"; import SearchMessageAreaClass from "@ui5/webcomponents-fiori/dist/SearchMessageArea.js"; import UserMenuClass from "@ui5/webcomponents-fiori/dist/UserMenu.js"; import UserMenuItemClass from "@ui5/webcomponents-fiori/dist/UserMenuItem.js"; +import UserMenuItemGroupClass from "@ui5/webcomponents-fiori/dist/UserMenuItemGroup.js"; import UserMenuAccountClass from "@ui5/webcomponents-fiori/dist/UserMenuAccount.js"; import BarcodeScannerDialogClass from "@ui5/webcomponents-fiori/dist/BarcodeScannerDialog.js"; import NavigationLayoutClass from "@ui5/webcomponents-fiori/dist/NavigationLayout.js"; @@ -323,7 +324,7 @@ const ComponentClasses: Record = { FlexibleColumnLayoutClass, MediaGalleryClass, MediaGalleryItemClass, ProductSwitchClass, ProductSwitchItemClass, ViewSettingsDialogClass, ViewSettingsDialogCustomTabClass, SortItemClass, FilterItemClass, FilterItemOptionClass, SearchClass, SearchItemClass, SearchMessageAreaClass, UserMenuClass, UserMenuItemClass, - UserMenuAccountClass, BarcodeScannerDialogClass, NavigationLayoutClass, SearchFieldClass, + UserMenuItemGroupClass, UserMenuAccountClass, BarcodeScannerDialogClass, NavigationLayoutClass, SearchFieldClass, SearchItemGroupClass, SearchItemShowMoreClass, SearchScopeClass, ShellBarBrandingClass, ShellBarSearchClass, ShellBarSpacerClass, UserSettingsDialogClass, UserSettingsItemClass, UserSettingsViewClass, UserSettingsAccountViewClass, UserSettingsAppearanceViewClass,