Last active
March 12, 2021 22:53
-
-
Save QuadradS/feef2fae07f29a7c590cd8a78e9a9e18 to your computer and use it in GitHub Desktop.
RejectDialog component with appollo and graphql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React from 'react'; | |
import {graphql} from 'react-apollo'; | |
import {Form, Formik} from 'formik'; | |
import moment from "moment"; | |
import { | |
Button, | |
Dialog, | |
DialogActions, | |
DialogContent, | |
DialogContentText, | |
DialogTitle, | |
FormControl, | |
FormLabel | |
} from 'material-ui'; | |
import membershipsRejectOneById from '../graphql_queries/memberships_rejectOneById.graphql'; | |
const MembershipUserDetails = ({membership}) => { | |
const userDetails = membership.userDetails; | |
return ( | |
<FormControl | |
fullWidth> | |
<DialogContentText> | |
<p> | |
{userDetails.firstName} {userDetails.lastName} | |
<strong> \ </strong> | |
{moment(userDetails.dateOfBirth).format('MM/DD/YYYY')} | |
<strong> \ </strong> | |
{userDetails.phoneNumber} | |
</p> | |
{ | |
userDetails.userMobility && | |
userDetails.userMobility.length > 0 && | |
<p> | |
Mobility Options: | |
<ul> | |
{ | |
userDetails.userMobility.map((mobility, index) => { | |
return <li key={`membership-details-mobility-${index}`}>{mobility.name} {mobility.notes}</li> | |
}) | |
} | |
</ul> | |
</p> | |
} | |
</DialogContentText> | |
</FormControl> | |
); | |
} | |
@graphql(membershipsRejectOneById) | |
class MembershipsRejectDialog extends React.Component { | |
handleSubmit = async (id) => { | |
return await this.props.mutate({ | |
variables: { | |
id | |
} | |
}); | |
} | |
render() { | |
return ( | |
<Dialog open={!!this.props.selectedMembership} | |
onClose={this.props.onDialogClose}> | |
<Formik | |
initialValues={{ | |
selectedMembership: this.props.selectedMembership | |
}} | |
onSubmit={(values) => this.handleSubmit(values.selectedMembership._id).then(() => this.props.onDialogClose())} | |
render={({isSubmitting, values}) => { | |
return ( | |
<Form> | |
<DialogTitle> | |
<div className="grey">Reject membership request</div> | |
</DialogTitle> | |
<DialogContent> | |
<MembershipUserDetails membership={values.selectedMembership}/> | |
<FormLabel> | |
Do you really want to reject this membership request? | |
</FormLabel> | |
<DialogActions> | |
<span className="black-54 small-font pointer-cursor" | |
onClick={this.props.onDialogClose}>Cancel</span> | |
<Button raised | |
color="primary" | |
type='submit' | |
disabled={isSubmitting}>Reject request</Button> | |
</DialogActions> | |
</DialogContent> | |
</Form> | |
); | |
}}/> | |
</Dialog> | |
); | |
} | |
} | |
export default MembershipsRejectDialog; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment