@@ -1339,27 +1350,47 @@ class PaymentsTab extends ImmutableComponent {
return
{
this.enabled && this.props.addFundsOverlayVisible
- ?
+ ?
: null
}
{
this.enabled && this.props.paymentHistoryOverlayVisible
- ?
+ ?
: null
}
{
this.enabled && this.props.advancedSettingsOverlayVisible
- ?
+ ?
: null
}
{
this.enabled && this.props.ledgerBackupOverlayVisible
- ?
+ ?
: null
}
{
this.enabled && this.props.ledgerRecoveryOverlayVisible
- ?
+ ?
: null
}
@@ -1966,11 +1997,7 @@ class AboutPreferences extends React.Component {
setOverlayVisible (isVisible, overlayName) {
let stateDiff = {}
stateDiff[`${overlayName}OverlayVisible`] = isVisible
- if (overlayName === 'addFunds' && isVisible === false) {
- // Hide the child overlays when the parent is closed
- stateDiff['bitcoinOverlayVisible'] = false
- stateDiff['qrcodeOverlayVisible'] = false
- }
+
this.setState(stateDiff)
// Tell ledger when Add Funds overlay is closed
if (isVisible === false && overlayName === 'addFunds') {
diff --git a/js/components/modalOverlay.js b/js/components/modalOverlay.js
index 0c810e86006..523fb4d394d 100644
--- a/js/components/modalOverlay.js
+++ b/js/components/modalOverlay.js
@@ -4,6 +4,7 @@
const React = require('react')
const ImmutableComponent = require('./immutableComponent')
+const KeyCodes = require('../../app/common/constants/keyCodes')
/**
* Represents a modal overlay
@@ -13,6 +14,13 @@ var globalInstanceCounter = 0
var mountedInstances = []
class ModalOverlay extends ImmutableComponent {
+ constructor () {
+ super()
+ this.state = {
+ previousElement: null
+ }
+ this.onKeyDown = this.onKeyDown.bind(this)
+ }
componentWillMount () {
this.instanceId = globalInstanceCounter++
@@ -28,9 +36,18 @@ class ModalOverlay extends ImmutableComponent {
mountedInstances.push(this)
}
+ componentDidMount () {
+ this.setState({previousElement: document.activeElement})
+ this.closeButton.focus()
+ }
+
componentWillUnmount () {
let instId = this.instanceId
+ if (this.state.previousElement) {
+ this.state.previousElement.focus()
+ }
+
mountedInstances = mountedInstances.filter(function (inst) {
return inst.instanceId !== instId
})
@@ -42,12 +59,22 @@ class ModalOverlay extends ImmutableComponent {
}
}
+ onKeyDown (e) {
+ switch (e.keyCode) {
+ case KeyCodes.ESC:
+ // Stop propagation to make sure only the top modal closes
+ e.stopPropagation()
+ this.props.onEscape()
+ break
+ }
+ }
+
get dialogContent () {
var close = null
var button = null
var title = null
if (!this.props.emptyDialog) {
- close = (this.props.onHide ?
: null)
+ close = (this.props.onHide ?