Merge pull request #3357 from picklesrus/join-modal-x-button

One approach to hiding the close button in the modal.
This commit is contained in:
picklesrus 2019-09-24 14:03:19 -04:00 committed by GitHub
commit 036937bbfb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 57 additions and 14 deletions

View file

@ -49,17 +49,20 @@ class Modal extends React.Component {
}}
{...omit(this.props, ['className', 'overlayClassName'])}
>
<div
className="modal-content-close"
onClick={this.handleRequestClose}
>
<img
alt="close-icon"
className="modal-content-close-img"
draggable="false"
src="/svgs/modal/close-x.svg"
/>
</div>
{this.props.showCloseButton && (
<div
className="modal-content-close"
onClick={this.handleRequestClose}
>
<img
alt="close-icon"
className="modal-content-close-img"
draggable="false"
src="/svgs/modal/close-x.svg"
/>
</div>
)}
{this.props.children}
</ReactModal>
);
@ -70,7 +73,11 @@ Modal.propTypes = {
children: PropTypes.node,
className: PropTypes.string,
overlayClassName: PropTypes.string,
showCloseButton: PropTypes.bool,
useStandardSizes: PropTypes.bool
};
Modal.defaultProps = {
showCloseButton: true
};
module.exports = Modal;

View file

@ -12,6 +12,7 @@ const JoinModal = ({
}) => (
<Modal
isOpen
showCloseButton
useStandardSizes
className="mod-join"
shouldCloseOnOverlayClick={false}
@ -26,7 +27,8 @@ const JoinModal = ({
JoinModal.propTypes = {
onCompleteRegistration: PropTypes.func,
onRequestClose: PropTypes.func
onRequestClose: PropTypes.func,
showCloseButton: PropTypes.bool
};
module.exports = JoinModal;

View file

@ -5,12 +5,12 @@ const ErrorBoundary = require('../../components/errorboundary/errorboundary.jsx'
// Require this even though we don't use it because, without it, webpack runs out of memory...
const Page = require('../../components/page/www/page.jsx'); // eslint-disable-line no-unused-vars
const openModal = true;
const Register = () => (
<ErrorBoundary>
<JoinModal
isOpen={openModal}
isOpen
key="scratch3registration"
showCloseButton={false}
/>
</ErrorBoundary>
);

View file

@ -0,0 +1,34 @@
const React = require('react');
const {shallowWithIntl} = require('../../helpers/intl-helpers.jsx');
const Modal = require('../../../src/components/modal/base/modal.jsx');
describe('Modal', () => {
test('Close button not shown when showCloseButton false', () => {
const showClose = true;
const component = shallowWithIntl(
<Modal
showCloseButton={showClose}
/>
);
expect(component.find('div.modal-content-close').exists()).toBe(true);
expect(component.find('img.modal-content-close-img').exists()).toBe(true);
});
test('Close button shown by default', () => {
const component = shallowWithIntl(
<Modal />
);
expect(component.find('div.modal-content-close').exists()).toBe(true);
expect(component.find('img.modal-content-close-img').exists()).toBe(true);
});
test('Close button shown when showCloseButton true', () => {
const showClose = false;
const component = shallowWithIntl(
<Modal
showCloseButton={showClose}
/>
);
expect(component.find('div.modal-content-close').exists()).toBe(false);
expect(component.find('img.modal-content-close-img').exists()).toBe(false);
});
});