@@ -3,6 +3,8 @@ import Component from '../../../../helpers/Component'
33import HoursClock from './components/HoursClock'
44import MinutesClock from './components/MinutesClock'
55
6+ import MaterialButton from '../MaterialButton'
7+
68export default class TimePicker extends Component {
79 beforeRender ( ) {
810 this . toggled = false
@@ -21,6 +23,38 @@ export default class TimePicker extends Component {
2123 return this . elements . root
2224 }
2325
26+ /**
27+ * Shows or hides time picker dialog.
28+ */
29+ toggle ( flag ) {
30+ const root = this . getRoot ( )
31+
32+ root . style [ ( flag ) ? 'display' : 'top' ] = ( flag ) ? 'block' : '25%'
33+ if ( ! flag ) root . style . opacity = '0'
34+
35+ setTimeout ( function ( ) {
36+ root . style [ ( flag ) ? 'top' : 'display' ] = ( flag ) ? '50%' : 'none'
37+ if ( flag ) root . style . opacity = '1'
38+ } , ( flag ) ? 20 : 300 )
39+
40+ this . toggleDark ( flag )
41+ }
42+
43+ /**
44+ * Shows or hides dark.
45+ * @param {Boolean }
46+ */
47+ toggleDark ( flag ) {
48+ const opacity = this . props . darkOpacity
49+ const dark = this . elements . dark
50+
51+ dark . style [ ( flag ) ? 'display' : 'opacity' ] = ( flag ) ? 'block' : '0'
52+
53+ setTimeout ( function ( ) {
54+ dark . style [ ( flag ) ? 'opacity' : 'display' ] = ( flag ) ? opacity : 'none'
55+ } , ( flag ) ? 20 : 300 )
56+ }
57+
2458 /**
2559 * Enables selecting hour or minute.
2660 */
@@ -187,40 +221,65 @@ export default class TimePicker extends Component {
187221
188222 render ( ) {
189223 return (
190- < div className = 'material-time-picker' ref = 'root' >
191- < div className = 'date-display' >
192- < div className = 'date-container' >
193- < span className = 'hour selected' ref = 'hour' onClick = { ( ) => this . selectClock ( this . elements . hoursClock ) } >
194- 6
195- </ span >
196- < span className = 'separate' >
197- :
198- </ span >
199- < span className = 'minutes' ref = 'minutes' onClick = { ( ) => this . selectClock ( this . elements . minutesClock ) } >
200- 30
201- </ span >
202- < div className = 'am-pm-container' >
203- < div className = 'item selected' ref = 'am' onClick = { ( ) => this . selectTime ( this . elements . am ) } >
204- AM
205- </ div >
206- < div className = 'item' ref = 'pm' onClick = { ( ) => this . selectTime ( this . elements . pm ) } >
207- PM
224+ < div >
225+ < div className = 'material-time-picker' ref = 'root' >
226+ < div className = 'date-display' >
227+ < div className = 'date-container' >
228+ < span className = 'hour selected' ref = 'hour' onClick = { ( ) => this . selectClock ( this . elements . hoursClock ) } >
229+ 6
230+ </ span >
231+ < span className = 'separate' >
232+ :
233+ </ span >
234+ < span className = 'minutes' ref = 'minutes' onClick = { ( ) => this . selectClock ( this . elements . minutesClock ) } >
235+ 30
236+ </ span >
237+ < div className = 'am-pm-container' >
238+ < div className = 'item selected' ref = 'am' onClick = { ( ) => this . selectTime ( this . elements . am ) } >
239+ AM
240+ </ div >
241+ < div className = 'item' ref = 'pm' onClick = { ( ) => this . selectTime ( this . elements . pm ) } >
242+ PM
243+ </ div >
208244 </ div >
209245 </ div >
210246 </ div >
211- </ div >
212- < div className = 'clock-buttons-container' >
213- < div className = 'clock' ref = 'root' >
214- < HoursClock ref = 'hoursClock' getTimePicker = { ( ) => { return this } } />
215- < MinutesClock ref = 'minutesClock' getTimePicker = { ( ) => { return this } } />
216- < div className = 'dot' />
247+ < div className = 'clock-buttons-container' >
248+ < div className = 'clock' >
249+ < HoursClock ref = 'hoursClock' getTimePicker = { ( ) => { return this } } />
250+ < MinutesClock ref = 'minutesClock' getTimePicker = { ( ) => { return this } } />
251+ < div className = 'dot' />
252+ </ div >
253+ < div className = 'buttons-container' ref = 'buttonsContainer' />
217254 </ div >
218255 </ div >
256+ < div className = 'material-time-picker-dark' ref = 'dark' />
219257 </ div >
220258 )
221259 }
222260
223261 afterRender ( ) {
262+ const props = this . props
263+
264+ if ( props . darkOpacity == null ) props . darkOpacity = 0.7
265+ if ( props . actionButtonRippleStyle == null ) {
266+ props . actionButtonRippleStyle = {
267+ backgroundColor : '#26a69a' ,
268+ opacity : 0.3
269+ }
270+ }
271+
272+ this . toggle ( true )
273+
224274 this . actualClock = this . elements . hoursClock
275+
276+ const buttons = (
277+ < div >
278+ < MaterialButton text = 'OK' shadow = { false } rippleStyle = { this . props . actionButtonRippleStyle } />
279+ < MaterialButton text = 'ANULUJ' shadow = { false } rippleStyle = { this . props . actionButtonRippleStyle } onClick = { ( ) => { this . toggle ( false ) } } />
280+ </ div >
281+ )
282+
283+ this . renderComponents ( buttons , this . elements . buttonsContainer )
225284 }
226285}
0 commit comments