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 ( + +
    + +

    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 + + {renderErrors()} +
    +
    + {renderProtip()} +
    + ); +}; 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