diff --git a/js/components/ascribe_buttons/delete_button.js b/js/components/ascribe_buttons/delete_button.js index a60344df..966154bc 100644 --- a/js/components/ascribe_buttons/delete_button.js +++ b/js/components/ascribe_buttons/delete_button.js @@ -11,10 +11,10 @@ import PieceDeleteForm from '../ascribe_forms/form_delete_piece'; import EditionRemoveFromCollectionForm from '../ascribe_forms/form_remove_editions_from_collection'; import PieceRemoveFromCollectionForm from '../ascribe_forms/form_remove_piece_from_collection'; -import ModalWrapper from '../ascribe_modal/modal_wrapper'; +import AscribeModal from '../ascribe_modal/ascribe_modal'; import { getAvailableAcls } from '../../utils/acl_utils'; -import { getLangText } from '../../utils/lang_utils.js'; +import { getLangText } from '../../utils/lang_utils'; let DeleteButton = React.createClass({ @@ -66,12 +66,11 @@ let DeleteButton = React.createClass({ return null; } return ( - {content} - + ); } }); diff --git a/js/components/ascribe_modal/ascribe_modal.js b/js/components/ascribe_modal/ascribe_modal.js new file mode 100644 index 00000000..d2a55228 --- /dev/null +++ b/js/components/ascribe_modal/ascribe_modal.js @@ -0,0 +1,63 @@ +'use strict'; + +import React from 'react'; + +import Modal from 'react-bootstrap/lib/Modal'; + +let AscribeModal = React.createClass({ + + propTypes: { + trigger: React.PropTypes.element.isRequired, + title: React.PropTypes.oneOfType([ + React.PropTypes.arrayOf(React.PropTypes.element), + React.PropTypes.element, + React.PropTypes.string + ]).isRequired, + children: React.PropTypes.oneOfType([ + React.PropTypes.arrayOf(React.PropTypes.element), + React.PropTypes.element + ]).isRequired, + footer: React.PropTypes.oneOfType([ + React.PropTypes.arrayOf(React.PropTypes.element), + React.PropTypes.element, + React.PropTypes.string + ]).isRequired + }, + + getInitialState(){ + return { + modalBody: null + }; + }, + + close() { + this.setState({ showModal: false }); + }, + + open() { + this.setState({ showModal: true }); + }, + + render() { + + let trigger = React.cloneElement(this.props.trigger, {onClick: this.open}); + + return ( + + {trigger} + + + + {this.props.title} + + + + {this.props.children} + + + + ); + } +}); + +export default AscribeModal; \ No newline at end of file diff --git a/js/components/ascribe_modal/modal_wrapper.js b/js/components/ascribe_modal/modal_wrapper.js index a8f7b182..a7155e74 100644 --- a/js/components/ascribe_modal/modal_wrapper.js +++ b/js/components/ascribe_modal/modal_wrapper.js @@ -5,7 +5,6 @@ import ReactAddons from 'react/addons'; import Modal from 'react-bootstrap/lib/Modal'; import OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger'; -import ModalTrigger from 'react-bootstrap/lib/ModalTrigger'; import Tooltip from 'react-bootstrap/lib/Tooltip'; import ModalMixin from '../../mixins/modal_mixin'; @@ -22,15 +21,11 @@ let ModalWrapper = React.createClass({ getModalTrigger() { return ( - - {this.props.children} - - }> - {this.props.button} - + + {this.props.children} + ); }, diff --git a/package.json b/package.json index 4fdf87fb..0fc9844f 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "q": "^1.4.1", "raven-js": "^1.1.19", "react": "^0.13.2", - "react-bootstrap": "~0.22.6", + "react-bootstrap": "^0.24.3", "react-datepicker": "~0.8.0", "react-progressbar": "^1.1.0", "react-router": "^0.13.3",