import React, { forwardRef } from 'react'; import PropTypes from 'prop-types'; import request from 'vj/utils/request'; import type { ProblemDoc } from 'hydrooj/src/interface'; import AutoComplete, { AutoCompleteHandle, AutoCompleteProps } from './AutoComplete'; const ProblemSelectAutoComplete = forwardRef, AutoCompleteProps>((props, ref) => ( ref={ref as any} cacheKey={`problem-${UiContext.domainId}`} queryItems={(query) => request.get(`/d/${UiContext.domainId}/problem/list`, { prefix: query })} // FIXME fetch items fetchItems={(ids) => ids.map((id) => ({ docId: id, pid: id, title: id }) as any)} itemText={(pdoc) => `${`${pdoc.docId} ${pdoc.title}`}`} itemKey={(pdoc) => `${pdoc.docId || pdoc}`} renderItem={(pdoc) => (
{pdoc.pid ? `${pdoc.pid} ` : ''}{pdoc.title}
ID = {pdoc.docId}
)} {...props} /> )); ProblemSelectAutoComplete.propTypes = { width: PropTypes.string, height: PropTypes.string, listStyle: PropTypes.object, onChange: PropTypes.func.isRequired, multi: PropTypes.bool, selectedKeys: PropTypes.arrayOf(PropTypes.string), allowEmptyQuery: PropTypes.bool, freeSolo: PropTypes.bool, freeSoloConverter: PropTypes.func, }; ProblemSelectAutoComplete.defaultProps = { width: '100%', height: 'auto', listStyle: {}, multi: false, selectedKeys: [], allowEmptyQuery: false, freeSolo: false, freeSoloConverter: (input) => input, }; ProblemSelectAutoComplete.displayName = 'ProblemSelectAutoComplete'; export default ProblemSelectAutoComplete;