'How can I close a drawer by clicking outside in typescript component?
import React, {useState} from 'react';
import { Form, Input, Button, Select, DatePicker} from 'antd';
import moment from "moment";
export type EditUserProps = {
data: {};
visible: '';
setVisible: ()=>void;
onUpdate: () => void;
};
const { Option } = Select;
interface Item {
id: string;
name: string;
phoneNumber: string;
email: string;
}
interface EditableCellProps extends React.HTMLAttributes<HTMLElement> {
editing: boolean;
dataIndex: string;
title: any;
inputType: 'number' | 'text' | 'select' | 'date' | 'selectPlan' | 'selectLesson' | 'selectStatus' | 'selectCallStatus' | 'selectDownPayment' | 'selectCourseFrequency' | 'selectSubscriptionAmount' | 'selectSubscriptionMonth' | 'selectTimings' | 'selectSubscriptionAmount' | 'selectSubscriptionType' | 'selectPRM' | 'selectWhatsappSent' | 'selectLSQUsers';
record: Item;
index: number;
children: React.ReactNode;
}
const Classdetailsedit: React.FC<EditUserProps> = (props) => {
const [formData, setFormData] = useState({
firstName: '',
lastName: '',
phoneNumber: '',
email: '',
})
const onFinish = (values: any) => {
console.log('Success:', values);
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
const [tempDataView, setTempDataView] = useState({});
const [startdate, setstartdate] = useState("");
const [selectUserType, setSelectUserType] = useState('')
const [visible, setVisible] = useState(false);
function callback(key: any) {
console.log(key);
}
function handleChange(value: any) {
console.log(`selected ${value}`);
}
return (
<Form
name="edittab"
labelCol={{
span: 8,
}}
wrapperCol={{
span: 16,
}}
initialValues={{
remember: true,
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
autoComplete="off"
>
<Form.Item
name="classtype"
label="Class Type"
rules={[
{
required: true,
message: 'Please Select Class Type',
},
]}>
<Select
>
<Option value="kids">Kids</Option>
<Option value="adults">Adults</Option>
</Select>
</Form.Item>
<Form.Item
name="course"
label="Course"
rules={[
{
required: true,
message: 'Please Select Course',
},
]}>
<Select
>
<Option value="diseg">Dise : Group Class</Option>
<Option value="dise1">Dise 1:1</Option>
<Option value="ieltsg">IELTS : Group Class</Option>
<Option value="ielts1">IELTS 1:1</Option>
</Select>
</Form.Item>
<Form.Item
name="startinglesson"
label="Starting Lesson"
rules={[
{
required: true,
message: 'Please Select Starting Lesson',
},
]}>
<Select
>
<Option value="lesson1">Lesson 1</Option>
<Option value="lesson31">Lesson 31</Option>
<Option value="lesson61">Lesson 61</Option>
<Option value="lesson121">Lesson 121</Option>
<Option value="lesson201">Lesson 201</Option>
<Option value="lesson221">Lesson 221</Option>
<Option value="lesson240">Lesson 240</Option>
<Option value="lesson301">Lesson 301</Option>
</Select>
</Form.Item>
<Form.Item
name="coursefrequency"
label="Course Frequency"
rules={[
{
required: true,
message: 'Please Select Course Frequency',
},
]}>
<Select
>
<Option value="mwf">MWF</Option>
<Option value="tts">TTS</Option>
<Option value="ss">SS</Option>
<Option value="mtwtf">MTWTF</Option>
</Select>
</Form.Item>
<Form.Item
label="Timings"
name="timings"
rules={[
{
required: true,
message: 'Please enter Timings',
},
]}
>
<Input />
</Form.Item>
<Form.Item name="startdate"
label="Start Date"
rules={[
{
required: true,
message: 'Please select Date Of Birth',
},
]}
>
{
formData.startdate === null ?
<DatePicker
format="YYYY/MM/DD"
style={{ width: "365px" }}
onChange={(date, dateString) => {
setstartdate(dateString);
}}
placeholder={"Start Date"}
/>
:
<DatePicker
defaultValue={moment(`${tempDataView.startdate}`, "YYYY/MM/DD")}
format="YYYY/MM/DD"
style={{ width: "370px" }}
onChange={(date, dateString) => {
setstartdate(dateString);
}}
placeholder={"Date Of Birth"}
/>
}
</Form.Item>
<Form.Item
label="Address"
name="address"
rules={[
{
required: true,
message: 'Please enter Address',
},
]}
>
<Input />
</Form.Item>
<Form.Item
wrapperCol={{
offset: 8,
span: 16,
}}
>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
);
};
export default Classdetailsedit;
in this drawer I tried clicking on the 'X' present in drawer but it's not working I would like a solution for that as well This form component is imported into a Tab Component and that tab component is imported to a button which is on the page so when user clicks on the button a drawer opens up with multiple tabs and a submit and X button on top but the X button doesn't work. I'm a newbie please let me know how I can fix this.
It's built on react, typescript and AntD
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
