import React, { useState } from 'react'; import styled from 'styled-components'; import { message, Button, Input, Modal, Typography, Form, Collapse, Tag } from 'antd'; import { useCreateDomainMutation } from '../../graphql/domain.generated'; const SuggestedNamesGroup = styled.div` margin-top: 12px; `; const ClickableTag = styled(Tag)` :hover { cursor: pointer; } `; type Props = { visible: boolean; onClose: () => void; onCreate: (id: string | undefined, name: string, description: string) => void; }; const SUGGESTED_DOMAIN_NAMES = ['Engineering', 'Marketing', 'Sales', 'Product']; export default function CreateDomainModal({ visible, onClose, onCreate }: Props) { const [stagedName, setStagedName] = useState(''); const [stagedDescription, setStagedDescription] = useState(''); const [stagedId, setStagedId] = useState(undefined); const [createDomainMutation] = useCreateDomainMutation(); const onCreateDomain = () => { createDomainMutation({ variables: { input: { id: stagedId, name: stagedName, description: stagedDescription, }, }, }) .catch((e) => { message.destroy(); message.error({ content: `Failed to create Domain!: \n ${e.message || ''}`, duration: 3 }); }) .finally(() => { message.success({ content: `Created domain!`, duration: 3, }); onCreate(stagedId, stagedName, stagedDescription); setStagedName(''); setStagedDescription(''); setStagedId(undefined); }); onClose(); }; return ( } >
Name}> Give your new Domain a name. setStagedName(event.target.value)} /> {SUGGESTED_DOMAIN_NAMES.map((name) => { return setStagedName(name)}>{name}; })} Description}> An optional description for your new domain. You can change this later. setStagedDescription(event.target.value)} /> Advanced} key="1"> Domain Id}> By default, a random UUID will be generated to uniquely identify this domain. If you'd like to provide a custom id instead to more easily keep track of this domain, you may provide it here. Be careful, you cannot easily change the domain id after creation. setStagedId(event.target.value)} />
); }