From a536feb01d951dcf0764020afc28aa34bde6f935 Mon Sep 17 00:00:00 2001 From: yoution Date: Wed, 29 Jan 2020 10:19:03 +0800 Subject: [PATCH] #101 fix bug when all submenus are in "more" menu --- src/components/TopNav/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/components/TopNav/index.js b/src/components/TopNav/index.js index 184d1c1..34d1d39 100644 --- a/src/components/TopNav/index.js +++ b/src/components/TopNav/index.js @@ -129,6 +129,11 @@ const TopNav = ({ var menu1 = findLevel1Menu(level1Id) if (menu1 && menu1.subMenu) { let subMenu = menu1.subMenu + // all sub menu are all in 'more' + if (subMenu.length === moreMenu.length) { + setChosenArrowPos('more') + return + } let pos = _.findIndex(subMenu, (level2) => { return level2.id === menuId }) @@ -173,6 +178,21 @@ const TopNav = ({ setChosenArrowX(getMenuCenter(menuId)) }, [setChosenArrowX, getMenuCenter]) + useEffect(() => { + // after page first view, when all submenus show in 'more' menu, set chosenArrow below 'more' menu + const { m1 } = getMenuIdsFromPath(menuWithId, path) + var menu1 = findLevel1Menu(m1) + if (menu1 && menu1.subMenu) { + let subMenu = menu1.subMenu + // all sub menu are all in 'more' + if (subMenu.length === moreMenu.length) { + setTimeout(() => { + setChosenArrowPos('more') + }) + } + } + }, [(moreMenu || []).length]) + const setIconSelectPos = menuId => { // wait for menuId element to get positioned in its place setTimeout(() => {