@@ -6,31 +6,36 @@ var mui = require('material-ui');
66var DatePicker = mui . DatePicker ;
77var TextField = mui . TextField ;
88var RaisedButton = mui . RaisedButton ;
9- var Paper = mui . Paper ;
9+ var Dialog = mui . Dialog ;
10+ var Label = require ( './Label.jsx' ) ;
1011
1112var PaymentForm = React . createClass ( {
1213 getInitialState ( ) {
1314 return {
1415 fullName : '' , // user entered full name on credit card
1516 cardNumber : '' , // user entered credit card number
16- expiryDate : '' , // user entered expiry date
17+ expMonth : '' ,
18+ expYear : '' ,
1719 ccv : '' , // user entered ccv number
1820 amount : '' , // user entered amount
1921 }
2022 } ,
23+
2124 propTypes : {
2225 paymentAdded : React . PropTypes . func ,
2326 } ,
2427
28+ onButtonClick ( ) {
29+ this . refs . dialog . show ( ) ;
30+ } ,
31+
2532 // Capture the input field state after each keypress.
2633 onChange ( field , event ) {
2734 this . setState ( { [ field ] : event . target . value } ) ;
2835 } ,
2936
3037 // Handle the form submission event when the user adds new repair request.
3138 onSubmit ( event ) {
32- event . preventDefault ( ) ;
33- event . stopPropagation ( ) ;
3439
3540 // API call to add payment
3641 Api . addPayment ( {
@@ -49,53 +54,73 @@ var PaymentForm = React.createClass({
4954 this . setState ( {
5055 fullName : '' ,
5156 cardNumber : '' ,
52- expiryDate : '' ,
5357 ccv : '' ,
54- amount : ''
58+ amount : '' ,
59+ expMonth : '' ,
60+ expYear : ''
5561
5662 } ) ;
57- // Refetch repair requests via props
5863 this . props . paymentAdded ( ) ;
64+ this . refs . dialog . dismiss ( ) ;
5965 }
6066 } ) ;
6167 } ,
6268
6369 render ( ) {
64- var { fullName, cardNumber, expiryDate , ccv, amount } = this . state ;
70+ var { fullName, cardNumber, expMonth , expYear , ccv, amount } = this . state ;
6571 var errorMessage ;
72+ var standardActions = [
73+ { text : 'Cancel' } ,
74+ { text : 'Make Payment' , onTouchTap : this . onSubmit , ref : 'submit' }
75+ ] ;
6676 return (
6777 < div style = { style . formContainer } >
68- < h2 style = { style . heading } > Make a Payment </ h2 >
69- < Paper zDepth = { 1 } >
70- < form style = { style . form } onSubmit = { this . onSubmit } >
78+ < RaisedButton label = "Make a new Payment"
79+ primary = { true }
80+ onClick = { this . onButtonClick } />
81+ < Dialog
82+ title = "Make a Payment"
83+ actions = { standardActions }
84+ actionFocus = "submit"
85+ modal = { this . state . modal }
86+ ref = "dialog" >
87+ < div style = { style . form } >
7188 < div style = { style . error } > { errorMessage } </ div >
72- < TextField
89+ < TextField
7390 value = { fullName }
7491 onChange = { this . onChange . bind ( this , 'fullName' ) }
7592 floatingLabelText = "Full Name on Credit Card" />
76- < TextField
93+ < TextField
7794 value = { cardNumber }
7895 onChange = { this . onChange . bind ( this , 'cardNumber' ) }
7996 floatingLabelText = "Card Number" />
80- < DatePicker
81- name = "expiryDate"
82- onChange = { this . _handleChange }
83- floatingLabelText = "Expiry Date" />
97+ < div >
98+ < Label > Expiry Date</ Label >
99+ < TextField
100+ style = { style . date }
101+ value = { expMonth }
102+ onChange = { this . onChange . bind ( this , 'expMonth' ) }
103+ floatingLabelText = "mm"
104+ maxLength = "2" />
105+ < span style = { style . separator } > /</ span >
106+ < TextField
107+ style = { style . date }
108+ value = { expYear }
109+ onChange = { this . onChange . bind ( this , 'expYear' ) }
110+ floatingLabelText = "yy"
111+ maxLength = "2" />
112+ </ div >
84113 < TextField
114+ style = { style . ccv }
85115 value = { ccv }
86116 onChange = { this . onChange . bind ( this , 'ccv' ) }
87117 floatingLabelText = "CCV" />
88118 < TextField
89119 value = { amount }
90120 onChange = { this . onChange . bind ( this , 'amount' ) }
91121 floatingLabelText = "Amount" />
92- < RaisedButton
93- type = "submit"
94- label = "Pay"
95- primary = { true }
96- style = { style . button } />
97- </ form >
98- </ Paper >
122+ </ div >
123+ </ Dialog >
99124 </ div >
100125 ) ;
101126 }
@@ -112,10 +137,18 @@ var style = {
112137 } ,
113138 form : {
114139 display : 'flex' ,
115- padding : '2em' ,
116140 flexDirection : 'column' ,
117141 maxWidth : '20em' ,
118142 } ,
143+ date : {
144+ width : '2em' ,
145+ } ,
146+ separator : {
147+ margin : '0 .5em' ,
148+ } ,
149+ ccv : {
150+ width : '3em' ,
151+ }
119152} ;
120153
121154module . exports = MuiContextified ( PaymentForm ) ;
0 commit comments