src/components/download-form/download-form-simple.tsx (47 lines of code) (raw):

import React from 'react'; import { Form } from 'antd'; import { Option } from '@site/src/constant/download.data'; import FormSelect from '../form-select/form-select'; import { useForm } from 'antd/es/form/Form'; interface DownloadFormSimpleProps { versions: Option[]; } export default function DownloadFormSimple(props: DownloadFormSimpleProps) { const { versions } = props; const [form] = useForm(); const getVersionLinkByKeys = (version: string[]) => { const versionNode = versions.find(({ value }) => value === version[0]); const node = versionNode?.children.find(({ value }) => value === version[1]); return node?.source || null; }; return ( <div className="rounded-lg border border-b-[0.375rem] border-[#0065FD] px-8 pt-[3.125rem] pb-[2.1875rem]"> <div className="mb-8 text-xl font-medium">Downloads</div> <Form form={form} onFinish={val => { window.open(getVersionLinkByKeys(val.version), '_blank'); return; }} initialValues={{ version: [versions[0].value, versions[0].children[0].value], }} > <Form.Item name="version" rules={[{ required: true }]}> <FormSelect placeholder="Version" label="version" isCascader={true} displayRender={label => { return label.length > 0 ? label[label.length - 1] : ''; }} options={versions} /> </Form.Item> <Form.Item style={{ marginBottom: 0 }} colon={false}> <button type="submit" className="button-primary w-full text-lg"> Download </button> </Form.Item> </Form> </div> ); }