diff --git a/web/client/components/TOC/DefaultLayer.jsx b/web/client/components/TOC/DefaultLayer.jsx index 9b9c9b17f6..d5b2e506d0 100644 --- a/web/client/components/TOC/DefaultLayer.jsx +++ b/web/client/components/TOC/DefaultLayer.jsx @@ -12,11 +12,11 @@ var VisibilityCheck = require('./fragments/VisibilityCheck'); var Title = require('./fragments/Title'); var InlineSpinner = require('../misc/spinners/InlineSpinner/InlineSpinner'); var WMSLegend = require('./fragments/WMSLegend'); -const ConfirmButton = require('../buttons/ConfirmButton'); +const ConfirmModal = require('../maps/modals/ConfirmModal'); const LayersTool = require('./fragments/LayersTool'); const SettingsModal = require('./fragments/SettingsModal'); const Message = require('../I18N/Message'); -const {Glyphicon} = require('react-bootstrap'); +const {Glyphicon, Button} = require('react-bootstrap'); var DefaultLayer = React.createClass({ propTypes: { @@ -39,6 +39,7 @@ var DefaultLayer = React.createClass({ saveText: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.element]), closeText: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.element]), confirmDeleteText: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.element]), + confirmDeleteMessage: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.element]), modalOptions: React.PropTypes.object, settingsOptions: React.PropTypes.object, visibilityCheckType: React.PropTypes.string, @@ -58,10 +59,20 @@ var DefaultLayer = React.createClass({ includeDeleteButtonInSettings: false, modalOptions: {}, settingsOptions: {}, - confirmDeleteText: , + confirmDeleteText: , + confirmDeleteMessage: , visibilityCheckType: "glyph" }; }, + onConfirmDelete() { + this.props.removeNode(this.props.node.id, "layers"); + this.closeDeleteDialog(); + }, + getInitialState: function() { + return { + showDeleteDialog: false + }; + }, renderCollapsible() { if (this.props.node && this.props.node.type === 'wms') { return ; @@ -72,14 +83,11 @@ var DefaultLayer = React.createClass({ const tools = []; if (this.props.activateRemoveLayer) { tools.push( - )} - style={{"float": "right", cursor: "pointer", backgroundColor: "transparent", marginRight: 3, padding: 0, outline: "none"}} - confirming={{text: this.props.confirmDeleteText, - style: {"float": "right", cursor: "pointer", marginTop: -5}}} - onConfirm={() => { - this.props.removeNode(this.props.node.id, "layers"); - }}/> + ); } if (this.props.activateSettingsTool) { @@ -141,8 +149,19 @@ var DefaultLayer = React.createClass({ /> {this.renderCollapsible()} {this.renderTools()} + } body={this.props.confirmDeleteMessage} /> ); + }, + closeDeleteDialog() { + this.setState({ + showDeleteDialog: false + }); + }, + displayDeleteDialog() { + this.setState({ + showDeleteDialog: true + }); } }); diff --git a/web/client/components/TOC/__tests__/DefaultLayer-test.jsx b/web/client/components/TOC/__tests__/DefaultLayer-test.jsx index 3e5c3fa191..1fdd4cd8e6 100644 --- a/web/client/components/TOC/__tests__/DefaultLayer-test.jsx +++ b/web/client/components/TOC/__tests__/DefaultLayer-test.jsx @@ -156,7 +156,7 @@ describe('test DefaultLayer module component', () => { const tool = ReactDOM.findDOMNode(TestUtils.scryRenderedDOMComponentsWithClass(comp, "clayer_removal_button")[0]); expect(tool).toExist(); tool.click(); - const confirmButton = ReactDOM.findDOMNode(TestUtils.scryRenderedDOMComponentsWithClass(comp, "btn-warning")[0]); + const confirmButton = document.getElementsByClassName("clayer_removal_confirm_button")[0]; expect(confirmButton).toExist(); confirmButton.click(); expect(spy.calls.length).toBe(1); diff --git a/web/client/components/TOC/fragments/css/layertool.css b/web/client/components/TOC/fragments/css/layertool.css index 9eee272716..c34b560928 100644 --- a/web/client/components/TOC/fragments/css/layertool.css +++ b/web/client/components/TOC/fragments/css/layertool.css @@ -1,6 +1,5 @@ .toc-layer-tool { float: right; margin-top: 5px; - margin-right: 10px; cursor: pointer; } diff --git a/web/client/components/TOC/fragments/css/visibilitycheck.css b/web/client/components/TOC/fragments/css/visibilitycheck.css index b7376823b9..b5fa9623c4 100644 --- a/web/client/components/TOC/fragments/css/visibilitycheck.css +++ b/web/client/components/TOC/fragments/css/visibilitycheck.css @@ -12,9 +12,6 @@ input[type="checkbox"].visibility-check,input[type="radio"].visibility-check { margin-right: 5px; margin-top: 5px; } -button.confirm-button.clayer_removal_button { - border-color: transparent; -} -button.confirm-button.clayer_removal_button .glyphicon { - color: #a94442!important; +button.clayer_removal_button.btn.btn-default { + border: transparent; } diff --git a/web/client/components/maps/modals/ConfirmModal.jsx b/web/client/components/maps/modals/ConfirmModal.jsx index 8e149ebb18..677252c19e 100644 --- a/web/client/components/maps/modals/ConfirmModal.jsx +++ b/web/client/components/maps/modals/ConfirmModal.jsx @@ -20,6 +20,7 @@ const assign = require('object-assign'); const ConfirmModal = React.createClass({ propTypes: { // props + className: React.PropTypes.string, show: React.PropTypes.bool, options: React.PropTypes.object, onConfirm: React.PropTypes.func, @@ -39,6 +40,7 @@ const ConfirmModal = React.createClass({ onConfirm: ()=> {}, onClose: () => {}, options: {}, + className: "", useModal: true, closeGlyph: "", style: {}, @@ -56,6 +58,7 @@ const ConfirmModal = React.createClass({ const footer = (