mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Update AccountDetailPanel to use modal form
This commit is contained in:
parent
c83feb1181
commit
cae3c505ab
@ -1,11 +1,26 @@
|
|||||||
import { Trans, t } from '@lingui/macro';
|
import { Trans, t } from '@lingui/macro';
|
||||||
import { Button, Group, Stack, Text, TextInput, Title } from '@mantine/core';
|
import {
|
||||||
|
ActionIcon,
|
||||||
|
Button,
|
||||||
|
Group,
|
||||||
|
Stack,
|
||||||
|
Table,
|
||||||
|
Text,
|
||||||
|
TextInput,
|
||||||
|
Title,
|
||||||
|
Tooltip
|
||||||
|
} from '@mantine/core';
|
||||||
import { useForm } from '@mantine/form';
|
import { useForm } from '@mantine/form';
|
||||||
import { useToggle } from '@mantine/hooks';
|
import { useToggle } from '@mantine/hooks';
|
||||||
|
import { IconEdit } from '@tabler/icons-react';
|
||||||
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import { api } from '../../../../App';
|
import { api } from '../../../../App';
|
||||||
import { EditButton } from '../../../../components/buttons/EditButton';
|
import { EditButton } from '../../../../components/buttons/EditButton';
|
||||||
|
import { ApiFormFieldSet } from '../../../../components/forms/fields/ApiFormField';
|
||||||
|
import { StylishText } from '../../../../components/items/StylishText';
|
||||||
import { ApiEndpoints } from '../../../../enums/ApiEndpoints';
|
import { ApiEndpoints } from '../../../../enums/ApiEndpoints';
|
||||||
|
import { useEditApiFormModal } from '../../../../hooks/UseForm';
|
||||||
import { apiUrl } from '../../../../states/ApiState';
|
import { apiUrl } from '../../../../states/ApiState';
|
||||||
import { useUserState } from '../../../../states/UserState';
|
import { useUserState } from '../../../../states/UserState';
|
||||||
|
|
||||||
@ -14,66 +29,57 @@ export function AccountDetailPanel() {
|
|||||||
state.user,
|
state.user,
|
||||||
state.fetchUserState
|
state.fetchUserState
|
||||||
]);
|
]);
|
||||||
const form = useForm({ initialValues: user });
|
|
||||||
const [editing, setEditing] = useToggle([false, true] as const);
|
const userFields: ApiFormFieldSet = useMemo(() => {
|
||||||
function SaveData(values: any) {
|
return {
|
||||||
// copy values over to break form rendering link
|
first_name: {},
|
||||||
const urlVals = { ...values };
|
last_name: {}
|
||||||
urlVals.is_active = true;
|
};
|
||||||
// send
|
}, []);
|
||||||
api
|
|
||||||
.put(apiUrl(ApiEndpoints.user_me), urlVals)
|
const editUser = useEditApiFormModal({
|
||||||
.then((res) => {
|
title: t`Edit User Information`,
|
||||||
if (res.status === 200) {
|
url: ApiEndpoints.user_me,
|
||||||
setEditing();
|
onFormSuccess: fetchUserState,
|
||||||
fetchUserState();
|
fields: userFields,
|
||||||
}
|
successMessage: t`User details updated`
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
console.error('ERR: Error saving user data');
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form onSubmit={form.onSubmit((values) => SaveData(values))}>
|
<>
|
||||||
<Group>
|
{editUser.modal}
|
||||||
<Title order={3}>
|
|
||||||
<Trans>Account Details</Trans>
|
|
||||||
</Title>
|
|
||||||
<EditButton setEditing={setEditing} editing={editing} />
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
{editing ? (
|
|
||||||
<Stack gap="xs">
|
<Stack gap="xs">
|
||||||
<TextInput
|
<Group justify="space-between">
|
||||||
label="first name"
|
<StylishText size="xl">
|
||||||
placeholder={t`First name`}
|
<Trans>User Details</Trans>
|
||||||
{...form.getInputProps('first_name')}
|
</StylishText>
|
||||||
/>
|
<Tooltip label={t`Edit User Information`}>
|
||||||
<TextInput
|
<ActionIcon variant="default" onClick={editUser.open}>
|
||||||
label="Last name"
|
<IconEdit />
|
||||||
placeholder={t`Last name`}
|
</ActionIcon>
|
||||||
{...form.getInputProps('last_name')}
|
</Tooltip>
|
||||||
/>
|
|
||||||
<Group justify="right" mt="md">
|
|
||||||
<Button type="submit">
|
|
||||||
<Trans>Submit</Trans>
|
|
||||||
</Button>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
<Table>
|
||||||
|
<Table.Tr>
|
||||||
|
<Table.Td>
|
||||||
|
<Trans>Username</Trans>
|
||||||
|
</Table.Td>
|
||||||
|
<Table.Td>{user?.username}</Table.Td>
|
||||||
|
</Table.Tr>
|
||||||
|
<Table.Tr>
|
||||||
|
<Table.Td>
|
||||||
|
<Trans>First Name</Trans>
|
||||||
|
</Table.Td>
|
||||||
|
<Table.Td>{user?.first_name}</Table.Td>
|
||||||
|
</Table.Tr>
|
||||||
|
<Table.Tr>
|
||||||
|
<Table.Td>
|
||||||
|
<Trans>Last Name</Trans>
|
||||||
|
</Table.Td>
|
||||||
|
<Table.Td>{user?.last_name}</Table.Td>
|
||||||
|
</Table.Tr>
|
||||||
|
</Table>
|
||||||
</Stack>
|
</Stack>
|
||||||
) : (
|
</>
|
||||||
<Stack gap="0">
|
|
||||||
<Text>
|
|
||||||
<Trans>First name: </Trans>
|
|
||||||
{form.values.first_name}
|
|
||||||
</Text>
|
|
||||||
<Text>
|
|
||||||
<Trans>Last name: </Trans>
|
|
||||||
{form.values.last_name}
|
|
||||||
</Text>
|
|
||||||
</Stack>
|
|
||||||
)}
|
|
||||||
</Group>
|
|
||||||
</form>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user