spelling-suggestions-language.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { memo, useCallback } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import OLTooltip from '@/shared/components/ol/ol-tooltip'
  4. import { Dropdown } from 'react-bootstrap'
  5. import MaterialIcon from '@/shared/components/material-icon'
  6. export const SpellingSuggestionsLanguage = memo<{
  7. language: { name: string }
  8. handleClose: (focus: boolean) => void
  9. }>(({ language, handleClose }) => {
  10. const { t } = useTranslation()
  11. const handleClick = useCallback(() => {
  12. // open settings
  13. window.dispatchEvent(
  14. new CustomEvent('ui.toggle-settings', { detail: true })
  15. )
  16. // focus the spell check setting
  17. window.dispatchEvent(
  18. new CustomEvent('ui.focus-setting', { detail: 'spellCheckLanguage' })
  19. )
  20. handleClose(false)
  21. }, [handleClose])
  22. return (
  23. <OLTooltip
  24. id="spell-check-client-tooltip"
  25. description={t('change_language')}
  26. overlayProps={{ placement: 'right', delay: 100 }}
  27. >
  28. <span>
  29. <Dropdown.Item
  30. className="d-flex gap-2 align-items-center"
  31. onClick={handleClick}
  32. >
  33. <MaterialIcon type="settings" />
  34. <span>{language.name}</span>
  35. </Dropdown.Item>
  36. </span>
  37. </OLTooltip>
  38. )
  39. })
  40. SpellingSuggestionsLanguage.displayName = 'SpellingSuggestionsLanguage'