From 58bc918c6d8ea15b99c477312bca412d675d7a9c Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Tue, 5 Mar 2019 09:59:11 +0000
Subject: [PATCH] GH-983: style the message like the other messages

---
 .../src/app/src/components/MessageBar/index.js |  7 ++++---
 .../app/src/components/MessagesList/index.js   | 18 ++++++++++++++++++
 .../src/containers/CurrentSubmissionDisplay.js | 15 +++++++++++----
 .../app/src/containers/MessagesContainer.js    |  5 +++--
 4 files changed, 36 insertions(+), 9 deletions(-)
 create mode 100644 opentech/static_src/src/app/src/components/MessagesList/index.js

diff --git a/opentech/static_src/src/app/src/components/MessageBar/index.js b/opentech/static_src/src/app/src/components/MessageBar/index.js
index e60dfcb47..53ec08acd 100644
--- a/opentech/static_src/src/app/src/components/MessageBar/index.js
+++ b/opentech/static_src/src/app/src/components/MessageBar/index.js
@@ -3,14 +3,14 @@ import PropTypes from 'prop-types'
 
 import { MESSAGE_TYPES } from '@actions/messages'
 
-const MessageBar = ({ message, type, onDismiss }) => {
-    const modifierClass = type ? `messages__text--${type}` : '';
 
+const MessageBar = ({ message, type, onDismiss, dismissMessage='OK' }) => {
+    const modifierClass = type ? `messages__text--${type}` : '';
     return (
         <li className={`messages__text ${modifierClass}`}>
             <div className="messages__inner">
                 <p className="messages__copy">{message}</p>
-                {onDismiss && <button className="button messages__button" onClick={onDismiss}>Ok</button>}
+                {onDismiss && <button className="button messages__button" onClick={onDismiss}>{dismissMessage}</button>}
             </div>
         </li>
     )
@@ -20,6 +20,7 @@ MessageBar.propTypes = {
     type: PropTypes.oneOf(Object.values(MESSAGE_TYPES)),
     message: PropTypes.string,
     onDismiss: PropTypes.func,
+    dismissMessage: PropTypes.string,
 }
 
 export default MessageBar
diff --git a/opentech/static_src/src/app/src/components/MessagesList/index.js b/opentech/static_src/src/app/src/components/MessagesList/index.js
new file mode 100644
index 000000000..ddad485fe
--- /dev/null
+++ b/opentech/static_src/src/app/src/components/MessagesList/index.js
@@ -0,0 +1,18 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+
+import MessageBar from '@components/MessageBar'
+
+const MessagesList = ({ children }) => {
+    return (
+        <ul className="messages">
+            { children }
+        </ul>
+    )
+}
+
+MessagesList.propTypes = {
+    children: PropTypes.oneOfType([PropTypes.arrayOf(MessageBar), MessageBar])
+}
+
+export default MessagesList
diff --git a/opentech/static_src/src/app/src/containers/CurrentSubmissionDisplay.js b/opentech/static_src/src/app/src/containers/CurrentSubmissionDisplay.js
index 93512489b..8a0fc7519 100644
--- a/opentech/static_src/src/app/src/containers/CurrentSubmissionDisplay.js
+++ b/opentech/static_src/src/app/src/containers/CurrentSubmissionDisplay.js
@@ -9,6 +9,9 @@ import {
     getCurrentSubmissionID,
 } from '@selectors/submissions'
 import SubmissionDisplay from '@components/SubmissionDisplay';
+import MessagesList from '@components/MessagesList'
+import MessageBar from '@components/MessageBar'
+
 
 const loadData = props => {
     return props.loadCurrentSubmission(['questions'], { bypassCache: true })
@@ -76,10 +79,14 @@ const  CurrentSubmissionDisplay = props => {
     }
 
     const renderUpdatedMessage = () =>{
-        return <p>
-            {updateMessage}
-            <button onClick={handleUpdateSubmission}>Show updated</button>
-        </p>
+        return <MessagesList>
+            <MessageBar
+                    type='info'
+                    message={updateMessage}
+                    onDismiss={handleUpdateSubmission}
+                    dismissMessage="Show Updated"
+               />
+        </MessagesList>
     }
 
     return <>
diff --git a/opentech/static_src/src/app/src/containers/MessagesContainer.js b/opentech/static_src/src/app/src/containers/MessagesContainer.js
index 535a43a35..1ff163bb1 100644
--- a/opentech/static_src/src/app/src/containers/MessagesContainer.js
+++ b/opentech/static_src/src/app/src/containers/MessagesContainer.js
@@ -3,17 +3,18 @@ import { connect } from 'react-redux'
 import PropTypes from 'prop-types'
 
 import MessageBar from '@components/MessageBar'
+import MessagesList from '@components/MessagesList'
 import { getMessages } from '@selectors/messages'
 import { dismissMessage } from '@actions/messages'
 
 const MessagesContainer = ({ messages, dismiss }) => {
     return (
-        <ul className="messages">
+        <MessagesList>
             {Object.values(messages).map(({ message, type, id}) =>
                 <MessageBar key={id} message={message} type={type}
                     onDismiss={() => dismiss(id)} />
             )}
-        </ul>
+        </MessagesList>
     )
 }
 
-- 
GitLab