Advertisement
danine1

Fragment 1 - EmployeeHeader

Mar 12th, 2018
299
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. import {
  6.   Input,
  7.   Select,
  8.   Button,
  9.   Avatar,
  10. } from "@ematix/tesseract-component-library";
  11. import { ContentHeader } from "@ematix/components";
  12.  
  13. import cls from "./employeeHeader.scss";
  14. @translate("EmployeeHeader")
  15. export default class EmployeeHeader extends React.PureComponent {
  16.   static propTypes = {
  17.     position: PropTypes.string,
  18.     status: PropTypes.string,
  19.     phoneNumber: PropTypes.string,
  20.     email: PropTypes.string,
  21.     first_name: PropTypes.string,
  22.     last_name: PropTypes.string,
  23.     middle_name: PropTypes.string,
  24.     t: PropTypes.func.isRequired,
  25.   };
  26.   static defaultProps = {
  27.     position: null,
  28.     status: null,
  29.     phoneNumber: null,
  30.     email: null,
  31.     first_name: null,
  32.     last_name: null,
  33.     middle_name: null,
  34.   };
  35.   state = {
  36.     isEdit: false,
  37.   };
  38.  
  39.   onClickSetEdit = () => {
  40.     this.setState({
  41.       isEdit: true,
  42.     });
  43.   };
  44.   onClickFinishEdit = () => {
  45.     // __TODO do async stuff
  46.     this.setState({
  47.       isEdit: false,
  48.     });
  49.   };
  50.  
  51.   render() {
  52.     const {
  53.       position,
  54.       status,
  55.       phoneNumber,
  56.       email,
  57.       first_name,
  58.       last_name,
  59.       middle_name,
  60.       t,
  61.     } = this.props;
  62.  
  63.     if (this.state.isEdit) {
  64.       return (
  65.         <ContentHeader className={cls.headerEditModeContainer}>
  66.           <div className={cls.clearIcon}>
  67.             <Button icon="clear" clear onClick={this.onClickFinishEdit} />
  68.           </div>
  69.           <Input
  70.             label={t("First Name")}
  71.             name="first_name"
  72.             defaultValue={first_name}
  73.           />
  74.           <Input
  75.             label={t("Middle Name")}
  76.             name="middleName"
  77.             defaultValue={middle_name}
  78.           />
  79.           <Input
  80.             label={t("Surname")}
  81.             name="lastName"
  82.             defaultValue={last_name}
  83.           />
  84.           <Select
  85.             className={cls.selectStatus}
  86.             name="status"
  87.             defaultValue={status}
  88.             label={t("Employee Status")}
  89.             searchable={false}
  90.             options={[
  91.               { value: 1, label: "hello" },
  92.               { value: 2, label: "dog" },
  93.               { value: 3, label: "here" },
  94.             ]}
  95.           />
  96.           <Select
  97.             className={cls.SelectPosition}
  98.             name="position"
  99.             defaultValue={position}
  100.             label={t("Position")}
  101.             searchable={false}
  102.             options={[
  103.               { value: 1, label: "hello" },
  104.               { value: 2, label: "dog" },
  105.               { value: 3, label: "here" },
  106.             ]}
  107.           />
  108.           <Select
  109.             className={cls.phonePreference}
  110.             name="phonePrefrence"
  111.             defaultValue={phoneNumber}
  112.             label={t("Phone Number Preference")}
  113.             searchable={false}
  114.             options={[
  115.               { value: 1, label: "hello" },
  116.               { value: 2, label: "dog" },
  117.               { value: 3, label: "here" },
  118.             ]}
  119.           />
  120.           <Select
  121.             className={cls.emailPreference}
  122.             name="emailPreference"
  123.             defaultValue={email}
  124.             label={t("Email Preference")}
  125.             searchable={false}
  126.             options={[
  127.               { value: 1, label: "hello" },
  128.               { value: 2, label: "dog" },
  129.               { value: 3, label: "here" },
  130.             ]}
  131.           />
  132.         </ContentHeader>
  133.       );
  134.     }
  135.  
  136.     return (
  137.       <ContentHeader className={cls.contentHeader}>
  138.         <div className={cls.nameContainer}>
  139.           <Avatar className={cls.avatar} alt="">
  140.             {first_name[0]}
  141.             {last_name[0]}
  142.           </Avatar>
  143.           <div className={cls.nameContent}>
  144.             <h2 className={cls.name}>{`${first_name} ${last_name}`}</h2>
  145.             <p className={cls.position}>{position}</p>
  146.           </div>
  147.         </div>
  148.         <div className={cls.details}>
  149.           <span className={cls.phoneNumber}>{phoneNumber}</span>
  150.           <a href={`mailto:${email}`} className={cls.email}>
  151.             {email}
  152.           </a>
  153.           <span className={cls.status}>
  154.             {status}
  155.             <span className={cls.circle} />
  156.           </span>
  157.           <Button
  158.             onClick={this.onClickSetEdit}
  159.             clear
  160.             icon="mode_edit"
  161.             className={cls.editIcon}
  162.           />
  163.         </div>
  164.       </ContentHeader>
  165.     );
  166.   }
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement