figure-modal-source-picker.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { FC } from 'react'
  2. import {
  3. FigureModalSource,
  4. useFigureModalContext,
  5. } from './figure-modal-context'
  6. import Icon from '../../../../shared/components/icon'
  7. import { Button } from 'react-bootstrap'
  8. import { useTranslation } from 'react-i18next'
  9. export const FigureModalSourcePicker: FC = () => {
  10. const { t } = useTranslation()
  11. return (
  12. <div className="figure-modal-source-selector">
  13. <div className="figure-modal-source-button-row">
  14. <FigureModalSourceButton
  15. type={FigureModalSource.FILE_UPLOAD}
  16. title={t('replace_from_computer')}
  17. icon="upload"
  18. />
  19. <FigureModalSourceButton
  20. type={FigureModalSource.FILE_TREE}
  21. title={t('replace_from_project_files')}
  22. icon="archive"
  23. />
  24. </div>
  25. <div className="figure-modal-source-button-row">
  26. <FigureModalSourceButton
  27. type={FigureModalSource.OTHER_PROJECT}
  28. title={t('replace_from_another_project')}
  29. icon="folder-open"
  30. />
  31. <FigureModalSourceButton
  32. type={FigureModalSource.FROM_URL}
  33. title={t('replace_from_url')}
  34. icon="globe"
  35. />
  36. </div>
  37. </div>
  38. )
  39. }
  40. const FigureModalSourceButton: FC<{
  41. type: FigureModalSource
  42. title: string
  43. icon: string
  44. }> = ({ type, title, icon }) => {
  45. const { dispatch } = useFigureModalContext()
  46. return (
  47. <Button
  48. bsStyle={null}
  49. bsClass=""
  50. className="figure-modal-source-button"
  51. onClick={() => {
  52. dispatch({ source: type, sourcePickerShown: false, getPath: undefined })
  53. }}
  54. >
  55. <Icon
  56. type={icon}
  57. className="figure-modal-source-button-icon source-icon"
  58. fw
  59. />
  60. <span className="figure-modal-source-button-title">{title}</span>
  61. <Icon
  62. type="chevron-right"
  63. className="figure-modal-source-button-icon"
  64. fw
  65. />
  66. </Button>
  67. )
  68. }