import React from 'react'; import { connect, mapProps, mapReadPretty } from '@formily/react'; import { Select, Tag } from 'antd'; import { LoadingOutlined } from '@ant-design/icons'; import Drawer from '../../components/Drawer'; import { useRequest } from 'ahooks'; import { isArr, isValid } from '@formily/shared'; function getFieldName(field: any) { if (typeof field === 'string') { return field; } if (typeof field === 'object') { return field.name; } } export const DrawerSelect = connect( (props) => { const { value, dataRequest, labelField: lf, valueField: vf, renderTag, renderOptions, onChange, ...others } = props; const labelField = getFieldName(lf); const valueField = getFieldName(vf); const getValues = () => { if (!isValid(value)) { return []; } return isArr(value) ? value : [value]; } const getOptionValue = () => { const values = getValues().map((item) => { return { value: item[valueField], label: item[labelField], }; }); if (props.mode === 'multiple' || props.mode === 'tags') { return values; } return values.length ? values[0] : null; }; return (