import CheckboxField from '@/components/seal-form/checkbox-field'; import SealInput from '@/components/seal-form/seal-input'; import UploadAudio from '@/components/upload-audio'; import { convertFileToBase64 } from '@/utils/load-audio-file'; import { CloseCircleFilled } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Form } from 'antd'; import React from 'react'; import styled from 'styled-components'; import { useFormContext } from '../config/form-context'; const SuffixWrapper = styled.div.attrs({ className: 'suffix-wrapper' })` display: flex; align-items: center; .icon { display: none; font-size: 12px; color: var(--ant-color-text-quaternary); cursor: pointer; &:hover { color: var(--ant-color-text-tertiary); } } `; const Container = styled.div` &:hover { .suffix-wrapper { .icon { display: block; } } } `; export const RefAudioFormItem: React.FC = () => { const { meta, onValuesChange } = useFormContext(); const form = Form.useFormInstance(); const intl = useIntl(); const [fileName, setFileName] = React.useState(''); // handle upload audio file, transfer to a base64 url const handleUploadChange = async (data: { file: any; fileList: any }) => { const { file } = data; const base64 = await convertFileToBase64(file); form.setFieldsValue({ ref_audio: base64 }); setFileName(file.name); onValuesChange?.( { ref_audio: base64 }, { ...form.getFieldsValue(), ref_audio: base64 } ); }; const handleClear = () => { form.setFieldsValue({ ref_audio: '' }); setFileName(''); onValuesChange?.( { ref_audio: '' }, { ...form.getFieldsValue(), ref_audio: '' } ); }; return ( <> ({ value: fileName ? fileName : value })} > {fileName ? ( ) : null} } description={intl.formatMessage({ id: 'playground.params.refAudio.tips' })} label={intl.formatMessage({ id: 'playground.params.refAudio' })} > ); };