fix(dialog): Don't steal focus
This commit is contained in:
parent
663e0a6693
commit
3c1f056d2a
|
@ -0,0 +1,30 @@
|
||||||
|
// @flow
|
||||||
|
import React from 'react';
|
||||||
|
import FocusLock, { MoveFocusInside } from 'react-focus-lock';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FocusLock wrapper that disable the FocusLock in the @atlaskit/modal-dialog. We need to disable it because if the
|
||||||
|
* iframe API is used and a dialog is displayed it is imposible to click on fields outside of the iframe (FocusLock
|
||||||
|
* will steal the focus from any element that is not part of the dialog).
|
||||||
|
*/
|
||||||
|
export default class FocusLockWrapper extends FocusLock<*> {
|
||||||
|
/**
|
||||||
|
* Implements React's {@link Component#render()}.
|
||||||
|
*
|
||||||
|
* @inheritdoc
|
||||||
|
* @returns {ReactElement}
|
||||||
|
*/
|
||||||
|
render() {
|
||||||
|
const { children, ...otherProps } = this.props;
|
||||||
|
|
||||||
|
const props = {
|
||||||
|
...otherProps,
|
||||||
|
disabled: true
|
||||||
|
};
|
||||||
|
|
||||||
|
// MoveFocusInside is added in order to initially bring the focus on the dialog.
|
||||||
|
return <FocusLock { ...props } ><MoveFocusInside>{children}</MoveFocusInside></FocusLock>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export * from 'react-focus-lock';
|
|
@ -91,6 +91,20 @@ const config = {
|
||||||
'style-loader',
|
'style-loader',
|
||||||
'css-loader'
|
'css-loader'
|
||||||
]
|
]
|
||||||
|
}, {
|
||||||
|
test: /\/node_modules\/@atlaskit\/modal-dialog\/.*\.js$/,
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
'react-focus-lock': `${__dirname}/react/features/base/util/react-focus-lock-wrapper.js`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
test: /\/react\/features\/base\/util\/react-focus-lock-wrapper.js$/,
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
'react-focus-lock': `${__dirname}/node_modules/react-focus-lock`
|
||||||
|
}
|
||||||
|
}
|
||||||
} ]
|
} ]
|
||||||
},
|
},
|
||||||
node: {
|
node: {
|
||||||
|
|
Loading…
Reference in New Issue