diff --git a/client/components/dialog.jsx b/client/components/dialog.jsx
index 0cdda2dee..e88d06c99 100644
--- a/client/components/dialog.jsx
+++ b/client/components/dialog.jsx
@@ -6,10 +6,8 @@ function Dialog({ dismisskeys = [], closeText = 'Close', blocking = false, ...re
const dialogRef = useRef(null);
useEffect(()=>{
- if(dismisskeys.length !== 0) {
- blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
- }
- }, [dialogRef.current, dismisskeys]);
+ blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
+ }, []);
const dismiss = ()=>{
dismisskeys.forEach((key)=>{
diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.jsx b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
index d2f847306..78b36d70c 100644
--- a/client/homebrew/brewRenderer/errorBar/errorBar.jsx
+++ b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
@@ -1,75 +1,53 @@
require('./errorBar.less');
const React = require('react');
-const createClass = require('create-react-class');
-const _ = require('lodash');
-const ErrorBar = createClass({
- displayName : 'ErrorBar',
- getDefaultProps : function() {
- return {
- errors : []
- };
- },
+import Dialog from '../../../components/dialog.jsx';
- hasOpenError : false,
- hasCloseError : false,
- hasMatchError : false,
+const DISMISS_BUTTON = ;
- renderErrors : function(){
- this.hasOpenError = false;
- this.hasCloseError = false;
- this.hasMatchError = false;
+const ErrorBar = (props)=>{
+ if(!props.errors.length) return null;
+ let hasOpenError = false, hasCloseError = false, hasMatchError = false;
+ props.errors.map((err)=>{
+ if(err.id === 'OPEN') hasOpenError = true;
+ if(err.id === 'CLOSE') hasCloseError = true;
+ if(err.id === 'MISMATCH') hasMatchError = true;
+ });
- const errors = _.map(this.props.errors, (err, idx)=>{
- if(err.id == 'OPEN') this.hasOpenError = true;
- if(err.id == 'CLOSE') this.hasCloseError = true;
- if(err.id == 'MISMATCH') this.hasMatchError = true;
- return
- Line {err.line} : {err.text}, '{err.type}' tag
- ;
- });
+ const renderErrors = ()=>(
+
+ {props.errors.map((err, idx)=>{
+ return -
+ Line {err.line} : {err.text}, '{err.type}' tag
+
;
+ })}
+
+ );
- return ;
- },
-
- renderProtip : function(){
- const msg = [];
- if(this.hasOpenError){
- msg.push(
- An unmatched opening tag means there's an opened tag that isn't closed. You need to close your tags, like this {'
'}. Make sure to match types!
- );
- }
-
- if(this.hasCloseError){
- msg.push(
- An unmatched closing tag means you closed a tag without opening it. Either remove it, or check to where you think you opened it.
-
);
- }
-
- if(this.hasMatchError){
- msg.push(
- A type mismatch means you closed a tag, but the last open tag was a different type.
-
);
- }
- return
+ const renderProtip = ()=>(
+
Protips!
- {msg}
- ;
- },
+ {hasOpenError &&
Unmatched opening tag. Close your tags, like this {'
'}. Match types!
}
+ {hasCloseError && Unmatched closing tag. Either remove it or check where it was opened.
}
+ {hasMatchError && Type mismatch. Closed a tag with a different type.
}
+
+ );
- render : function(){
- if(!this.props.errors.length) return null;
-
- return
-
-
There are HTML errors in your markup
-
If these aren't fixed your brew will not render properly when you print it to PDF or share it
- {this.renderErrors()}
+ return (
+
;
- }
-});
+ {renderProtip()}
+
+ );
+};
module.exports = ErrorBar;
diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.less b/client/homebrew/brewRenderer/errorBar/errorBar.less
index f3f2dbaae..163648533 100644
--- a/client/homebrew/brewRenderer/errorBar/errorBar.less
+++ b/client/homebrew/brewRenderer/errorBar/errorBar.less
@@ -1,60 +1,58 @@
-.errorBar{
+.errorBar {
position : absolute;
- z-index : 10000;
- box-sizing : border-box;
+ top : 32px;
+ z-index : 1;
width : 100%;
- margin-right : 13px;
- padding : 20px;
- padding-bottom : 10px;
- padding-left : 100px;
- background-color : @red;
color : white;
- i{
- position : absolute;
- left : 30px;
- opacity : 0.8;
- font-size : 3em;
- }
- h3{
- font-size : 1.1em;
- font-weight : 800;
- }
- ul{
- margin-top : 15px;
- font-size : 0.8em;
- list-style-position : inside;
- list-style-type : disc;
- li{
- line-height : 1.6em;
+ background-color : @red;
+ border : unset;
+
+ div {
+ > i {
+ float : left;
+ margin-right : 10px;
+ margin-bottom : 20px;
+ font-size : 3em;
+ opacity : 0.8;
+ }
+ h2 { font-weight : 800; }
+ ul {
+ margin-top : 15px;
+ font-size : 0.8em;
+ list-style-position : inside;
+ list-style-type : disc;
+ li { line-height : 1.6em; }
}
}
- hr{
- box-sizing : border-box;
+ hr {
height : 2px;
- width : 150%;
margin-top : 25px;
margin-bottom : 15px;
- margin-left : -100px;
background-color : darken(@red, 8%);
border : none;
}
- small{
- font-size: 0.6em;
- opacity: 0.7;
+ small {
+ font-size : 0.6em;
+ opacity : 0.7;
}
- .protips{
- margin-left : -80px;
- font-size : 0.6em;
- &>div{
- margin-bottom : 10px;
- line-height : 1.2em;
- }
- h4{
- opacity : 0.8;
+ .protips {
+ font-size : 0.6em;
+ line-height : 1.2em;
+ h4 {
font-weight : 800;
line-height : 1.5em;
text-transform : uppercase;
}
}
+ button.dismiss {
+ position : absolute;
+ top : 20px;
+ right : 30px;
+ padding : unset;
+ font-size : 40px;
+ background-color : transparent;
+ opacity : 0.6;
+ &:hover { opacity : 1; }
+ }
}
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
index 0c8fc4b8c..b2045f13d 100644
--- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
+++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
@@ -49,6 +49,7 @@ const NotificationPopup = ()=>{
));
};
+ if(!notifications.length) return;
return