Skip to content

Commit 4fb7e0d

Browse files
committed
[changed] Remove Overlay and Modal deprecations
1 parent 75c7270 commit 4fb7e0d

18 files changed

+278
-759
lines changed
File renamed without changes.

Diff for: docs/examples/ModalCustomSizing.js

+46-34
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,52 @@
1-
const MyModal = React.createClass({
2-
render() {
1+
const Example = React.createClass({
2+
3+
getInitialState(){
4+
return { show: false };
5+
},
6+
7+
render(){
8+
let close = e => this.setState({ show: false });
9+
310
return (
4-
<Modal {...this.props} dialogClassName='custom-modal'>
5-
<Modal.Header closeButton>
6-
<Modal.Title id='contained-modal-title-lg'>Modal heading</Modal.Title>
7-
</Modal.Header>
8-
<Modal.Body>
9-
<h4>Wrapped Text</h4>
10-
<p>Ipsum molestiae natus adipisci modi eligendi? Debitis amet quae unde commodi aspernatur enim, consectetur. Cumque deleniti temporibus ipsam atque a dolores quisquam quisquam adipisci possimus laboriosam. Quibusdam facilis doloribus debitis! Sit quasi quod accusamus eos quod. Ab quos consequuntur eaque quo rem!
11-
Mollitia reiciendis porro quo magni incidunt dolore amet atque facilis ipsum deleniti rem! Dolores debitis voluptatibus ipsum dicta. Dolor quod amet ab sint esse distinctio tenetur. Veritatis laudantium quibusdam quidem corporis architecto veritatis. Ex facilis minima beatae sunt perspiciatis placeat. Quasi corporis
12-
odio eaque voluptatibus ratione magnam nulla? Amet cum maiores consequuntur totam dicta! Inventore adipisicing vel vero odio modi doloremque? Vitae porro impedit ea minima laboriosam quisquam neque. Perspiciatis omnis obcaecati consequatur sunt deleniti similique facilis sequi. Ipsum harum vitae modi reiciendis officiis.
13-
Quas laudantium laudantium modi corporis nihil provident consectetur omnis, natus nulla distinctio illum corporis. Sit ex earum odio ratione consequatur odit minus laborum? Eos? Sit ipsum illum architecto aspernatur perspiciatis error fuga illum, tempora harum earum, a dolores. Animi facilis inventore harum dolore accusamus
14-
fuga provident molestiae eum! Odit dicta error dolorem sunt reprehenderit. Sit similique iure quae obcaecati harum. Eum saepe fugit magnam dicta aliquam? Sapiente possimus aliquam fugiat officia culpa sint! Beatae voluptates voluptatem excepturi molestiae alias in tenetur beatae placeat architecto. Sit possimus rerum
15-
fugiat sapiente aspernatur. Necessitatibus tempora animi dicta perspiciatis tempora a velit in! Doloribus perspiciatis doloribus suscipit nam earum. Deleniti veritatis eaque totam assumenda fuga sapiente! Id recusandae. Consectetur necessitatibus eaque velit nobis aliquid? Fugit illum qui suscipit aspernatur alias ipsum
16-
repudiandae! Quia omnis quisquam dignissimos a mollitia. Suscipit aspernatur eum maiores repellendus ipsum doloribus alias voluptatum consequatur. Consectetur quibusdam veniam quas tenetur necessitatibus repudiandae? Rem optio vel alias neque optio sapiente quidem similique reiciendis tempore. Illum accusamus officia
17-
cum enim minima eligendi consectetur nemo veritatis nam nisi! Adipisicing nobis perspiciatis dolorum adipisci soluta architecto doloremque voluptatibus omnis debitis quas repellendus. Consequuntur assumenda illum commodi mollitia asperiores? Quis aspernatur consequatur modi veritatis aliquid at? Atque vel iure quos.
18-
Amet provident voluptatem amet aliquam deserunt sint, elit dolorem ipsa, voluptas? Quos esse facilis neque nihil sequi non? Voluptates rem ab quae dicta culpa dolorum sed atque molestias debitis omnis! Sit sint repellendus deleniti officiis distinctio. Impedit vel quos harum doloribus corporis. Laborum ullam nemo quaerat
19-
reiciendis recusandae minima dicta molestias rerum. Voluptas et ut omnis est ipsum accusamus harum. Amet exercitationem quasi velit inventore neque doloremque! Consequatur neque dolorem vel impedit sunt voluptate. Amet quo amet magni exercitationem libero recusandae possimus pariatur. Cumque eum blanditiis vel vitae
20-
distinctio! Tempora! Consectetur sit eligendi neque sunt soluta laudantium natus qui aperiam quisquam consectetur consequatur sit sint a unde et. At voluptas ut officiis esse totam quasi dolorem! Hic deserunt doloribus repudiandae! Lorem quod ab nostrum asperiores aliquam ab id consequatur, expedita? Tempora quaerat
21-
ex ea temporibus in tempore voluptates cumque. Quidem nam dolor reiciendis qui dolor assumenda ipsam veritatis quasi. Esse! Sit consectetur hic et sunt iste! Accusantium atque elit voluptate asperiores corrupti temporibus mollitia! Placeat soluta odio ad blanditiis nisi. Eius reiciendis id quos dolorum eaque suscipit
22-
magni delectus maxime. Sit odit provident vel magnam quod. Possimus eligendi non corrupti tenetur culpa accusantium quod quis. Voluptatum quaerat animi dolore maiores molestias voluptate? Necessitatibus illo omnis laborum hic enim minima! Similique. Dolor voluptatum reprehenderit nihil adipisci aperiam voluptatem soluta
23-
magnam accusamus iste incidunt tempore consequatur illo illo odit. Asperiores nesciunt iusto nemo animi ratione. Sunt odit similique doloribus temporibus reiciendis! Ullam. Dolor dolores veniam animi sequi dolores molestias voluptatem iure velit. Elit dolore quaerat incidunt enim aut distinctio. Ratione molestiae laboriosam
24-
similique laboriosam eum et nemo expedita. Consequuntur perspiciatis cumque dolorem.</p>
25-
</Modal.Body>
26-
<Modal.Footer>
27-
<Button onClick={this.props.onHide}>Close</Button>
28-
</Modal.Footer>
29-
</Modal>
11+
<ButtonToolbar>
12+
<Button bsStyle='primary' onClick={()=>this.setState({ show: true })}>
13+
Launch demo modal
14+
</Button>
15+
16+
<Modal
17+
{...this.props}
18+
onHide={close}
19+
dialogClassName='custom-modal'
20+
>
21+
<Modal.Header closeButton>
22+
<Modal.Title id='contained-modal-title-lg'>Modal heading</Modal.Title>
23+
</Modal.Header>
24+
<Modal.Body>
25+
<h4>Wrapped Text</h4>
26+
<p>Ipsum molestiae natus adipisci modi eligendi? Debitis amet quae unde commodi aspernatur enim, consectetur. Cumque deleniti temporibus ipsam atque a dolores quisquam quisquam adipisci possimus laboriosam. Quibusdam facilis doloribus debitis! Sit quasi quod accusamus eos quod. Ab quos consequuntur eaque quo rem!
27+
Mollitia reiciendis porro quo magni incidunt dolore amet atque facilis ipsum deleniti rem! Dolores debitis voluptatibus ipsum dicta. Dolor quod amet ab sint esse distinctio tenetur. Veritatis laudantium quibusdam quidem corporis architecto veritatis. Ex facilis minima beatae sunt perspiciatis placeat. Quasi corporis
28+
odio eaque voluptatibus ratione magnam nulla? Amet cum maiores consequuntur totam dicta! Inventore adipisicing vel vero odio modi doloremque? Vitae porro impedit ea minima laboriosam quisquam neque. Perspiciatis omnis obcaecati consequatur sunt deleniti similique facilis sequi. Ipsum harum vitae modi reiciendis officiis.
29+
Quas laudantium laudantium modi corporis nihil provident consectetur omnis, natus nulla distinctio illum corporis. Sit ex earum odio ratione consequatur odit minus laborum? Eos? Sit ipsum illum architecto aspernatur perspiciatis error fuga illum, tempora harum earum, a dolores. Animi facilis inventore harum dolore accusamus
30+
fuga provident molestiae eum! Odit dicta error dolorem sunt reprehenderit. Sit similique iure quae obcaecati harum. Eum saepe fugit magnam dicta aliquam? Sapiente possimus aliquam fugiat officia culpa sint! Beatae voluptates voluptatem excepturi molestiae alias in tenetur beatae placeat architecto. Sit possimus rerum
31+
fugiat sapiente aspernatur. Necessitatibus tempora animi dicta perspiciatis tempora a velit in! Doloribus perspiciatis doloribus suscipit nam earum. Deleniti veritatis eaque totam assumenda fuga sapiente! Id recusandae. Consectetur necessitatibus eaque velit nobis aliquid? Fugit illum qui suscipit aspernatur alias ipsum
32+
repudiandae! Quia omnis quisquam dignissimos a mollitia. Suscipit aspernatur eum maiores repellendus ipsum doloribus alias voluptatum consequatur. Consectetur quibusdam veniam quas tenetur necessitatibus repudiandae? Rem optio vel alias neque optio sapiente quidem similique reiciendis tempore. Illum accusamus officia
33+
cum enim minima eligendi consectetur nemo veritatis nam nisi! Adipisicing nobis perspiciatis dolorum adipisci soluta architecto doloremque voluptatibus omnis debitis quas repellendus. Consequuntur assumenda illum commodi mollitia asperiores? Quis aspernatur consequatur modi veritatis aliquid at? Atque vel iure quos.
34+
Amet provident voluptatem amet aliquam deserunt sint, elit dolorem ipsa, voluptas? Quos esse facilis neque nihil sequi non? Voluptates rem ab quae dicta culpa dolorum sed atque molestias debitis omnis! Sit sint repellendus deleniti officiis distinctio. Impedit vel quos harum doloribus corporis. Laborum ullam nemo quaerat
35+
reiciendis recusandae minima dicta molestias rerum. Voluptas et ut omnis est ipsum accusamus harum. Amet exercitationem quasi velit inventore neque doloremque! Consequatur neque dolorem vel impedit sunt voluptate. Amet quo amet magni exercitationem libero recusandae possimus pariatur. Cumque eum blanditiis vel vitae
36+
distinctio! Tempora! Consectetur sit eligendi neque sunt soluta laudantium natus qui aperiam quisquam consectetur consequatur sit sint a unde et. At voluptas ut officiis esse totam quasi dolorem! Hic deserunt doloribus repudiandae! Lorem quod ab nostrum asperiores aliquam ab id consequatur, expedita? Tempora quaerat
37+
ex ea temporibus in tempore voluptates cumque. Quidem nam dolor reiciendis qui dolor assumenda ipsam veritatis quasi. Esse! Sit consectetur hic et sunt iste! Accusantium atque elit voluptate asperiores corrupti temporibus mollitia! Placeat soluta odio ad blanditiis nisi. Eius reiciendis id quos dolorum eaque suscipit
38+
magni delectus maxime. Sit odit provident vel magnam quod. Possimus eligendi non corrupti tenetur culpa accusantium quod quis. Voluptatum quaerat animi dolore maiores molestias voluptate? Necessitatibus illo omnis laborum hic enim minima! Similique. Dolor voluptatum reprehenderit nihil adipisci aperiam voluptatem soluta
39+
magnam accusamus iste incidunt tempore consequatur illo illo odit. Asperiores nesciunt iusto nemo animi ratione. Sunt odit similique doloribus temporibus reiciendis! Ullam. Dolor dolores veniam animi sequi dolores molestias voluptatem iure velit. Elit dolore quaerat incidunt enim aut distinctio. Ratione molestiae laboriosam
40+
similique laboriosam eum et nemo expedita. Consequuntur perspiciatis cumque dolorem.</p>
41+
</Modal.Body>
42+
<Modal.Footer>
43+
<Button onClick={close}>Close</Button>
44+
</Modal.Footer>
45+
</Modal>
46+
</ButtonToolbar>
3047
);
3148
}
3249
});
3350

34-
const overlayTriggerInstance = (
35-
<ModalTrigger modal={<MyModal />}>
36-
<Button bsStyle='primary' bsSize='large'>Launch demo modal</Button>
37-
</ModalTrigger>
38-
);
3951

40-
React.render(overlayTriggerInstance, mountNode);
52+
React.render(<Example/>, mountNode);

Diff for: docs/src/ComponentsPage.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ const ComponentsPage = React.createClass({
278278

279279
<h3 id='modals-live'>Live demo</h3>
280280
<p>Use <code>{'<Modal/>'}</code> in combination with other components to show or hide your Modal.</p>
281-
<ReactPlayground codeText={Samples.ModalTrigger} />
281+
<ReactPlayground codeText={Samples.Modal} />
282282

283283
<h3 id='modals-contained'>Contained Modal</h3>
284284
<p>You will need to add the following css to your project and ensure that your container has the <code>modal-container</code> class.</p>

Diff for: docs/src/ReactPlayground.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,16 @@ import * as modNavbar from '../../src/Navbar';
2626
import * as modNavItem from '../../src/NavItem';
2727
import * as modMenuItem from '../../src/MenuItem';
2828
import * as modModal from '../../src/Modal';
29-
import * as modModalTrigger from '../../src/ModalTrigger';
3029
import * as modOverlayTrigger from '../../src/OverlayTrigger';
31-
import * as modOverlayMixin from '../../src/OverlayMixin';
30+
3231
import * as modPageHeader from '../../src/PageHeader';
3332
import * as modPageItem from '../../src/PageItem';
3433
import * as modPager from '../../src/Pager';
3534
import * as modPagination from '../../src/Pagination';
3635
import * as modPanel from '../../src/Panel';
3736
import * as modPanelGroup from '../../src/PanelGroup';
3837
import * as modPopover from '../../src/Popover';
39-
//import * as modPopoverTrigger from '../../src/PopoverTrigger';
38+
4039
import * as modProgressBar from '../../src/ProgressBar';
4140
import * as modRow from '../../src/Row';
4241
import * as modSplitButton from '../../src/SplitButton';
@@ -45,7 +44,7 @@ import * as modTable from '../../src/Table';
4544
import * as modTabPane from '../../src/TabPane';
4645
import * as modThumbnail from '../../src/Thumbnail';
4746
import * as modTooltip from '../../src/Tooltip';
48-
//import * as modTooltipTrigger from '../../src/TooltipTrigger';
47+
4948
import * as modWell from '../../src/Well';
5049

5150
import * as modPortal from '../../src/Portal';
@@ -88,9 +87,9 @@ const Navbar = modNavbar.default;
8887
const NavItem = modNavItem.default;
8988
const MenuItem = modMenuItem.default;
9089
const Modal = modModal.default;
91-
const ModalTrigger = modModalTrigger.default;
90+
9291
const OverlayTrigger = modOverlayTrigger.default;
93-
const OverlayMixin = modOverlayMixin.default;
92+
9493
const PageHeader = modPageHeader.default;
9594
const PageItem = modPageItem.default;
9695
const Pagination = modPagination.default;

Diff for: docs/src/Samples.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default {
3131
PanelGroupAccordion: require('fs').readFileSync(__dirname + '/../examples/PanelGroupAccordion.js', 'utf8'),
3232
CollapsibleParagraph: require('fs').readFileSync(__dirname + '/../examples/CollapsibleParagraph.js', 'utf8'),
3333
ModalStatic: require('fs').readFileSync(__dirname + '/../examples/ModalStatic.js', 'utf8'),
34-
ModalTrigger: require('fs').readFileSync(__dirname + '/../examples/ModalTrigger.js', 'utf8'),
34+
Modal: require('fs').readFileSync(__dirname + '/../examples/Modal.js', 'utf8'),
3535

3636
ModalContained: require('fs').readFileSync(__dirname + '/../examples/ModalContained.js', 'utf8'),
3737
ModalDefaultSizing: require('fs').readFileSync(__dirname + '/../examples/ModalDefaultSizing.js', 'utf8'),

Diff for: src/Input.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import deprecationWarning from './utils/deprecationWarning';
55

66
class Input extends InputBase {
77
render() {
8-
if (this.props.type === 'static') {
8+
if (this.props.type === 'static') { //eslint-disable-line react/prop-types
99
deprecationWarning('Input type=static', 'StaticText');
1010
return <FormControls.Static {...this.props} />;
1111
}

Diff for: src/Modal.js

+15-80
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import BootstrapMixin from './BootstrapMixin';
77
import FadeMixin from './FadeMixin';
88
import domUtils from './utils/domUtils';
99
import EventListener from './utils/EventListener';
10-
import deprecationWarning from './utils/deprecationWarning';
1110

1211
import Portal from './Portal';
1312

@@ -37,23 +36,6 @@ function getContainer(context){
3736
domUtils.ownerDocument(context).body;
3837
}
3938

40-
function requiredIfNot(key, type){
41-
return function(props, propName, componentName){
42-
let propType = type;
43-
44-
if ( props[ key] === undefined ){
45-
propType = propType.isRequired;
46-
}
47-
return propType(props, propName, componentName);
48-
};
49-
}
50-
51-
function toChildArray(children){
52-
let result = [];
53-
React.Children.forEach(children, c => result.push(c));
54-
return result;
55-
}
56-
5739

5840
let currentFocusListener;
5941

@@ -113,14 +95,10 @@ function getScrollbarSize(){
11395

11496
const ModalMarkup = React.createClass({
11597

116-
mixins: [BootstrapMixin, FadeMixin],
98+
mixins: [ BootstrapMixin, FadeMixin ],
11799

118100
propTypes: {
119-
/**
120-
* The Modal title text
121-
* @deprecated Use the "Modal.Header" component instead
122-
*/
123-
title: React.PropTypes.node,
101+
124102
/**
125103
* Include a backdrop component. Specify 'static' for a backdrop that doesn't trigger an "onHide" when clicked.
126104
*/
@@ -130,28 +108,17 @@ const ModalMarkup = React.createClass({
130108
*/
131109
keyboard: React.PropTypes.bool,
132110

133-
/**
134-
* Specify whether the Modal heading should contain a close button
135-
* @deprecated Use the "Modal.Header" Component instead
136-
*/
137-
closeButton: React.PropTypes.bool,
138-
139111
/**
140112
* Open and close the Modal with a slide and fade animation.
141113
*/
142114
animation: React.PropTypes.bool,
115+
143116
/**
144117
* A Callback fired when the header closeButton or non-static backdrop is clicked.
145118
* @type {function}
146119
* @required
147120
*/
148-
onHide: requiredIfNot('onRequestHide', React.PropTypes.func),
149-
150-
/**
151-
* A Callback fired when the header closeButton or non-static backdrop is clicked.
152-
* @deprecated Replaced by `onHide`.
153-
*/
154-
onRequestHide: React.PropTypes.func,
121+
onHide: React.PropTypes.func.isRequired,
155122

156123
/**
157124
* A css class to apply to the Modal dialog DOM node.
@@ -226,28 +193,12 @@ const ModalMarkup = React.createClass({
226193
},
227194

228195
renderContent() {
229-
let children = toChildArray(this.props.children); // b/c createFragment is in addons and children can be a key'd object
230-
let hasNewHeader = children.some( c => c.type.__isModalHeader);
231-
232-
if (!hasNewHeader && this.props.title != null){
233-
deprecationWarning(
234-
'Specifying `closeButton` or `title` Modal props',
235-
'the new Modal.Header, and Modal.Title components');
236-
237-
children.unshift(
238-
<Header closeButton={this.props.closeButton} onHide={this._getHide()}>
239-
{ this.props.title &&
240-
<Title>{this.props.title}</Title>
241-
}
242-
</Header>
243-
);
244-
}
245196

246-
return React.Children.map(children, child => {
197+
return React.Children.map(this.props.children, child => {
247198
// TODO: use context in 0.14
248199
if (child.type.__isModalHeader) {
249200
return cloneElement(child, {
250-
onHide: createChainedFunction(this._getHide(), child.props.onHide)
201+
onHide: createChainedFunction(this.props.onHide, child.props.onHide)
251202
});
252203
}
253204
return child;
@@ -272,14 +223,6 @@ const ModalMarkup = React.createClass({
272223
);
273224
},
274225

275-
_getHide(){
276-
if ( !this.props.onHide && this.props.onRequestHide){
277-
deprecationWarning('The Modal prop `onRequestHide`', 'the `onHide` prop');
278-
}
279-
280-
return this.props.onHide || this.props.onRequestHide;
281-
},
282-
283226
iosClickHack() {
284227
// IOS only allows click events to be delegated to the document on elements
285228
// it considers 'clickable' - anchors, buttons, etc. We fake a click handler on the
@@ -360,12 +303,12 @@ const ModalMarkup = React.createClass({
360303
return;
361304
}
362305

363-
this._getHide()();
306+
this.props.onHide();
364307
},
365308

366309
handleDocumentKeyUp(e) {
367310
if (this.props.keyboard && e.keyCode === 27) {
368-
this._getHide()();
311+
this.props.onHide();
369312
}
370313
},
371314

@@ -438,26 +381,18 @@ const Modal = React.createClass({
438381
...ModalMarkup.propTypes
439382
},
440383

441-
defaultProps: {
442-
show: null
443-
},
444-
445384
render() {
446385
let { show, ...props } = this.props;
447386

448387
let modal = (
449-
<ModalMarkup {...props}>{this.props.children}</ModalMarkup>
388+
<ModalMarkup {...props} ref='modal'>{this.props.children}</ModalMarkup>
389+
);
390+
391+
return (
392+
<Portal container={props.container} >
393+
{ show && modal }
394+
</Portal>
450395
);
451-
// I can't think of another way to not break back compat while defaulting container
452-
if ( !this.props.__isUsedInModalTrigger && show != null ){
453-
return (
454-
<Portal container={props.container} >
455-
{ show && modal }
456-
</Portal>
457-
);
458-
} else {
459-
return modal;
460-
}
461396
}
462397
});
463398

0 commit comments

Comments
 (0)