client/app/pages/users/components/EditableUserProfile.jsx (32 lines of code) (raw):
import React, { useState, useEffect } from "react";
import { UserProfile } from "@/components/proptypes";
import UserInfoForm from "./UserInfoForm";
import ApiKeyForm from "./ApiKeyForm";
import PasswordForm from "./PasswordForm";
import ToggleUserForm from "./ToggleUserForm";
export default function EditableUserProfile(props) {
const [user, setUser] = useState(props.user);
useEffect(() => {
setUser(props.user);
}, [props.user]);
return (
<div className="col-md-4 col-md-offset-4">
<img alt="Profile" src={user.profileImageUrl} className="profile__image" width="40" />
<h3 className="profile__h3">{user.name}</h3>
<hr />
<UserInfoForm user={user} onChange={setUser} />
{!user.isDisabled && (
<React.Fragment>
<ApiKeyForm user={user} onChange={setUser} />
<hr />
<PasswordForm user={user} />
</React.Fragment>
)}
<hr />
<ToggleUserForm user={user} onChange={setUser} />
</div>
);
}
EditableUserProfile.propTypes = {
user: UserProfile.isRequired,
};