import { Component } from 'react'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; import { defineMessages, injectIntl } from 'react-intl'; import { mdiClose } from '@mdi/js'; import { Outlet } from 'react-router-dom'; import ErrorBoundary from '../util/ErrorBoundary'; import Appear from '../ui/effects/Appear'; import Icon from '../ui/icon'; const messages = defineMessages({ closeSettings: { id: 'settings.app.closeSettings', defaultMessage: 'Close settings', }, }); class SettingsLayout extends Component { static propTypes = { navigation: PropTypes.element.isRequired, closeSettings: PropTypes.func.isRequired, }; componentDidMount() { document.addEventListener('keydown', this.handleKeyDown.bind(this), false); } componentWillUnmount() { document.removeEventListener( 'keydown', // eslint-disable-next-line unicorn/no-invalid-remove-event-listener this.handleKeyDown.bind(this), false, ); } handleKeyDown(e) { if (e.keyCode === 27) { // escape key this.props.closeSettings(); } } render() { const { navigation, closeSettings } = this.props; const { intl } = this.props; return (
); } } export default injectIntl(observer(SettingsLayout));