@@ -7,8 +7,6 @@ import { render } from 'react-dom'
77import localizer from 'react-big-calendar/lib/localizers/globalize'
88import globalize from 'globalize'
99
10- localizer ( globalize )
11-
1210import 'bootstrap/dist/css/bootstrap.min.css'
1311import 'font-awesome/css/font-awesome.min.css'
1412
@@ -25,13 +23,40 @@ import Resource from './demos/resource'
2523import DndResource from './demos/dndresource'
2624import Timeslots from './demos/timeslots'
2725import Dnd from './demos/dnd'
26+ import Dropdown from 'react-bootstrap/lib/Dropdown'
27+ import MenuItem from 'react-bootstrap/lib/MenuItem'
28+
29+ const globalizeLocalizer = localizer ( globalize )
2830
2931let demoRoot =
3032 'https://github.com/intljusticemission/react-big-calendar/tree/master/examples/demos'
3133
34+ const EXAMPLES = {
35+ basic : 'Basic Calendar' ,
36+ selectable : 'Create events' ,
37+ cultures : 'Localization' ,
38+ popup : 'Show more via a popup' ,
39+ timeslots : 'Custom Time Grids' ,
40+ rendering : 'Customized Component Rendering' ,
41+ customView : 'Custom Calendar Views' ,
42+ resource : 'Resource Scheduling' ,
43+ dnd : 'Addon: Drag and drop' ,
44+ }
45+
3246class Example extends React . Component {
33- state = { selected : 'basic' }
47+ constructor ( ...args ) {
48+ super ( ...args )
3449
50+ const hash = ( window . location . hash || '' ) . slice ( 1 )
51+
52+ this . state = {
53+ selected : EXAMPLES [ hash ] ? hash : 'basic' ,
54+ }
55+ }
56+
57+ select = selected => {
58+ this . setState ( { selected } )
59+ }
3560 render ( ) {
3661 let selected = this . state . selected
3762 let Current = {
@@ -74,70 +99,30 @@ class Example extends React.Component {
7499 </ div >
75100 </ div >
76101 < div className = "examples" >
77- < header >
78- < ul className = "examples--list list-unstyled" >
79- < li className = { cn ( { active : selected === 'basic' } ) } >
80- < a href = "#" onClick = { this . select . bind ( null , 'basic' ) } >
81- Basic
82- </ a >
83- </ li >
84- < li className = { cn ( { active : selected === 'selectable' } ) } >
85- < a href = "#" onClick = { this . select . bind ( null , 'selectable' ) } >
86- Selectable
87- </ a >
88- </ li >
89- < li className = { cn ( { active : selected === 'cultures' } ) } >
90- < a href = "#" onClick = { this . select . bind ( null , 'cultures' ) } >
91- I18n and Locales
92- </ a >
93- </ li >
94- < li className = { cn ( { active : selected === 'popup' } ) } >
95- < a href = "#" onClick = { this . select . bind ( null , 'popup' ) } >
96- Popup
97- </ a >
98- </ li >
99- < li className = { cn ( { active : selected === 'timeslots' } ) } >
100- < a href = "#" onClick = { this . select . bind ( null , 'timeslots' ) } >
101- Timeslots
102- </ a >
103- </ li >
104- < li className = { cn ( { active : selected === 'rendering' } ) } >
105- < a href = "#" onClick = { this . select . bind ( null , 'rendering' ) } >
106- Custom rendering
107- </ a >
108- </ li >
109- < li className = { cn ( { active : selected === 'customView' } ) } >
110- < a href = "#" onClick = { this . select . bind ( null , 'customView' ) } >
111- Custom View
112- </ a >
113- </ li >
114- < li className = { cn ( { active : selected === 'Resource' } ) } >
115- < a href = "#" onClick = { this . select . bind ( null , 'resource' ) } >
116- Resource columns
117- </ a >
118- </ li >
119- < li className = { cn ( { active : selected === 'dnd' } ) } >
120- < a href = "#" onClick = { this . select . bind ( null , 'dnd' ) } >
121- Drag and Drop
122- </ a >
123- </ li >
124- < li className = { cn ( { active : selected === 'dndresource' } ) } >
125- < a href = "#" onClick = { this . select . bind ( null , 'dndresource' ) } >
126- D'n'D Resource columns
127- </ a >
128- </ li >
129- </ ul >
130- </ header >
131- < div className = "example" >
132- < div className = "view-source" >
102+ < header className = "examples--header" >
103+ < div className = "examples--view-source" >
133104 < a target = "_blank" href = { demoRoot + '/' + selected + '.js' } >
134105 < strong >
135106 < i className = "fa fa-code" />
136107 { ' View example source code' }
137108 </ strong >
138109 </ a >
139110 </ div >
140- < Current />
111+ < Dropdown className = "examples--dropdown" pullRight >
112+ < Dropdown . Toggle bsStyle = "link" className = "dropdown--toggle " >
113+ { EXAMPLES [ selected ] }
114+ </ Dropdown . Toggle >
115+ < Dropdown . Menu >
116+ { Object . entries ( EXAMPLES ) . map ( ( [ key , title ] ) => (
117+ < MenuItem href = { `#${ key } ` } onClick = { ( ) => this . select ( key ) } >
118+ { title }
119+ </ MenuItem >
120+ ) ) }
121+ </ Dropdown . Menu >
122+ </ Dropdown >
123+ </ header >
124+ < div className = "example" >
125+ < Current localizer = { globalizeLocalizer } />
141126 </ div >
142127 </ div >
143128 < div className = "docs" >
@@ -149,11 +134,8 @@ class Example extends React.Component {
149134 </ div >
150135 )
151136 }
152-
153- select = ( selected , e ) => {
154- e . preventDefault ( )
155- this . setState ( { selected } )
156- }
157137}
158138
159- render ( < Example /> , document . getElementById ( 'app' ) )
139+ document . addEventListener ( 'DOMContentLoaded' , ( ) => {
140+ render ( < Example /> , document . getElementById ( 'app' ) )
141+ } )
0 commit comments