outline-toggle-button.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import OLTooltip from '@/shared/components/ol/ol-tooltip'
  2. import MaterialIcon from '@/shared/components/material-icon'
  3. import React, { memo } from 'react'
  4. import { useTranslation } from 'react-i18next'
  5. export const OutlineToggleButton = memo<{
  6. isTexFile: boolean
  7. toggleExpanded: () => void
  8. expanded?: boolean
  9. isOpen: boolean
  10. isPartial: boolean
  11. }>(({ isTexFile, toggleExpanded, expanded, isOpen, isPartial }) => {
  12. const { t } = useTranslation()
  13. return (
  14. <button
  15. className="outline-header-expand-collapse-btn"
  16. disabled={!isTexFile}
  17. onClick={toggleExpanded}
  18. aria-label={expanded ? t('hide_outline') : t('show_outline')}
  19. >
  20. <MaterialIcon
  21. type={isOpen ? 'keyboard_arrow_down' : 'keyboard_arrow_right'}
  22. className="outline-caret-icon"
  23. />
  24. <h4 className="outline-header-name">{t('file_outline')}</h4>
  25. {isPartial && (
  26. <OLTooltip
  27. id="partial-outline"
  28. description={t('partial_outline_warning')}
  29. overlayProps={{ placement: 'top' }}
  30. >
  31. <span role="status" style={{ display: 'flex' }}>
  32. <MaterialIcon
  33. type="warning"
  34. accessibilityLabel={t('partial_outline_warning')}
  35. />
  36. </span>
  37. </OLTooltip>
  38. )}
  39. </button>
  40. )
  41. })
  42. OutlineToggleButton.displayName = 'OutlineToggleButton'