Advertisement
danine1

Add toggle to forms

Mar 8th, 2018
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* eslint-disable camelcase */
  2. import React from "react";
  3. import PropTypes from "prop-types";
  4. import { translate } from "react-i18next";
  5.  
  6. import {
  7.   Form,
  8.   Input,
  9.   Checkbox,
  10.   DynamicInputField,
  11.   Select,
  12. } from "@ematix/tesseract-component-library";
  13.  
  14. import cls from "./salary.scss";
  15. import TwoColumnWrapper from "../../TwoColumnWrapper";
  16.  
  17. class EditMode extends React.PureComponent {
  18.   static propTypes = {
  19.     name: PropTypes.string,
  20.     defaultValues: PropTypes.instanceOf(Object),
  21.     t: PropTypes.func.isRequired,
  22.   };
  23.   static defaultProps = {
  24.     name: "salary_form",
  25.     defaultValues: {},
  26.   };
  27.  
  28.   constructor(props, ...args) {
  29.     super(props, ...args);
  30.  
  31.     const {
  32.       defaultValues: { salary_name, email_employment, name_employment },
  33.     } = props;
  34.  
  35.     let isEmploymentAgency = false;
  36.     if (salary_name || email_employment || name_employment) {
  37.       isEmploymentAgency = true;
  38.     }
  39.  
  40.     this.state = {
  41.       isEmploymentAgency,
  42.     };
  43.   }
  44.  
  45.   handleToggleEmploymentAgency = () => {
  46.     const { isEmploymentAgency } = this.state;
  47.     this.setState({
  48.       isEmploymentAgency: !isEmploymentAgency,
  49.     });
  50.   };
  51.  
  52.   render() {
  53.     const { t, name, defaultValues } = this.props;
  54.     const { isEmploymentAgency } = this.state;
  55.     const getName = inputName => `${name || "salary_form"}[${inputName}]`;
  56.     return (
  57.       <Form onSubmit={() => {}}>
  58.         <TwoColumnWrapper>
  59.           <div className={cls.gridColLeft}>
  60.             <div className={cls.salaryPart}>
  61.               <Input label={t("Gross Salary")} className={cls.salary} />
  62.               <Select name="select" label={t("Currency")} options={[]} />
  63.             </div>
  64.             <DynamicInputField
  65.               name="fields"
  66.               label={t("Financial Bonuses")}
  67.               className={cls.bonuses}
  68.             />
  69.             <DynamicInputField
  70.               name="fields"
  71.               label={t("Benefits")}
  72.               className={cls.benefits}
  73.             />
  74.           </div>
  75.           <div className={cls.gridColRight}>
  76.             <Select
  77.               name="select"
  78.               label={t("Pension")}
  79.               options={[]}
  80.               className={cls.pension}
  81.             />
  82.             <div className={cls.checkBox}>
  83.               <Checkbox
  84.                 label={t("Employment Agency")}
  85.                 name="employmentAgency"
  86.                 id="employmentAgency"
  87.                 onChange={this.handleToggleEmploymentAgency}
  88.                 defaultChecked={isEmploymentAgency}
  89.               />
  90.             </div>
  91.             {isEmploymentAgency && (
  92.               <div>
  93.                 <Input
  94.                   label={t("Name")}
  95.                   className={cls.name}
  96.                   name={getName("NAME")}
  97.                   defaultValue={defaultValues.name_employment}
  98.                 />
  99.                 <Input
  100.                   label={t("Email")}
  101.                   className={cls.email}
  102.                   name={getName("EMAIL")}
  103.                   defaultValue={defaultValues.email_employment}
  104.                 />
  105.               </div>
  106.             )}
  107.           </div>
  108.         </TwoColumnWrapper>
  109.       </Form>
  110.     );
  111.   }
  112. }
  113.  
  114. export default translate("EditMode")(EditMode);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement