From 83ecee78ac6a054c57e3b8804320edd39e5b8737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=85=95=E9=99=B6?= Date: Fri, 3 Jul 2015 14:47:31 +0800 Subject: [PATCH 1/2] feat: close dialog when esc --- src/Dialog.jsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Dialog.jsx b/src/Dialog.jsx index e9eda9a7..7291fbf0 100644 --- a/src/Dialog.jsx +++ b/src/Dialog.jsx @@ -3,6 +3,7 @@ var React = require('react'); var domAlign = require('dom-align'); var RcUtil = require('rc-util'); +var KeyCode = RcUtil.KeyCode; var Dom = RcUtil.Dom; var assign = require('object-assign'); var anim = require('css-animation'); @@ -95,6 +96,12 @@ var Dialog = React.createClass({ this.unMonitorWindowResize(); }, + handleKeyDown(e) { + if (e.keyCode === KeyCode.ESC) { + this.props.onRequestClose(); + } + }, + render() { var props = this.props; var visible = props.visible; @@ -141,7 +148,13 @@ var Dialog = React.createClass({ } return (
{props.mask !== false ?
: null} -
+
{header}
{props.children}
From c9a02625f2c12534597a3d0842bef50dc3d007bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=85=95=E9=99=B6?= Date: Fri, 3 Jul 2015 14:59:09 +0800 Subject: [PATCH 2/2] feat: don't close dialog if closable is false --- src/Dialog.jsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Dialog.jsx b/src/Dialog.jsx index 7291fbf0..d0147266 100644 --- a/src/Dialog.jsx +++ b/src/Dialog.jsx @@ -125,15 +125,23 @@ var Dialog = React.createClass({ var style = assign({}, props.style, dest); var maskProps = {}; + var dialogProps = { + className :[prefixClsFn(prefixCls, ''), props.className].join(' '), + tabIndex: '0', + role: 'dialog', + ref: 'dialog', + style: style + }; if (closable) { maskProps.onClick = this.props.onRequestClose; + dialogProps.onKeyDown = this.handleKeyDown; } if (style.zIndex) { maskProps.style = {zIndex: style.zIndex}; } var footer; if (props.footer) { - footer =
{props.footer}
; + footer = (
{props.footer}
); } var header; if (props.title || closable) { @@ -148,13 +156,7 @@ var Dialog = React.createClass({ } return (
{props.mask !== false ?
: null} -
+
{header}
{props.children}