@@ -4,7 +4,6 @@ import Modal from 'react-modal';
4
4
import { Tab , Tabs , TabList , TabPanel } from '../../src/main' ;
5
5
6
6
Modal . setAppElement ( document . getElementById ( 'example' ) ) ;
7
- Modal . injectCSS ( ) ;
8
7
9
8
const App = React . createClass ( {
10
9
getInitialState ( ) {
@@ -20,25 +19,57 @@ const App = React.createClass({
20
19
} ;
21
20
} ,
22
21
22
+ openModal ( ) {
23
+ this . setState ( {
24
+ isModalOpen : true ,
25
+ } ) ;
26
+ } ,
27
+
28
+ closeModal ( ) {
29
+ this . setState ( {
30
+ isModalOpen : false ,
31
+ } ) ;
32
+ } ,
33
+
34
+ addTab ( ) {
35
+ const label = this . refs . label . value ;
36
+ const content = this . refs . content . value ;
37
+
38
+ this . setState ( {
39
+ tabs : [
40
+ ...this . state . tabs ,
41
+ { label, content } ,
42
+ ] ,
43
+ selectedIndex : this . state . tabs . length ,
44
+ } ) ;
45
+ this . closeModal ( ) ;
46
+ } ,
47
+
48
+ removeTab ( index ) {
49
+ this . setState ( {
50
+ tabs : this . state . tabs . filter ( ( tab , i ) => i !== index ) ,
51
+ selectedIndex : this . state . selectedIndex - 1 ,
52
+ } ) ;
53
+ } ,
54
+
23
55
render ( ) {
24
56
return (
25
57
< div style = { { padding : 50 } } >
26
58
< p >
27
59
< button onClick = { this . openModal } > + Add</ button >
28
60
</ p >
29
- < Tabs selectedIndex = { this . state . selectedIndex } >
61
+ < Tabs
62
+ selectedIndex = { this . state . selectedIndex }
63
+ onSelect = { selectedIndex => this . setState ( { selectedIndex } ) }
64
+ >
30
65
< TabList >
31
- { this . state . tabs . map ( ( tab , i ) => {
32
- return (
33
- < Tab key = { i } >
34
- { tab . label } < a href = "#" onClick = { this . removeTab . bind ( this , i ) } > ✕</ a >
35
- </ Tab >
36
- ) ;
37
- } ) }
66
+ { this . state . tabs . map ( ( tab , i ) => (
67
+ < Tab key = { i } >
68
+ { tab . label } < a href = "#" onClick = { ( ) => this . removeTab ( i ) } > ✕</ a >
69
+ </ Tab >
70
+ ) ) }
38
71
</ TabList >
39
- { this . state . tabs . map ( ( tab , i ) => {
40
- return < TabPanel key = { i } > { tab . content } </ TabPanel > ;
41
- } ) }
72
+ { this . state . tabs . map ( ( tab , i ) => < TabPanel key = { i } > { tab . content } </ TabPanel > ) }
42
73
</ Tabs >
43
74
< Modal
44
75
isOpen = { this . state . isModalOpen }
@@ -49,44 +80,13 @@ const App = React.createClass({
49
80
< label htmlFor = "label" > Label:</ label > < br />
50
81
< input id = "label" type = "text" ref = "label" /> < br /> < br />
51
82
< label htmlFor = "content" > Content:</ label > < br />
52
- < textarea id = "content" ref = "content" rows = "10" cols = "50" > </ textarea > < br /> < br />
83
+ < textarea id = "content" ref = "content" rows = "10" cols = "50" / >< br /> < br />
53
84
< button onClick = { this . addTab } > OK</ button > { ' ' }
54
85
< button onClick = { this . closeModal } > Cancel</ button >
55
86
</ Modal >
56
87
</ div >
57
88
) ;
58
89
} ,
59
-
60
- openModal ( ) {
61
- this . setState ( {
62
- isModalOpen : true ,
63
- } ) ;
64
- } ,
65
-
66
- closeModal ( ) {
67
- this . setState ( {
68
- isModalOpen : false ,
69
- } ) ;
70
- } ,
71
-
72
- addTab ( ) {
73
- const label = this . refs . label . value ;
74
- const content = this . refs . content . value ;
75
-
76
- this . state . tabs . push ( {
77
- label : label ,
78
- content : content ,
79
- } ) ;
80
- this . setState ( {
81
- selectedIndex : this . state . tabs . length - 1 ,
82
- } ) ;
83
- this . closeModal ( ) ;
84
- } ,
85
-
86
- removeTab ( index ) {
87
- this . state . tabs . splice ( index , 1 ) ;
88
- this . forceUpdate ( ) ;
89
- } ,
90
90
} ) ;
91
91
92
92
ReactDOM . render ( < App /> , document . getElementById ( 'example' ) ) ;
0 commit comments