File.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React, {Component} from "react";
  2. import {FileTextTwoTone, FileTwoTone} from "@ant-design/icons";
  3. import './File.less'
  4. import {Dropdown, Menu} from "antd";
  5. class File extends Component {
  6. state = {
  7. isOver: false
  8. }
  9. onMouseOver = () => {
  10. this.setState({
  11. isOver: true
  12. })
  13. }
  14. onMouseOut = () => {
  15. this.setState({
  16. isOver: false
  17. })
  18. }
  19. render() {
  20. let {isOver} = this.state
  21. const ele = this.props.ele
  22. const menu = (
  23. <Menu>
  24. <Menu.Item key="open">
  25. <a href="https://www.antgroup.com">Open Folder</a>
  26. </Menu.Item>
  27. </Menu>
  28. );
  29. return (
  30. <div className={'file' + (isOver ? '-over' : '')} onMouseEnter={this.onMouseOver}
  31. onMouseLeave={this.onMouseOut}>
  32. {
  33. isOver ? <div className={'file-options'}>
  34. <Dropdown overlay={menu} trigger={['click']} placement="bottomLeft" arrow>
  35. <a className="dropdown-link" onClick={e => e.preventDefault()}>
  36. &nbsp;·&nbsp;·&nbsp;·&nbsp;
  37. </a>
  38. </Dropdown>
  39. </div> : <div>
  40. </div>
  41. }
  42. {
  43. isOver ? <FileTextTwoTone className={'file-logo'}/> :
  44. <FileTwoTone className={'file-logo'}/>
  45. }
  46. <div className={'file-name'}>
  47. {ele.name}
  48. </div>
  49. <div className={'file-date'}>
  50. 2019/8/8
  51. </div>
  52. </div>
  53. )
  54. }
  55. }
  56. export default File;