From 3c576a011072ae841096bd869aacab5ebf8ffe97 Mon Sep 17 00:00:00 2001 From: Ray Schamp Date: Tue, 24 Apr 2018 09:35:46 -0400 Subject: [PATCH] Allow the back button to work with libraries Push to history when the library mounts. Whenever popstate occurs after mounting, request to be closed. Behavior captured in the `Modal` container. If we want to re-use this functionality for anything else that uses `ModalComponent`, just use the `Modal` container rather than `ModalComponent`. --- src/components/library/library.jsx | 8 +++-- src/containers/backdrop-library.jsx | 1 + src/containers/costume-library.jsx | 1 + src/containers/extension-library.jsx | 1 + src/containers/modal.jsx | 54 ++++++++++++++++++++++++++++ src/containers/sound-library.jsx | 1 + src/containers/sprite-library.jsx | 1 + 7 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 src/containers/modal.jsx diff --git a/src/components/library/library.jsx b/src/components/library/library.jsx index 16e9ecd53..56b1f1c96 100644 --- a/src/components/library/library.jsx +++ b/src/components/library/library.jsx @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import LibraryItem from '../library-item/library-item.jsx'; -import ModalComponent from '../modal/modal.jsx'; +import Modal from '../../containers/modal.jsx'; import Divider from '../divider/divider.jsx'; import Filter from '../filter/filter.jsx'; import TagButton from '../../containers/tag-button.jsx'; @@ -87,9 +87,10 @@ class LibraryComponent extends React.Component { } render () { return ( - {(this.props.filterable || this.props.tags) && ( @@ -151,7 +152,7 @@ class LibraryComponent extends React.Component { ); })} - + ); } } @@ -169,6 +170,7 @@ LibraryComponent.propTypes = { /* eslint-enable react/no-unused-prop-types, lines-around-comment */ ), filterable: PropTypes.bool, + id: PropTypes.string.isRequired, onItemMouseEnter: PropTypes.func, onItemMouseLeave: PropTypes.func, onItemSelected: PropTypes.func, diff --git a/src/containers/backdrop-library.jsx b/src/containers/backdrop-library.jsx index 49c73a7c5..98604bf18 100644 --- a/src/containers/backdrop-library.jsx +++ b/src/containers/backdrop-library.jsx @@ -44,6 +44,7 @@ class BackdropLibrary extends React.Component { return ( ; + } +} + +Modal.propTypes = { + id: PropTypes.string.isRequired, + onRequestClose: PropTypes.func, + onRequestOpen: PropTypes.func +}; + +export default Modal; diff --git a/src/containers/sound-library.jsx b/src/containers/sound-library.jsx index aa02765f7..3d68ea6f3 100644 --- a/src/containers/sound-library.jsx +++ b/src/containers/sound-library.jsx @@ -93,6 +93,7 @@ class SoundLibrary extends React.PureComponent { return (