Fix focus on Modal (#4014)

* Fix focus on Modal #3814

* PR Grumble
This commit is contained in:
Nicolas Gotchac 2017-01-03 17:41:31 +01:00 committed by Jaco Greeff
parent 04ed53e0f2
commit 0f41c5b847
2 changed files with 22 additions and 3 deletions

View File

@ -30,15 +30,22 @@ export default class Container extends Component {
compact: PropTypes.bool,
light: PropTypes.bool,
style: PropTypes.object,
tabIndex: PropTypes.number,
title: nodeOrStringProptype()
}
render () {
const { children, className, compact, light, style } = this.props;
const { children, className, compact, light, style, tabIndex } = this.props;
const classes = `${styles.container} ${light ? styles.light : ''} ${className}`;
const props = {};
if (Number.isInteger(tabIndex)) {
props.tabIndex = tabIndex;
}
return (
<div className={ classes } style={ style }>
<div className={ classes } style={ style } { ...props }>
<Card className={ compact ? styles.compact : styles.padded }>
{ this.renderTitle() }
{ children }

View File

@ -18,6 +18,7 @@ import { Dialog } from 'material-ui';
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import ReactDOM from 'react-dom';
import { nodeOrStringProptype } from '~/util/proptypes';
@ -49,6 +50,14 @@ class Modal extends Component {
waiting: PropTypes.array
}
componentDidMount () {
const element = ReactDOM.findDOMNode(this.refs.dialog);
if (element) {
element.focus();
}
}
render () {
const { muiTheme } = this.context;
const { actions, busy, children, className, current, compact, settings, steps, title, visible, waiting } = this.props;
@ -85,9 +94,12 @@ class Modal extends Component {
<Container
compact={ compact }
light
ref='dialog'
style={
{ transition: 'none' }
}>
}
tabIndex={ 0 }
>
{ children }
</Container>
</Dialog>