0

I am trying to create a register page where a user can add a profile picture as well as a background picture to their profile. I have installed the PrimeReact themes and templates to my node modules. However, the avatar doesn't want to fit it to where it can make a background image avatar. Instead, it just fits it as a circle just like the profile picture avatar instead of a rectangle fit as a background image avatar.

import {useState, useEffect } from 'react'
import Avatar from 'react-avatar-edit'
import {Dialog} from 'primereact/dialog'
import {InputText} from 'primereact/inputtext'




const initialState = {
  company: '',
  email: '',
  password: '',
  isMember: true,
}

  const Register = () => {
  
  const [imagecrop, setimagecrop] = useState(false);
  const [image, setImage] = useState("");
  const [src, setsrc] = useState(false);
  const [profile, setProfile] = useState([]);
  const [pview, setpview] = useState(false);
  
  const profileFinal = profile.map((item) => item.pview);

  const onClose = () => {
    setpview(null);
  };

  const onCrop = (view) => {
    setpview(view);
  };

  const saveCropImage = () => {
    setProfile([...profile, { pview }]);
    setimagecrop(false);
  }

  const [values, setValues] = useState(initialState)

  // global state and useNavigate
  const handleChange = (e) => {
    console.log(e.target)
  }

  const onSubmit = (e) => {
    e.preventDefault()
    console.log(e.target)
  }

    
      return (
        <body class="page-template-default page page-id-13">
        <header class="site-header">
              <div class="container">
              <h1 class="school-logo-text float-left"><a href="/landing"><strong>Direct</strong> Connection</a></h1>
                         <div class="site-header__util">
                                        </div>
                </div>
                </header>

    <div class="page-banner">
     <div class="page-banner__bg-image" style={ { backgroundImage: "url('connection.jpg')" } }></div>
      <div class="page-banner__content container container--narrow">
        <h1 class="page-banner__title">Add Your Company</h1>
        <div class="page-banner__intro">
            <p></p>
        </div>
      </div>
    </div>

<div class="container container--narrow page-section">
  <h2 class="headline headline--tiny">Want to join and connect with companies? Sign up and get your company out there:</h2>
  
    <label class="profile-pic">Profile Photo:</label>
    <div class="profile-img">
      
      <Dialog 
        visible={imagecrop}
        header={() => (
          <p htmlFor="" class="text 2xl font-semibold  textColor">
          </p>
        )}
        onHide={() => setimagecrop(false)}
        ></Dialog>
      <div class="confirmation-content flex  flex-column align-items-center">
        <Avatar
        width={500}
        height={400}
        onCrop={onCrop}
        onClose={onClose}
        src={src}
        shadingColor={"#474649"}
        backgroundColor={"#474649"}
        ></Avatar>
        <div class="flex flex-column align-items-center mt-5 w-12">
          <div class="flex justify-content-around w-12 mt-4">
          </div>
        </div>
        <InputText 
        type="file"
        accept='/image/*'
        style={{ display: "none" }}
        onChange={(event)=>{
          const file = event.target.files[0];
          if(file && file.type.substring(0,5)==="image"){
            setImage(file);
          }else{
            setImage(null)
          }
        }}
        />
      </div>
      </div>
      
      <script src="profile-pic.js"></script>
      <label class="profile-back">Background Photo:</label>
      <div>
      <Dialog 
        visible={imagecrop}
        header={() => (
          <p htmlFor="" class="text 2xl font-semibold  textColor">
          </p>
        )}
        onHide={() => setimagecrop(false)}
        ></Dialog>
        <Avatar
        width={1000}
        height={400}
        onCrop={onCrop}
        onClose={onClose}
        src={src}
        shadingColor={"#474649"}
        backgroundColor={"#474649"}
        ></Avatar>
      <InputText 
        type="file"
        accept='/image/*'
        style={{ display: "none" }}
        onChange={(event)=>{
          const file = event.target.files[0];
          if(file && file.type.substring(0,5)==="image"){
            setImage(file);
          }else{
            setImage(null)
          }
        }}
        />
      <img class="background-image" src=""></img>
      </div>
      <div class="company-info-container page-section">
    <label class="company-name">Company Name</label>
      <div class="company-input">
        <input text="headline headline--input" placeholder="Enter Company"></input>
      </div>
    <label class="company-email">Email</label>
          <div class="email-input">
          <input text="headline headline--input" placeholder="Enter Email"></input>
          </div>
          <label class="company-address">Company Address</label>
          <div class="address-input">
          <input text="headline headline--input" placeholder="Enter Address"></input>
          </div>
          <label class="company-city">City</label>
          <div class="city-input">
          <input text="headline headline--input" placeholder="Enter City"></input>
          </div>
          <label class="company-zip">Zip Code</label>
          <div class="zip-input">
          <input text="headline headline--input" placeholder="Enter Zip"></input>
          </div>
          <label class="company-password">Password</label>
          <div class="password-input">
          <input text="headline headline--input" placeholder="Enter Password"></input>
          </div>
          <label class="company-password">Retype Password</label>
          <div class="reword-input">
          <input text="headline headline--input" placeholder="Re Password"></input>
          </div>
          <label class="company-description">Tell us about your company and what you do!</label>
          <div class="description-input">
          <textarea rows="5" cols="80" id="TITLE" text="headline headline--input" placeholder="Description"></textarea>
          </div>

          </div>
          


          <button type="button" class="btn btn--large btn--orange push-right">Add Your Company</button>
        </div>  
        
     

    <footer class="site-footer">
                  <div class="site-footer__inner container container--narrow">
                    <div class="group">
                      <div class="site-footer__col-one">
                        <h1 class="school-logo-text school-logo-text--alt-color">
                          <a href="/landing"><strong>Direct</strong> Connection</a>
                        </h1>
                        <p><a class="site-footer__link" href="index.html">706-263-0175</a></p>
                      </div>
                    </div>
                  </div>
            </footer>

</body>
    )
}


export default Register

I have tried looking at how primereact avatars can reshape the circle to rectangle to fit the image to a background image but I don't see many ways of how it can be reshaped.

0 Answers0