@@ -2,11 +2,12 @@ import React, { useState, useRef, Children, useMemo } from "react";
2
2
import { useOutSideClick } from "../../../hooks" ;
3
3
import { getScreenOffset } from "../../../api" ;
4
4
import { Link } from "react-router-dom" ;
5
- import CmdBarSubMenu from "./CmdBarSubMenu" ;
5
+ import SubMenuItem from "./SubMenuItem" ;
6
+ import SubMenuList from "./SubMenuList" ;
6
7
7
8
const CommandBarMenu = ( props ) => {
8
9
9
- let _menu_trigger ;
10
+ let _menu_trigger = < button className = "app-cmdbar-button" > < i className = "icons10-angle-down" > </ i > </ button > ;
10
11
11
12
const subMenusRef = useRef ( [ ] ) ;
12
13
const wrapperRef = useRef ( null ) ;
@@ -18,7 +19,7 @@ const CommandBarMenu = (props) => {
18
19
19
20
const hideCurrentSubmenu = ( ) => {
20
21
if ( currentSubMenu ) {
21
- subMenusRef . current [ currentSubMenu ] . classList . toggle ( "show" ) ;
22
+ subMenusRef . current [ currentSubMenu ] . toggleShow ( ) ;
22
23
setCurrentSubMenu ( null ) ;
23
24
}
24
25
}
@@ -39,10 +40,10 @@ const CommandBarMenu = (props) => {
39
40
40
41
const openSubMenu = ( indx ) => {
41
42
if ( currentSubMenu ) {
42
- subMenusRef . current [ currentSubMenu ] . classList . toggle ( "show" ) ;
43
+ subMenusRef . current [ currentSubMenu ] . toggleShow ( ) ;
43
44
}
44
45
setCurrentSubMenu ( indx ) ;
45
- subMenusRef . current [ indx ] . classList . toggle ( "show" ) ;
46
+ subMenusRef . current [ indx ] . toggleShow ( ) ;
46
47
}
47
48
48
49
const _onItemClick = ( child_props ) => {
@@ -64,39 +65,19 @@ const CommandBarMenu = (props) => {
64
65
key = { child . props . label }
65
66
className = "cmdbar-menu-list-item" >
66
67
< Link
67
- onClick = { child . props . children ? ( ) => openSubMenu ( index ) : ( ) => _onItemClick ( child . props ) }
68
+ onClick = { child . props . children
69
+ ? ( ) => openSubMenu ( index )
70
+ : ( ) => _onItemClick ( child . props ) }
68
71
to = { child . props . link ? child . props . link : "#" } >
69
72
{ child . props . icon } { child . props . label }
70
73
{ child . props . children ? < i className = "icons10-angle-right" > </ i > :< > </ > }
71
74
</ Link >
72
- { Array . isArray ( child . props . children )
73
- ? < ul
74
- onClick = { ( ) => hideAllMenu ( ) }
75
- ref = { ( el ) => ( subMenusRef . current [ index ] = el ) }
76
- className = "app-cmdbar-menu-list cmdbar-submenu" >
77
- { child . props . children . map ( ( child_ , index ) => {
78
- return [
79
- child_ . type === CmdBarSubMenu && (
80
- < CmdBarSubMenu
81
- key = { index }
82
- icon = { child_ . props . icon }
83
- label = { child_ . props . label }
84
- />
85
- )
86
- ]
87
- } )
88
- }
89
- </ ul >
90
- : child . props . children
91
- ? < ul ref = { ( el ) => ( subMenusRef . current [ index ] = el ) }
92
- className = "app-cmdbar-menu-list cmdbar-submenu" >
93
- < CmdBarSubMenu
94
- label = { child . props . children . props . label }
95
- icon = { child . props . children . props . icon }
96
- />
97
- </ ul >
98
- : < > </ >
99
- }
75
+ < SubMenuList
76
+ ref = { ( el ) => ( subMenusRef . current [ index ] = el ) }
77
+ listData = { child . props }
78
+ listIndex = { index - 1 }
79
+ onItemClick = { ( ) => hideAllMenu ( ) }
80
+ />
100
81
</ li >
101
82
) ,
102
83
child . type === CommandBarMenuItemDivider && (
@@ -110,9 +91,6 @@ const CommandBarMenu = (props) => {
110
91
return _menu_trigger = child ;
111
92
}
112
93
} ) ;
113
- if ( ! _menu_trigger ) _menu_trigger = < button className = "app-cmdbar-button" >
114
- < i className = "icons10-angle-down" > </ i >
115
- </ button >
116
94
117
95
118
96
return (
@@ -137,7 +115,7 @@ CommandBarMenuItem.defaultProps = {
137
115
onClick : ( ) => { }
138
116
}
139
117
140
- CommandBarMenu . MenuSubItem = CmdBarSubMenu ;
118
+ CommandBarMenu . MenuSubItem = SubMenuItem ;
141
119
CommandBarMenu . MenuItem = CommandBarMenuItem ;
142
120
CommandBarMenu . MenuTrigger = CommandBarMenuTrigger ;
143
121
CommandBarMenu . MenuItemDivider = CommandBarMenuItemDivider ;
0 commit comments