aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/settings/SettingsLayout.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/settings/SettingsLayout.js')
-rw-r--r--src/components/settings/SettingsLayout.js37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/components/settings/SettingsLayout.js b/src/components/settings/SettingsLayout.js
index 72ba7b2e3..5b3b754fa 100644
--- a/src/components/settings/SettingsLayout.js
+++ b/src/components/settings/SettingsLayout.js
@@ -1,38 +1,55 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
4 5
5import ErrorBoundary from '../util/ErrorBoundary'; 6import ErrorBoundary from '../util/ErrorBoundary';
6import { oneOrManyChildElements } from '../../prop-types'; 7import { oneOrManyChildElements } from '../../prop-types';
7import Appear from '../ui/effects/Appear'; 8import Appear from '../ui/effects/Appear';
8 9
9export default @observer class SettingsLayout extends Component { 10const messages = defineMessages({
11 closeSettings: {
12 id: 'settings.app.closeSettings',
13 defaultMessage: '!!!Close settings',
14 },
15});
16
17export default
18@observer
19class SettingsLayout extends Component {
10 static propTypes = { 20 static propTypes = {
11 navigation: PropTypes.element.isRequired, 21 navigation: PropTypes.element.isRequired,
12 children: oneOrManyChildElements.isRequired, 22 children: oneOrManyChildElements.isRequired,
13 closeSettings: PropTypes.func.isRequired, 23 closeSettings: PropTypes.func.isRequired,
14 }; 24 };
15 25
16 componentWillMount() { 26 static contextTypes = {
27 intl: intlShape,
28 };
29
30 componentDidMount() {
17 document.addEventListener('keydown', this.handleKeyDown.bind(this), false); 31 document.addEventListener('keydown', this.handleKeyDown.bind(this), false);
18 } 32 }
19 33
20 componentWillUnmount() { 34 componentWillUnmount() {
21 document.removeEventListener('keydown', this.handleKeyDown.bind(this), false); 35 document.removeEventListener(
36 'keydown',
37 this.handleKeyDown.bind(this),
38 false,
39 );
22 } 40 }
23 41
24 handleKeyDown(e) { 42 handleKeyDown(e) {
25 if (e.keyCode === 27) { // escape key 43 if (e.keyCode === 27) {
44 // escape key
26 this.props.closeSettings(); 45 this.props.closeSettings();
27 } 46 }
28 } 47 }
29 48
30 render() { 49 render() {
31 const { 50 const { navigation, children, closeSettings } = this.props;
32 navigation, 51
33 children, 52 const { intl } = this.context;
34 closeSettings,
35 } = this.props;
36 53
37 return ( 54 return (
38 <Appear transitionName="fadeIn-fast"> 55 <Appear transitionName="fadeIn-fast">
@@ -42,6 +59,7 @@ export default @observer class SettingsLayout extends Component {
42 type="button" 59 type="button"
43 className="settings-wrapper__action" 60 className="settings-wrapper__action"
44 onClick={closeSettings} 61 onClick={closeSettings}
62 aria-label={intl.formatMessage(messages.closeSettings)}
45 /> 63 />
46 <div className="settings franz-form"> 64 <div className="settings franz-form">
47 {navigation} 65 {navigation}
@@ -50,6 +68,7 @@ export default @observer class SettingsLayout extends Component {
50 type="button" 68 type="button"
51 className="settings__close mdi mdi-close" 69 className="settings__close mdi mdi-close"
52 onClick={closeSettings} 70 onClick={closeSettings}
71 aria-label={intl.formatMessage(messages.closeSettings)}
53 /> 72 />
54 </div> 73 </div>
55 </ErrorBoundary> 74 </ErrorBoundary>