forgeplus-react/src/forge/Component/SearchUser.jsx

67 lines
1.6 KiB
React
Raw Normal View History

2021-02-01 15:20:38 +08:00
import React , { useState } from 'react';
2020-06-24 10:10:47 +08:00
import { AutoComplete } from 'antd';
import { getImageUrl } from "educoder";
import axios from 'axios';
2021-02-01 15:20:38 +08:00
2020-06-24 10:10:47 +08:00
const Option = AutoComplete.Option;
export default ({ getUser })=>{
const [ searchKey , setSearchKey ] = useState(undefined);
const [ userDataSource , setUserDataSource ] = useState(undefined);
function getUserList(e){
const url = `/users/list.json`;
axios.get(url, {
params: {
search: e,
},
})
.then((result) => {
if (result) {
setUserDataSource(result.data.users);
}
})
.catch((error) => {
console.log(error);
});
};
function changeInputUser(value){
setSearchKey(value);
getUserList(value);
}
function selectInputUser(id, option){
2021-02-01 15:20:38 +08:00
setSearchKey(option.props.value);
getUserList(option.props.value);
2020-06-24 10:10:47 +08:00
getUser && getUser(id);
}
const source =
userDataSource && userDataSource.map((item, key) => {
return (
2021-02-01 15:20:38 +08:00
<Option key={key} value={`${item.login}`}>
2020-06-24 10:10:47 +08:00
<img
className="user_img radius"
width="28"
height="28"
src={getImageUrl(`/${item && item.image_url}`)}
2020-06-24 10:10:47 +08:00
alt=""
/>
<span className="ml10" style={{ "vertical-align": "middle" }}>
{item.username}
<span className="color-grey ml10">({item.login})</span>
</span>
</Option>
);
});
return(
<AutoComplete
dataSource={source}
value={searchKey}
style={{ width: 300 }}
onChange={changeInputUser}
onSelect={selectInputUser}
placeholder="搜索需要添加的用户..."
/>
)
}