1- /* eslint no-console:0 */
1+ /* eslint-disable no-console, react/require-default-props, no-param-reassign */
22
33import React from 'react' ;
4- import ReactDOM from 'react-dom' ;
5- import PropTypes from 'prop-types' ;
6- import Menu , { SubMenu , Item as MenuItem , Divider } from 'rc-menu' ;
7- import 'rc-menu/assets/index.less' ;
84import animate from 'css-animation' ;
5+ import PropTypes from 'prop-types' ;
6+ import Menu , { SubMenu , Item as MenuItem , Divider } from '../src' ;
7+ import '../assets/index.less' ;
98
109function handleClick ( info ) {
1110 console . log ( `clicked ${ info . key } ` ) ;
@@ -30,8 +29,8 @@ const animation = {
3029 } ) ;
3130 } ,
3231
33- appear ( ) {
34- return this . enter . apply ( this , arguments ) ;
32+ appear ( ... args ) {
33+ return this . enter ( ... args ) ;
3534 } ,
3635
3736 leave ( node , done ) {
@@ -50,32 +49,37 @@ const animation = {
5049 } ,
5150} ;
5251
53- const reactContainer = document . getElementById ( '__react-content' ) ;
54-
5552const nestSubMenu = (
5653 < SubMenu
57- title = {
58- < span className = "submenu-title-wrapper" > offset sub menu 2</ span >
59- }
54+ title = { < span className = "submenu-title-wrapper" > offset sub menu 2</ span > }
6055 key = "4"
6156 popupOffset = { [ 10 , 15 ] }
6257 >
6358 < MenuItem key = "4-1" > inner inner</ MenuItem >
64- < Divider />
59+ < Divider />
6560 < SubMenu
6661 key = "4-2"
6762 title = { < span className = "submenu-title-wrapper" > sub menu 1</ span > }
6863 >
69- < SubMenu title = { < span className = "submenu-title-wrapper" > sub 4-2-0</ span > } key = "4-2-0" >
64+ < SubMenu
65+ title = { < span className = "submenu-title-wrapper" > sub 4-2-0</ span > }
66+ key = "4-2-0"
67+ >
7068 < MenuItem key = "4-2-0-1" > inner inner</ MenuItem >
7169 < MenuItem key = "4-2-0-2" > inner inner2</ MenuItem >
7270 </ SubMenu >
7371 < MenuItem key = "4-2-1" > inn</ MenuItem >
74- < SubMenu title = { < span className = "submenu-title-wrapper" > sub menu 4</ span > } key = "4-2-2" >
72+ < SubMenu
73+ title = { < span className = "submenu-title-wrapper" > sub menu 4</ span > }
74+ key = "4-2-2"
75+ >
7576 < MenuItem key = "4-2-2-1" > inner inner</ MenuItem >
7677 < MenuItem key = "4-2-2-2" > inner inner2</ MenuItem >
7778 </ SubMenu >
78- < SubMenu title = { < span className = "submenu-title-wrapper" > sub menu 3</ span > } key = "4-2-3" >
79+ < SubMenu
80+ title = { < span className = "submenu-title-wrapper" > sub menu 3</ span > }
81+ key = "4-2-3"
82+ >
7983 < MenuItem key = "4-2-3-1" > inner inner</ MenuItem >
8084 < MenuItem key = "4-2-3-2" > inner inner2</ MenuItem >
8185 </ SubMenu >
@@ -88,19 +92,27 @@ function onOpenChange(value) {
8892}
8993
9094const children1 = [
91- < SubMenu title = { < span className = "submenu-title-wrapper" > sub menu</ span > } key = "1" >
95+ < SubMenu
96+ title = { < span className = "submenu-title-wrapper" > sub menu</ span > }
97+ key = "1"
98+ >
9299 < MenuItem key = "1-1" > 0-1</ MenuItem >
93100 < MenuItem key = "1-2" > 0-2</ MenuItem >
94101 </ SubMenu > ,
95102 nestSubMenu ,
96103 < MenuItem key = "2" > 1</ MenuItem > ,
97104 < MenuItem key = "3" > outer</ MenuItem > ,
98- < MenuItem key = "5" disabled > disabled</ MenuItem > ,
105+ < MenuItem key = "5" disabled >
106+ disabled
107+ </ MenuItem > ,
99108 < MenuItem key = "6" > outer3</ MenuItem > ,
100109] ;
101110
102111const children2 = [
103- < SubMenu title = { < span className = "submenu-title-wrapper" > sub menu</ span > } key = "1" >
112+ < SubMenu
113+ title = { < span className = "submenu-title-wrapper" > sub menu</ span > }
114+ key = "1"
115+ >
104116 < MenuItem key = "1-1" > 0-1</ MenuItem >
105117 < MenuItem key = "1-2" > 0-2</ MenuItem >
106118 </ SubMenu > ,
@@ -111,32 +123,39 @@ const children2 = [
111123const customizeIndicator = < span > Add More Items</ span > ;
112124
113125class CommonMenu extends React . Component {
114- state = {
126+ state = {
115127 children : children1 ,
116128 overflowedIndicator : undefined ,
117- }
129+ } ;
130+
118131 toggleChildren = ( ) => {
119- this . setState ( {
120- children : this . state . children === children1 ? children2 : children1 ,
121- } ) ;
122- }
132+ this . setState ( ( { children } ) => ( {
133+ children : children === children1 ? children2 : children1 ,
134+ } ) ) ;
135+ } ;
136+
123137 toggleOverflowedIndicator = ( ) => {
124- this . setState ( {
138+ this . setState ( ( { overflowedIndicator } ) => ( {
125139 overflowedIndicator :
126- this . state . overflowedIndicator === undefined ?
127- customizeIndicator :
128- undefined ,
129- } ) ;
130- }
140+ overflowedIndicator === undefined ? customizeIndicator : undefined ,
141+ } ) ) ;
142+ } ;
143+
131144 render ( ) {
132145 const { triggerSubMenuAction } = this . props ;
133146 const { children, overflowedIndicator } = this . state ;
134147 return (
135148 < div >
136- { this . props . updateChildrenAndOverflowedIndicator && < div >
137- < button onClick = { this . toggleChildren } > toggle children</ button >
138- < button onClick = { this . toggleOverflowedIndicator } > toggle overflowedIndicator</ button >
139- </ div > }
149+ { this . props . updateChildrenAndOverflowedIndicator && (
150+ < div >
151+ < button type = "button" onClick = { this . toggleChildren } >
152+ toggle children
153+ </ button >
154+ < button type = "button" onClick = { this . toggleOverflowedIndicator } >
155+ toggle overflowedIndicator
156+ </ button >
157+ </ div >
158+ ) }
140159 < Menu
141160 onClick = { handleClick }
142161 triggerSubMenuAction = { triggerSubMenuAction }
@@ -162,7 +181,7 @@ CommonMenu.propTypes = {
162181 updateChildrenAndOverflowedIndicator : PropTypes . bool ,
163182} ;
164183
165- function render ( container ) {
184+ function Demo ( ) {
166185 const horizontalMenu = (
167186 < CommonMenu
168187 mode = "horizontal"
@@ -181,12 +200,7 @@ function render(container) {
181200 />
182201 ) ;
183202
184- const verticalMenu = (
185- < CommonMenu
186- mode = "vertical"
187- openAnimation = "zoom"
188- />
189- ) ;
203+ const verticalMenu = < CommonMenu mode = "vertical" openAnimation = "zoom" /> ;
190204
191205 const inlineMenu = (
192206 < CommonMenu
@@ -196,23 +210,26 @@ function render(container) {
196210 />
197211 ) ;
198212
199- ReactDOM . render ( < div style = { { margin : 20 } } >
200- < h2 > antd menu</ h2 >
201- < div >
202- < h3 > horizontal</ h3 >
213+ return (
214+ < div style = { { margin : 20 } } >
215+ < h2 > antd menu</ h2 >
216+ < div >
217+ < h3 > horizontal</ h3 >
203218
204- < div style = { { margin : 20 } } > { horizontalMenu } </ div >
205- < h3 > horizontal and click</ h3 >
219+ < div style = { { margin : 20 } } > { horizontalMenu } </ div >
220+ < h3 > horizontal and click</ h3 >
206221
207- < div style = { { margin : 20 } } > { horizontalMenu2 } </ div >
208- < h3 > vertical</ h3 >
222+ < div style = { { margin : 20 } } > { horizontalMenu2 } </ div >
223+ < h3 > vertical</ h3 >
209224
210- < div style = { { margin : 20 , width : 200 } } > { verticalMenu } </ div >
211- < h3 > inline</ h3 >
225+ < div style = { { margin : 20 , width : 200 } } > { verticalMenu } </ div >
226+ < h3 > inline</ h3 >
212227
213- < div style = { { margin : 20 , width : 400 } } > { inlineMenu } </ div >
228+ < div style = { { margin : 20 , width : 400 } } > { inlineMenu } </ div >
229+ </ div >
214230 </ div >
215- </ div > , container ) ;
231+ ) ;
216232}
217233
218- render ( reactContainer ) ;
234+ export default Demo ;
235+ /* eslint-enable */
0 commit comments