From a7b45c81bf4facd2d4e1a7113a041ff8e800a0f0 Mon Sep 17 00:00:00 2001 From: Dorian Goepp <dorian.goepp@gmail.com> Date: Wed, 21 Aug 2019 17:09:12 +0200 Subject: [PATCH] fix the modal for a good look. --- package-lock.json | 52 ++++++++++++++++------------------------------- package.json | 3 ++- src/index.js | 39 ++++++++++++++++++++++++----------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index b525edb..d776380 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8233,9 +8233,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -8559,9 +8559,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -10643,6 +10643,11 @@ "resolved": "https://registry.npmjs.org/react-numeric-input/-/react-numeric-input-2.2.3.tgz", "integrity": "sha1-S/WRjD6v7YUagN8euZLZQQArtVI=" }, + "react-pure-modal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/react-pure-modal/-/react-pure-modal-1.5.1.tgz", + "integrity": "sha512-ac5H4D9D6W1Mi7IMyFoNGxht+uK/YhFkB0S10rG6ptHs9B7kTvYic718u9mRPDep0AWhonl/pWT3E97dTWlrcg==" + }, "react-scripts": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.0.1.tgz", @@ -11438,9 +11443,9 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -12556,35 +12561,14 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { diff --git a/package.json b/package.json index 078fd87..9a9a640 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "d3": "^5.8.0", "d3-scale": "^2.2.2", "flexlayout-react": "^0.3.3", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "mobx": "^5.9.0", "mobx-react": "^5.4.3", "prop-types": "^15.7.2", @@ -19,6 +19,7 @@ "react-dom": "^16.7.0", "react-jsonschema-form": "^1.5.0", "react-numeric-input": "^2.2.3", + "react-pure-modal": "^1.5.1", "react-scripts": "^3.0.1", "react-sizeme": "^2.5.2", "roslib": "^1.0.1", diff --git a/src/index.js b/src/index.js index 696f441..588e37c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,8 @@ import React from "react"; import ReactDOM from "react-dom"; +// A little library to display modals on top fo the page +import PureModal from 'react-pure-modal'; +import 'react-pure-modal/dist/react-pure-modal.min.css'; // MobX, a state manager import {decorate, observable} from "mobx" import {observer} from 'mobx-react' @@ -68,21 +71,26 @@ class Main extends React.Component { } } - componentWillUnmount() { - if (this.ros) { - this.ros.close() - } + // When the esc key is pressed, if the modal is enabled, disable it + handleKeyDown = (event) => { + if(event.keyCode === 27 && this.store.modal.enabled === true) { + this.store.modal.enabled = false; + } } - render() { - let modal = null; - if (this.store.modal.enabled) { - modal = ( - <div id="overlay" tabIndex="-1" role="dialog"> - <Modal store={this.store}/> - </div>); + componentDidMount(){ + document.addEventListener("keydown", this.handleKeyDown, false); + } + + componentWillUnmount() { + if (this.ros) { + this.ros.close() } + document.removeEventListener("keydown", this.handleKeyDown, false); + } + + render() { function addTab(component, name) { return () => { this.store.sharedData.set('newTab', {component: component, name: name}); @@ -102,7 +110,14 @@ class Main extends React.Component { <Board ros={this.ros} store={this.store}/> </div> </div> - {modal} + <PureModal + width = "700px" + onClose={() => {this.store.modal.enabled = false}} + isOpen = {this.store.modal.enabled} + ref="modal" + > + <Modal store={this.store}/> + </PureModal> </div> ) } -- GitLab