mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
import {
|
|
Button,
|
|
Form,
|
|
FormRow,
|
|
FormButtons,
|
|
FormInput,
|
|
SubmitButton,
|
|
TextField,
|
|
} from 'react-basics';
|
|
import { useApi } from 'components/hooks';
|
|
import { useMessages } from 'components/hooks';
|
|
import { useContext } from 'react';
|
|
import SettingsContext from '../../SettingsContext';
|
|
|
|
const CONFIRM_VALUE = 'DELETE';
|
|
|
|
export function WebsiteDeleteForm({
|
|
websiteId,
|
|
onSave,
|
|
onClose,
|
|
}: {
|
|
websiteId: string;
|
|
onSave?: () => void;
|
|
onClose?: () => void;
|
|
}) {
|
|
const { formatMessage, labels, messages, FormattedMessage } = useMessages();
|
|
const { websitesUrl } = useContext(SettingsContext);
|
|
const { del, useMutation } = useApi();
|
|
const { mutate, error } = useMutation({
|
|
mutationFn: (data: any) => del(`${websitesUrl}/${websiteId}`, data),
|
|
});
|
|
|
|
const handleSubmit = async (data: any) => {
|
|
mutate(data, {
|
|
onSuccess: async () => {
|
|
onSave();
|
|
onClose();
|
|
},
|
|
});
|
|
};
|
|
|
|
return (
|
|
<Form onSubmit={handleSubmit} error={error}>
|
|
<p>
|
|
<FormattedMessage
|
|
{...messages.actionConfirmation}
|
|
values={{ confirmation: <b>{CONFIRM_VALUE}</b> }}
|
|
/>
|
|
</p>
|
|
<FormRow label={formatMessage(labels.confirm)}>
|
|
<FormInput name="confirmation" rules={{ validate: value => value === CONFIRM_VALUE }}>
|
|
<TextField autoComplete="off" />
|
|
</FormInput>
|
|
</FormRow>
|
|
<FormButtons flex>
|
|
<SubmitButton variant="danger">{formatMessage(labels.delete)}</SubmitButton>
|
|
<Button onClick={onClose}>{formatMessage(labels.cancel)}</Button>
|
|
</FormButtons>
|
|
</Form>
|
|
);
|
|
}
|
|
|
|
export default WebsiteDeleteForm;
|