Skip to content

Commit 386d662

Browse files
diasbrunoBruno Dias
authored and
Bruno Dias
committed
[added] trigger onAfterOpen callback when available.
1 parent eee9431 commit 386d662

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ Accessible modal dialog component for React.JS
77
```xml
88
<Modal
99
isOpen={bool}
10-
onRequestClose={fn}
10+
onAfterOpen={afterOpenFn}
11+
onRequestClose={requestOpenFn}
1112
closeTimeoutMS={n}
1213
style={customStyle}>
1314

@@ -95,6 +96,11 @@ var App = React.createClass({
9596
this.setState({modalIsOpen: true});
9697
},
9798

99+
afterOpenModal: function() {
100+
// references are now sync'd and can be accessed.
101+
this.refs.subtitle.style.color = '#f00';
102+
},
103+
98104
closeModal: function() {
99105
this.setState({modalIsOpen: false});
100106
},
@@ -105,10 +111,11 @@ var App = React.createClass({
105111
<button onClick={this.openModal}>Open Modal</button>
106112
<Modal
107113
isOpen={this.state.modalIsOpen}
114+
onAfterOpen={this.afterOpenModal}
108115
onRequestClose={this.closeModal}
109116
style={customStyles} >
110117

111-
<h2>Hello</h2>
118+
<h2 ref="subtitle">Hello</h2>
112119
<button onClick={this.closeModal}>close</button>
113120
<div>I am a modal</div>
114121
<form>
@@ -137,7 +144,8 @@ pass the 'shouldCloseOnOverlayClick' prop with 'false' value.
137144
```xml
138145
<Modal
139146
isOpen={bool}
140-
onRequestClose={fn}
147+
onAfterOpen={afterOpenFn}
148+
onRequestClose={requestCloseFn}
141149
closeTimeoutMS={n}
142150
shouldCloseOnOverlayClick={false}
143151
style={customStyle}>

examples/basic/app.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,24 @@ var App = React.createClass({
6060
this.setState({foo: 'bar'});
6161
},
6262

63+
handleOnAfterOpenModal: function() {
64+
// when ready, we can access the available refs.
65+
this.refs.title.style.color = '#F00';
66+
},
67+
6368
render: function() {
6469
return (
6570
<div>
6671
<button onClick={this.openModal}>Open Modal</button>
6772
<button onClick={this.openModal2}>Open Modal 2</button>
6873
<Modal
74+
ref="mymodal"
6975
closeTimeoutMS={150}
7076
isOpen={this.state.modalIsOpen}
77+
onAfterOpen={this.handleOnAfterOpenModal}
7178
onRequestClose={this.handleModalCloseRequest}
7279
>
73-
<h1>Hello</h1>
80+
<h1 ref="title">Hello</h1>
7481
<button onClick={this.closeModal}>close</button>
7582
<div>I am a modal</div>
7683
<form>

lib/components/Modal.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ var Modal = React.createClass({
3131
overlay: React.PropTypes.object
3232
}),
3333
appElement: React.PropTypes.instanceOf(SafeHTMLElement),
34+
onAfterOpen: React.PropTypes.func,
3435
onRequestClose: React.PropTypes.func,
3536
closeTimeoutMS: React.PropTypes.number,
3637
ariaHideApp: React.PropTypes.bool,

lib/components/ModalPortal.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ var ModalPortal = module.exports = React.createClass({
7676
focusManager.markForFocusLater();
7777
this.setState({isOpen: true}, function() {
7878
this.setState({afterOpen: true});
79+
(this.props.isOpen && this.props.onAfterOpen) && this.props.onAfterOpen();
7980
}.bind(this));
8081
},
8182

0 commit comments

Comments
 (0)