diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.jsx b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
index d2f847306..0b030c668 100644
--- a/client/homebrew/brewRenderer/errorBar/errorBar.jsx
+++ b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
@@ -1,75 +1,87 @@
require('./errorBar.less');
const React = require('react');
-const createClass = require('create-react-class');
-const _ = require('lodash');
+const _ = require('lodash');
-const ErrorBar = createClass({
- displayName : 'ErrorBar',
- getDefaultProps : function() {
- return {
- errors : []
- };
- },
-
- hasOpenError : false,
- hasCloseError : false,
- hasMatchError : false,
-
- renderErrors : function(){
- this.hasOpenError = false;
- this.hasCloseError = false;
- this.hasMatchError = false;
+import Dialog from '../../../components/dialog.jsx';
- 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 DISMISS_BUTTON = ;
- return ;
- },
+const ErrorBar = ( props ) => {
+ let hasOpenError = false;
+ let hasCloseError = false;
+ let hasMatchError = false;
- 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!
- );
- }
+ const renderErrors = () => {
+ hasOpenError = false;
+ hasCloseError = false;
+ hasMatchError = false;
- 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.
-
);
- }
+ const errors = _.map(props.errors, (err, idx) => {
+ if (err.id === 'OPEN') hasOpenError = true;
+ if (err.id === 'CLOSE') hasCloseError = true;
+ if (err.id === 'MISMATCH') hasMatchError = true;
- if(this.hasMatchError){
- msg.push(
- A type mismatch means you closed a tag, but the last open tag was a different type.
-
);
- }
- return
-
Protips!
- {msg}
- ;
- },
+ return (
+
+ Line {err.line} : {err.text}, '{err.type}' tag
+
+ );
+ });
- render : function(){
- if(!this.props.errors.length) return null;
+ return ;
+ };
- 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()}
-
- {this.renderProtip()}
- ;
- }
-});
+ const renderProtip = () => {
+ const msg = [];
+ if (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 (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 (hasMatchError) {
+ msg.push(
+
+ A type mismatch means you closed a tag, but the last open tag was a different type.
+
+ );
+ }
+
+ return (
+
+
Protips!
+ {msg}
+
+ );
+ };
+
+ if (!props.errors.length) return null;
+
+ return (
+
+ );
+};
module.exports = ErrorBar;
diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.less b/client/homebrew/brewRenderer/errorBar/errorBar.less
index f3f2dbaae..7fa37c91e 100644
--- a/client/homebrew/brewRenderer/errorBar/errorBar.less
+++ b/client/homebrew/brewRenderer/errorBar/errorBar.less
@@ -1,60 +1,72 @@
-.errorBar{
+.errorBar {
position : absolute;
- z-index : 10000;
- box-sizing : border-box;
+ z-index : 1000;
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;
+ background-color : @red;
+ border : unset;
+
+ .content {
+ > i {
+ float : left;
+ margin-right : 10px;
+ margin-bottom : 20px;
+ font-size : 3em;
+ opacity : 0.8;
+ }
+ h3 {
+ font-size : 1.1em;
+ font-weight : 800;
+ }
}
- h3{
- font-size : 1.1em;
- font-weight : 800;
- }
- ul{
+
+ ul {
margin-top : 15px;
font-size : 0.8em;
list-style-position : inside;
list-style-type : disc;
- li{
- line-height : 1.6em;
- }
+ li { line-height : 1.6em; }
}
- hr{
+ hr {
box-sizing : border-box;
+ width : 100%;
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;
+ .protips {
font-size : 0.6em;
- &>div{
+ & > div {
margin-bottom : 10px;
line-height : 1.2em;
}
- h4{
- opacity : 0.8;
+ h4 {
font-weight : 800;
line-height : 1.5em;
text-transform : uppercase;
+ opacity : 0.8;
}
}
+ button.dismiss {
+ position : absolute;
+ top : 30px;
+ right : 30px;
+ height : max-content;
+ padding : unset;
+ font-size : 40px;
+ cursor : pointer;
+ background-color : transparent;
+ opacity : 0.6;
+ &:hover { opacity : 1; }
+ }
}
\ No newline at end of file