From 4c88f88d561d979559c9719c17bb5e2f6724d8fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Daubensch=C3=BCtz?= Date: Wed, 5 Aug 2015 17:32:35 +0200 Subject: [PATCH] first cut porting and using new react-bootstrap version --- js/components/ascribe_buttons/acl_button.js | 5 +- .../ascribe_buttons/delete_button.js | 10 +- .../ascribe_buttons/submit_to_prize_button.js | 2 +- .../unconsign_request_button.js | 5 +- js/components/ascribe_forms/form_loan.js | 16 +--- js/components/ascribe_modal/ascribe_modal.js | 63 ------------- .../modal_password_request_reset.js | 11 ++- js/components/ascribe_modal/modal_wrapper.js | 94 ++++++++----------- js/mixins/modal_mixin.js | 12 --- 9 files changed, 58 insertions(+), 160 deletions(-) delete mode 100644 js/components/ascribe_modal/ascribe_modal.js delete mode 100644 js/mixins/modal_mixin.js diff --git a/js/components/ascribe_buttons/acl_button.js b/js/components/ascribe_buttons/acl_button.js index d9423889..f457e48b 100644 --- a/js/components/ascribe_buttons/acl_button.js +++ b/js/components/ascribe_buttons/acl_button.js @@ -214,14 +214,13 @@ ${this.props.currentUser.username} return ( {this.sanitizeAction()} } handleSuccess={aclProps.handleSuccess} - title={aclProps.title} - tooltip={aclProps.tooltip}> + title={aclProps.title}> {aclProps.form} ); diff --git a/js/components/ascribe_buttons/delete_button.js b/js/components/ascribe_buttons/delete_button.js index 966154bc..0e811885 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 AscribeModal from '../ascribe_modal/ascribe_modal'; +import ModalWrapper from '../ascribe_modal/modal_wrapper'; import { getAvailableAcls } from '../../utils/acl_utils'; -import { getLangText } from '../../utils/lang_utils'; +import { getLangText } from '../../utils/lang_utils.js'; let DeleteButton = React.createClass({ @@ -66,14 +66,14 @@ let DeleteButton = React.createClass({ return null; } return ( - {content} - + ); } }); export default DeleteButton; - diff --git a/js/components/ascribe_buttons/submit_to_prize_button.js b/js/components/ascribe_buttons/submit_to_prize_button.js index 3565a3ee..63b71f77 100644 --- a/js/components/ascribe_buttons/submit_to_prize_button.js +++ b/js/components/ascribe_buttons/submit_to_prize_button.js @@ -27,7 +27,7 @@ let SubmitToPrizeButton = React.createClass({ render() { return ( REQUEST UNCONSIGN } handleSuccess={this.props.handleSuccess} - title='Request to Un-Consign' - tooltip='Ask the consignee to return the ownership of the work back to you'> + title='Request to Un-Consign'> {getLangText('CLOSE')} + onClick={this.props.onRequestHide}>{getLangText('CLOSE')}

} spinner={ diff --git a/js/components/ascribe_modal/ascribe_modal.js b/js/components/ascribe_modal/ascribe_modal.js deleted file mode 100644 index d2a55228..00000000 --- a/js/components/ascribe_modal/ascribe_modal.js +++ /dev/null @@ -1,63 +0,0 @@ -'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_password_request_reset.js b/js/components/ascribe_modal/modal_password_request_reset.js index fffcb3d7..d941bcce 100644 --- a/js/components/ascribe_modal/modal_password_request_reset.js +++ b/js/components/ascribe_modal/modal_password_request_reset.js @@ -7,9 +7,13 @@ import PasswordResetRequestForm from '../ascribe_forms/form_password_reset_reque import GlobalNotificationModel from '../../models/global_notification_model'; import GlobalNotificationActions from '../../actions/global_notification_actions'; -import { getLangText } from '../../utils/lang_utils.js' +import { getLangText } from '../../utils/lang_utils.js'; let PasswordResetRequestModal = React.createClass({ + propTypes: { + button: React.PropTypes.element + }, + handleResetSuccess(){ let notificationText = getLangText('Request successfully sent, check your email'); let notification = new GlobalNotificationModel(notificationText, 'success', 50000); @@ -18,10 +22,9 @@ let PasswordResetRequestModal = React.createClass({ render() { return ( + handleSuccess={this.handleResetSuccess}> ); diff --git a/js/components/ascribe_modal/modal_wrapper.js b/js/components/ascribe_modal/modal_wrapper.js index a7155e74..05971f3a 100644 --- a/js/components/ascribe_modal/modal_wrapper.js +++ b/js/components/ascribe_modal/modal_wrapper.js @@ -4,87 +4,73 @@ import React from 'react'; import ReactAddons from 'react/addons'; import Modal from 'react-bootstrap/lib/Modal'; -import OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger'; -import Tooltip from 'react-bootstrap/lib/Tooltip'; - -import ModalMixin from '../../mixins/modal_mixin'; let ModalWrapper = React.createClass({ propTypes: { - title: React.PropTypes.string.isRequired, - onRequestHide: React.PropTypes.func, + trigger: React.PropTypes.element.isRequired, + title: React.PropTypes.oneOfType([ + React.PropTypes.arrayOf(React.PropTypes.element), + React.PropTypes.element, + React.PropTypes.string + ]).isRequired, handleSuccess: React.PropTypes.func.isRequired, - button: React.PropTypes.object.isRequired, - children: React.PropTypes.object, - tooltip: React.PropTypes.string + children: React.PropTypes.oneOfType([ + React.PropTypes.arrayOf(React.PropTypes.element), + React.PropTypes.element + ]) }, - getModalTrigger() { - return ( - - {this.props.children} - - ); + getInitialState() { + return { + showModal: false + }; }, - render() { - if(this.props.tooltip) { - return ( - {this.props.tooltip}}> - {this.getModalTrigger()} - - ); - } else { - return ( - - {/* This needs to be some kind of inline-block */} - {this.getModalTrigger()} - - ); - } - } -}); - - -let ModalBody = React.createClass({ - propTypes: { - onRequestHide: React.PropTypes.func, - handleSuccess: React.PropTypes.func, - children: React.PropTypes.object, - title: React.PropTypes.string.isRequired + show() { + this.setState({ + showModal: true + }); }, - mixins: [ModalMixin], + hide() { + this.setState({ + showModal: false + }); + }, handleSuccess(response){ this.props.handleSuccess(response); - this.props.onRequestHide(); + this.hide(); }, renderChildren() { return ReactAddons.Children.map(this.props.children, (child) => { return ReactAddons.addons.cloneWithProps(child, { - onRequestHide: this.props.onRequestHide, + onRequestHide: this.hide, handleSuccess: this.handleSuccess }); }); }, render() { + let trigger = React.cloneElement(this.props.trigger, {onClick: this.show}); + return ( - -
- {this.renderChildren()} -
-
+ + {trigger} + + + + {this.props.title} + + +
+ {this.renderChildren()} +
+
+
); } }); - export default ModalWrapper; diff --git a/js/mixins/modal_mixin.js b/js/mixins/modal_mixin.js deleted file mode 100644 index 6087f32c..00000000 --- a/js/mixins/modal_mixin.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -let ModalMixin = { - onRequestHide(e){ - if (e) { - e.preventDefault(); - } - this.props.onRequestHide(); - } -}; - -export default ModalMixin; \ No newline at end of file