insert-figure-dropdown.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { ListGroupItem } from 'react-bootstrap'
  2. import { ToolbarButtonMenu } from './button-menu'
  3. import Icon from '../../../../shared/components/icon'
  4. import { useCallback } from 'react'
  5. import { FigureModalSource } from '../figure-modal/figure-modal-context'
  6. import { useTranslation } from 'react-i18next'
  7. export const InsertFigureDropdown = () => {
  8. const { t } = useTranslation()
  9. const openFigureModal = useCallback((source: FigureModalSource) => {
  10. window.dispatchEvent(
  11. new CustomEvent('figure-modal:open', {
  12. detail: source,
  13. })
  14. )
  15. }, [])
  16. return (
  17. <ToolbarButtonMenu
  18. id="toolbar-figure"
  19. label={t('toolbar_insert_figure')}
  20. icon="picture-o"
  21. >
  22. <ListGroupItem
  23. onClick={() => openFigureModal(FigureModalSource.FILE_UPLOAD)}
  24. >
  25. <Icon type="upload" fw /> Upload from computer
  26. </ListGroupItem>
  27. <ListGroupItem
  28. onClick={() => openFigureModal(FigureModalSource.FILE_TREE)}
  29. >
  30. <Icon type="archive" fw /> From project files
  31. </ListGroupItem>
  32. <ListGroupItem
  33. onClick={() => openFigureModal(FigureModalSource.OTHER_PROJECT)}
  34. >
  35. <Icon type="folder-open" fw /> From another project
  36. </ListGroupItem>
  37. <ListGroupItem
  38. onClick={() => openFigureModal(FigureModalSource.FROM_URL)}
  39. >
  40. <Icon type="globe" fw /> From URL
  41. </ListGroupItem>
  42. </ToolbarButtonMenu>
  43. )
  44. }