mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-11-27 01:25:52 -05:00
add GenderOption component to handle most gender radio options
This commit is contained in:
parent
5de681fd68
commit
e22a848350
1 changed files with 54 additions and 61 deletions
|
@ -10,6 +10,42 @@ const JoinFlowStep = require('./join-flow-step.jsx');
|
||||||
|
|
||||||
require('./join-flow-steps.scss');
|
require('./join-flow-steps.scss');
|
||||||
|
|
||||||
|
const GenderOption = ({
|
||||||
|
label,
|
||||||
|
onSetFieldValue,
|
||||||
|
selectedValue,
|
||||||
|
value
|
||||||
|
}) => (
|
||||||
|
<div
|
||||||
|
className={classNames(
|
||||||
|
'col-sm-9',
|
||||||
|
'row',
|
||||||
|
'row-inline',
|
||||||
|
'gender-radio-row',
|
||||||
|
{'gender-radio-row-selected': (selectedValue === value)}
|
||||||
|
)}
|
||||||
|
/* eslint-disable react/jsx-no-bind */
|
||||||
|
onClick={() => onSetFieldValue('gender', value, false)}
|
||||||
|
/* eslint-enable react/jsx-no-bind */
|
||||||
|
>
|
||||||
|
<FormikRadioButton
|
||||||
|
buttonValue={value}
|
||||||
|
className={classNames(
|
||||||
|
'join-flow-radio'
|
||||||
|
)}
|
||||||
|
label={label}
|
||||||
|
name="gender"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
GenderOption.propTypes = {
|
||||||
|
label: PropTypes.string,
|
||||||
|
onSetFieldValue: PropTypes.function,
|
||||||
|
selectedValue: PropTypes.string,
|
||||||
|
value: PropTypes.string
|
||||||
|
};
|
||||||
|
|
||||||
class GenderStep extends React.Component {
|
class GenderStep extends React.Component {
|
||||||
constructor (props) {
|
constructor (props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
@ -58,6 +94,18 @@ class GenderStep extends React.Component {
|
||||||
waiting={isSubmitting}
|
waiting={isSubmitting}
|
||||||
onSubmit={handleSubmit}
|
onSubmit={handleSubmit}
|
||||||
>
|
>
|
||||||
|
<GenderOption
|
||||||
|
label={this.props.intl.formatMessage({id: 'registration.genderOptionFemale'})}
|
||||||
|
selectedValue={values.gender}
|
||||||
|
value="Female"
|
||||||
|
onSetFieldValue={setFieldValue}
|
||||||
|
/>
|
||||||
|
<GenderOption
|
||||||
|
label={this.props.intl.formatMessage({id: 'registration.genderOptionMale'})}
|
||||||
|
selectedValue={values.gender}
|
||||||
|
value="Male"
|
||||||
|
onSetFieldValue={setFieldValue}
|
||||||
|
/>
|
||||||
<div
|
<div
|
||||||
className={classNames(
|
className={classNames(
|
||||||
'col-sm-9',
|
'col-sm-9',
|
||||||
|
@ -66,34 +114,6 @@ class GenderStep extends React.Component {
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{values.gender}
|
{values.gender}
|
||||||
<FormikRadioButton
|
|
||||||
buttonValue="he"
|
|
||||||
className={classNames(
|
|
||||||
'join-flow-radio',
|
|
||||||
{fail: errors.birth_month}
|
|
||||||
)}
|
|
||||||
label="He/him"
|
|
||||||
name="gender"
|
|
||||||
/>
|
|
||||||
<FormikRadioButton
|
|
||||||
buttonValue="she"
|
|
||||||
className={classNames(
|
|
||||||
'join-flow-radio',
|
|
||||||
{fail: errors.birth_month}
|
|
||||||
)}
|
|
||||||
label="She/her"
|
|
||||||
name="gender"
|
|
||||||
/>
|
|
||||||
<FormikRadioButton
|
|
||||||
buttonValue="other"
|
|
||||||
className={classNames(
|
|
||||||
'join-flow-radio',
|
|
||||||
{fail: errors.birth_month}
|
|
||||||
)}
|
|
||||||
label="other"
|
|
||||||
name="gender"
|
|
||||||
type="other"
|
|
||||||
/>
|
|
||||||
<FormikRadioButton
|
<FormikRadioButton
|
||||||
buttonValue="Prefer not to say"
|
buttonValue="Prefer not to say"
|
||||||
className={classNames(
|
className={classNames(
|
||||||
|
@ -103,40 +123,13 @@ class GenderStep extends React.Component {
|
||||||
label="Prefer not to say"
|
label="Prefer not to say"
|
||||||
name="gender"
|
name="gender"
|
||||||
/>
|
/>
|
||||||
{/*
|
|
||||||
// <Field
|
|
||||||
// component={RadioButton}
|
|
||||||
// name="genderRadioGroup"
|
|
||||||
// id="radioOption2"
|
|
||||||
// label="Or choose this one"
|
|
||||||
// />
|
|
||||||
// <FormikSelect
|
|
||||||
// className={classNames(
|
|
||||||
// 'join-flow-select',
|
|
||||||
// 'join-flow-select-month',
|
|
||||||
// {fail: errors.birth_month}
|
|
||||||
// )}
|
|
||||||
// error={errors.birth_month}
|
|
||||||
// id="birth_month"
|
|
||||||
// name="birth_month"
|
|
||||||
// options={birthMonthOptions}
|
|
||||||
// validate={this.validateSelect}
|
|
||||||
// validationClassName="validation-full-width-input"
|
|
||||||
// />
|
|
||||||
// <FormikSelect
|
|
||||||
// className={classNames(
|
|
||||||
// 'join-flow-select',
|
|
||||||
// {fail: errors.birth_year}
|
|
||||||
// )}
|
|
||||||
// error={errors.birth_year}
|
|
||||||
// id="birth_year"
|
|
||||||
// name="birth_year"
|
|
||||||
// options={birthYearOptions}
|
|
||||||
// validate={this.validateSelect}
|
|
||||||
// validationClassName="validation-full-width-input"
|
|
||||||
// />
|
|
||||||
// */}
|
|
||||||
</div>
|
</div>
|
||||||
|
<GenderOption
|
||||||
|
label={this.props.intl.formatMessage({id: 'registration.genderOptionPreferNotToSay'})}
|
||||||
|
selectedValue={values.gender}
|
||||||
|
value="Prefer not to say"
|
||||||
|
onSetFieldValue={setFieldValue}
|
||||||
|
/>
|
||||||
</JoinFlowStep>
|
</JoinFlowStep>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
|
|
Loading…
Reference in a new issue