Spaces:
Sleeping
Sleeping
import { useEffect, useState } from 'react'; | |
import { | |
Dialog, | |
DialogPanel, | |
TextInput, | |
Button, | |
Select, | |
SelectItem, | |
Text, | |
Title, | |
Subtitle, | |
} from '@tremor/react'; | |
import { | |
Button as Button2, | |
Modal, | |
Form, | |
Input, | |
Select as Select2, | |
message, | |
InputNumber, | |
} from "antd"; | |
import NumericalInput from "./shared/numerical_input"; | |
interface EditUserModalProps { | |
visible: boolean; | |
possibleUIRoles: null | Record<string, Record<string, string>>; | |
onCancel: () => void; | |
user: any; | |
onSubmit: (data: any) => void; | |
} | |
const EditUserModal: React.FC<EditUserModalProps> = ({ visible, possibleUIRoles, onCancel, user, onSubmit }) => { | |
const [editedUser, setEditedUser] = useState(user); | |
const [form] = Form.useForm(); | |
useEffect(() => { | |
form.resetFields(); | |
}, [user]); | |
const handleCancel = async () => { | |
form.resetFields(); | |
onCancel(); | |
}; | |
const handleEditSubmit = async (formValues: Record<string, any>) => { | |
// Call API to update team with teamId and values | |
onSubmit(formValues); | |
form.resetFields(); | |
onCancel(); | |
}; | |
if (!user) { | |
return null; | |
} | |
return ( | |
<Modal | |
visible={visible} | |
onCancel={handleCancel} | |
footer={null} | |
title={"Edit User " + user.user_id} | |
width={1000} | |
> | |
<Form | |
form={form} | |
onFinish={handleEditSubmit} | |
initialValues={user} // Pass initial values here | |
labelCol={{ span: 8 }} | |
wrapperCol={{ span: 16 }} | |
labelAlign="left" | |
> | |
<> | |
<Form.Item | |
className="mt-8" | |
label="User Email" | |
tooltip="Email of the User" | |
name="user_email"> | |
<TextInput /> | |
</Form.Item> | |
<Form.Item | |
label="user_id" | |
name="user_id" | |
hidden={true} | |
> | |
<TextInput /> | |
</Form.Item> | |
<Form.Item | |
label="User Role" | |
name="user_role" | |
> | |
<Select2> | |
{possibleUIRoles && | |
Object.entries(possibleUIRoles).map(([role, { ui_label, description }]) => ( | |
<SelectItem key={role} value={role} title={ui_label}> | |
<div className='flex'> | |
{ui_label} <p className="ml-2" style={{ color: "gray", fontSize: "12px" }}>{description}</p> | |
</div> | |
</SelectItem> | |
))} | |
</Select2> | |
</Form.Item> | |
<Form.Item | |
label="Spend (USD)" | |
name="spend" | |
tooltip="(float) - Spend of all LLM calls completed by this user" | |
help="Across all keys (including keys with team_id)." | |
> | |
<InputNumber min={0} step={0.01} /> | |
</Form.Item> | |
<Form.Item | |
label="User Budget (USD)" | |
name="max_budget" | |
tooltip="(float) - Maximum budget of this user" | |
help="Maximum budget of this user." | |
> | |
<NumericalInput min={0} step={0.01} /> | |
</Form.Item> | |
<div style={{ textAlign: "right", marginTop: "10px" }}> | |
<Button2 htmlType="submit">Save</Button2> | |
</div> | |
</> | |
</Form> | |
</Modal> | |
); | |
}; | |
export default EditUserModal; |