import React, { useState } from 'react'; import { message, Button, Input, Modal, Typography, Form, Collapse } from 'antd'; import { useCreateGroupMutation } from '../../../graphql/group.generated'; import { useEnterKeyListener } from '../../shared/useEnterKeyListener'; type Props = { visible: boolean; onClose: () => void; onCreate: (name: string, description: string) => void; }; export default function CreateGroupModal({ visible, onClose, onCreate }: Props) { const [stagedName, setStagedName] = useState(''); const [stagedDescription, setStagedDescription] = useState(''); const [stagedId, setStagedId] = useState(undefined); const [createGroupMutation] = useCreateGroupMutation(); const onCreateGroup = () => { createGroupMutation({ variables: { input: { id: stagedId, name: stagedName, description: stagedDescription, }, }, }) .catch((e) => { message.destroy(); message.error({ content: `Failed to create group!: \n ${e.message || ''}`, duration: 3 }); }) .finally(() => { message.success({ content: `Created group!`, duration: 3, }); onCreate(stagedName, stagedDescription); setStagedName(''); setStagedDescription(''); }); onClose(); }; // Handle the Enter press useEnterKeyListener({ querySelectorToExecuteClick: '#createGroupButton', }); return ( } >
Name}> Give your new group a name. setStagedName(event.target.value)} /> Description}> An optional description for your new group. setStagedDescription(event.target.value)} /> Advanced} key="1"> Group Id}> By default, a random UUID will be generated to uniquely identify this group. If you'd like to provide a custom id instead to more easily keep track of this group, you may provide it here. Be careful, you cannot easily change the group id after creation. setStagedId(event.target.value)} />
); }