From 7fc0cadb81b36c2e09ea846240b6bf6fcf28243e Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Sun, 21 Jul 2024 23:11:21 +1200
Subject: [PATCH 01/53] Initial functionality pass
---
client/homebrew/brewRenderer/brewRenderer.jsx | 61 ++++++++++++++++++-
.../homebrew/brewRenderer/brewRenderer.less | 35 +++++++++--
2 files changed, 90 insertions(+), 6 deletions(-)
diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index 3c36244c1..5d48cc4e8 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -65,9 +65,11 @@ const BrewRenderer = (props)=>{
height : PAGE_HEIGHT,
isMounted : false,
visibility : 'hidden',
+ showHeaderNav : false
});
const mainRef = useRef(null);
+ const pagesRef = useRef(null);
if(props.renderer == 'legacy') {
rawPages = props.text.split('\\page');
@@ -188,6 +190,60 @@ const BrewRenderer = (props)=>{
document.dispatchEvent(new MouseEvent('click'));
};
+ const toggleHeaderNav = ()=>{
+ setState((prevState)=>({
+ ...prevState,
+ showHeaderNav : !prevState.showHeaderNav
+ }));
+ };
+
+ const renderHeaderNav = ()=>{
+ return <>
+
+ {state.showHeaderNav && renderHeaderLinks()}
+ >;
+ };
+
+ const renderHeaderLinks = ()=>{
+ if(!pagesRef.current) return;
+ const elements = pagesRef.current.querySelectorAll('[id]');
+ if(!elements) return;
+ const navList = [];
+
+ elements.forEach((el)=>{
+ if(el.className.match(/\bpage\b/)) {
+ navList.push({
+ depth : 0,
+ text : `Page ${el.id.slice(1)}`,
+ link : el.id
+ });
+ return;
+ }
+ if(el.localName.match(/^h[1-6]/)){
+ navList.push({
+ depth : el.localName[1],
+ text : el.innerText,
+ link : el.id
+ });
+ return;
+ }
+ navList.push({
+ depth : 7,
+ text : el.innerText,
+ link : el.id
+ });
+ });
+
+ return _.map(navList, (navItem)=>{
+ return
+ {`${'-'.repeat(navItem.depth)}${navItem.text}`}
+
;
+ });
+ };
+
const rendererPath = props.renderer == 'V3' ? 'V3' : 'Legacy';
const themePath = props.theme ?? '5ePHB';
const baseThemePath = Themes[rendererPath][themePath].baseTheme;
@@ -232,12 +288,15 @@ const BrewRenderer = (props)=>{
&&
<>
{renderStyle()}
-
+
+ {renderHeaderNav()}
+
{renderPageInfo()}
>
diff --git a/client/homebrew/brewRenderer/brewRenderer.less b/client/homebrew/brewRenderer/brewRenderer.less
index 28ea8005e..1482a09b4 100644
--- a/client/homebrew/brewRenderer/brewRenderer.less
+++ b/client/homebrew/brewRenderer/brewRenderer.less
@@ -31,12 +31,8 @@
visibility: hidden;
}
}
-
-
-
-
-
}
+
.pane { position : relative; }
.pageInfo {
position : absolute;
@@ -65,6 +61,32 @@
background-color : #333333;
}
+.headerNav {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ padding: 5px 10px;
+ background-color: #ccc;
+ border-radius: 5px;
+ max-height: 100vh;
+ overflow-y: auto;
+ .navIcon {
+ cursor: pointer;
+ }
+ p {
+ padding: 2px;
+ a {
+ color: inherit;
+ text-decoration: none;
+ cursor: pointer;
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+}
+
+
@media print {
.brewRenderer {
height: 100%;
@@ -76,4 +98,7 @@
}
}
}
+ .headerNav {
+ visibility: hidden;
+ }
}
\ No newline at end of file
From 17b081b18be4dfec488608ef42cb93754ebff7d4 Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 22 Jul 2024 17:30:29 +1200
Subject: [PATCH 02/53] Added showHeaderNav prop to make nav menu conditional
---
client/homebrew/brewRenderer/brewRenderer.jsx | 11 ++++++++---
client/homebrew/pages/editPage/editPage.jsx | 1 +
client/homebrew/pages/sharePage/sharePage.jsx | 1 +
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index 5d48cc4e8..e18af0782 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -57,6 +57,7 @@ const BrewRenderer = (props)=>{
lang : '',
errors : [],
currentEditorPage : 0,
+ showHeaderNav : false,
...props
};
@@ -294,9 +295,13 @@ const BrewRenderer = (props)=>{
>
}
-
- {renderHeaderNav()}
-
+ {props.showHeaderNav ?
+
+ {renderHeaderNav()}
+
+ :
+ <>>
+ }
{renderPageInfo()}
>
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index 48d0f3fe5..8473a63b3 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -416,6 +416,7 @@ const EditPage = createClass({
lang={this.state.brew.lang}
currentEditorPage={this.state.currentEditorPage}
allowPrint={true}
+ showHeaderNav={true}
/>
diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx
index 9695ee810..6c3c943b8 100644
--- a/client/homebrew/pages/sharePage/sharePage.jsx
+++ b/client/homebrew/pages/sharePage/sharePage.jsx
@@ -100,6 +100,7 @@ const SharePage = createClass({
renderer={this.props.brew.renderer}
theme={this.props.brew.theme}
allowPrint={true}
+ showHeaderNav={true}
/>
;
From c269d32247dc0a9f6dc473530b7aa45cedfa9d7d Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 22 Jul 2024 18:45:36 +1200
Subject: [PATCH 03/53] Move headerNav to separate component
---
client/homebrew/brewRenderer/brewRenderer.jsx | 67 +----------------
.../homebrew/brewRenderer/brewRenderer.less | 25 -------
.../brewRenderer/headerNav/headerNav.jsx | 73 +++++++++++++++++++
.../brewRenderer/headerNav/headerNav.less | 30 ++++++++
4 files changed, 107 insertions(+), 88 deletions(-)
create mode 100644 client/homebrew/brewRenderer/headerNav/headerNav.jsx
create mode 100644 client/homebrew/brewRenderer/headerNav/headerNav.less
diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index e18af0782..9a55eb657 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -15,6 +15,8 @@ const Frame = require('react-frame-component').default;
const dedent = require('dedent-tabs').default;
const { printCurrentBrew } = require('../../../shared/helpers.js');
+import HeaderNav from './headerNav/headerNav.jsx';
+
const DOMPurify = require('dompurify');
const purifyConfig = { FORCE_BODY: true, SANITIZE_DOM: false };
@@ -65,8 +67,7 @@ const BrewRenderer = (props)=>{
viewablePageNumber : 0,
height : PAGE_HEIGHT,
isMounted : false,
- visibility : 'hidden',
- showHeaderNav : false
+ visibility : 'hidden'
});
const mainRef = useRef(null);
@@ -191,60 +192,6 @@ const BrewRenderer = (props)=>{
document.dispatchEvent(new MouseEvent('click'));
};
- const toggleHeaderNav = ()=>{
- setState((prevState)=>({
- ...prevState,
- showHeaderNav : !prevState.showHeaderNav
- }));
- };
-
- const renderHeaderNav = ()=>{
- return <>
-
- {state.showHeaderNav && renderHeaderLinks()}
- >;
- };
-
- const renderHeaderLinks = ()=>{
- if(!pagesRef.current) return;
- const elements = pagesRef.current.querySelectorAll('[id]');
- if(!elements) return;
- const navList = [];
-
- elements.forEach((el)=>{
- if(el.className.match(/\bpage\b/)) {
- navList.push({
- depth : 0,
- text : `Page ${el.id.slice(1)}`,
- link : el.id
- });
- return;
- }
- if(el.localName.match(/^h[1-6]/)){
- navList.push({
- depth : el.localName[1],
- text : el.innerText,
- link : el.id
- });
- return;
- }
- navList.push({
- depth : 7,
- text : el.innerText,
- link : el.id
- });
- });
-
- return _.map(navList, (navItem)=>{
- return
- {`${'-'.repeat(navItem.depth)}${navItem.text}`}
-
;
- });
- };
-
const rendererPath = props.renderer == 'V3' ? 'V3' : 'Legacy';
const themePath = props.theme ?? '5ePHB';
const baseThemePath = Themes[rendererPath][themePath].baseTheme;
@@ -295,13 +242,7 @@ const BrewRenderer = (props)=>{
>
}
- {props.showHeaderNav ?
-
- {renderHeaderNav()}
-
- :
- <>>
- }
+ {props.showHeaderNav ? : <>>}
{renderPageInfo()}
>
diff --git a/client/homebrew/brewRenderer/brewRenderer.less b/client/homebrew/brewRenderer/brewRenderer.less
index 1482a09b4..ad34c6221 100644
--- a/client/homebrew/brewRenderer/brewRenderer.less
+++ b/client/homebrew/brewRenderer/brewRenderer.less
@@ -61,31 +61,6 @@
background-color : #333333;
}
-.headerNav {
- position: fixed;
- top: 0px;
- left: 0px;
- padding: 5px 10px;
- background-color: #ccc;
- border-radius: 5px;
- max-height: 100vh;
- overflow-y: auto;
- .navIcon {
- cursor: pointer;
- }
- p {
- padding: 2px;
- a {
- color: inherit;
- text-decoration: none;
- cursor: pointer;
- &:hover {
- text-decoration: underline;
- }
- }
- }
-}
-
@media print {
.brewRenderer {
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.jsx b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
new file mode 100644
index 000000000..360a77dfd
--- /dev/null
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
@@ -0,0 +1,73 @@
+require('./headerNav.less');
+
+import * as React from 'react';
+import * as _ from 'lodash';
+
+
+const HeaderNav = React.forwardRef(({}, pagesRef)=>{
+
+ const [state, setState] = React.useState({
+ showHeaderNav : false
+ });
+
+ const toggleHeaderNav = ()=>{
+ setState((prevState)=>({
+ ...prevState,
+ showHeaderNav : !prevState.showHeaderNav
+ }));
+ };
+
+ const renderHeaderLinks = ()=>{
+ if(!pagesRef.current) return;
+ const elements = pagesRef.current.querySelectorAll('[id]');
+ if(!elements) return;
+ const navList = [];
+
+ elements.forEach((el)=>{
+ if(el.className.match(/\bpage\b/)) {
+ navList.push({
+ depth : 0,
+ text : `Page ${el.id.slice(1)}`,
+ link : el.id
+ });
+ return;
+ }
+ if(el.localName.match(/^h[1-6]/)){
+ navList.push({
+ depth : el.localName[1],
+ text : el.innerText,
+ link : el.id
+ });
+ return;
+ }
+ navList.push({
+ depth : 7,
+ text : el.innerText,
+ link : el.id
+ });
+ });
+
+ return _.map(navList, (navItem, index)=>{
+ return ;
+ });
+
+ };
+
+ return
+
+ {state.showHeaderNav && renderHeaderLinks()}
+
;
+}
+);
+
+const HeaderNavItem = ({ index, link, text, depth })=>{
+ return
+ {`${'-'.repeat(depth)}${text}`}
+
;
+};
+
+export default HeaderNav;
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.less b/client/homebrew/brewRenderer/headerNav/headerNav.less
new file mode 100644
index 000000000..381d1aa53
--- /dev/null
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.less
@@ -0,0 +1,30 @@
+.headerNav {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ padding: 5px 10px;
+ background-color: #ccc;
+ border-radius: 5px;
+ max-height: 100vh;
+ overflow-y: auto;
+ &.active {
+ padding-bottom: 10px;
+ .navIcon {
+ padding-bottom: 10px;
+ }
+ }
+ .navIcon {
+ cursor: pointer;
+ }
+ p {
+ padding: 2px;
+ a {
+ color: inherit;
+ text-decoration: none;
+ cursor: pointer;
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+}
\ No newline at end of file
From effeffd9068b670080b9b7825094ee53bb10d5df Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 22 Jul 2024 19:07:58 +1200
Subject: [PATCH 04/53] Add styling to page links
---
.../brewRenderer/headerNav/headerNav.jsx | 17 ++++++++++-------
.../brewRenderer/headerNav/headerNav.less | 3 +++
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.jsx b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
index 360a77dfd..40f6cf4af 100644
--- a/client/homebrew/brewRenderer/headerNav/headerNav.jsx
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
@@ -26,9 +26,10 @@ const HeaderNav = React.forwardRef(({}, pagesRef)=>{
elements.forEach((el)=>{
if(el.className.match(/\bpage\b/)) {
navList.push({
- depth : 0,
- text : `Page ${el.id.slice(1)}`,
- link : el.id
+ depth : 0,
+ text : `Page ${el.id.slice(1)}`,
+ link : el.id,
+ className : 'pageLink'
});
return;
}
@@ -48,7 +49,7 @@ const HeaderNav = React.forwardRef(({}, pagesRef)=>{
});
return _.map(navList, (navItem, index)=>{
- return ;
+ return ;
});
};
@@ -64,9 +65,11 @@ const HeaderNav = React.forwardRef(({}, pagesRef)=>{
}
);
-const HeaderNavItem = ({ index, link, text, depth })=>{
- return
- {`${'-'.repeat(depth)}${text}`}
+const HeaderNavItem = ({ link, text, depth, className })=>{
+ return
+
+ {`${'-'.repeat(depth)}${text}`}
+
;
};
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.less b/client/homebrew/brewRenderer/headerNav/headerNav.less
index 381d1aa53..588687d88 100644
--- a/client/homebrew/brewRenderer/headerNav/headerNav.less
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.less
@@ -25,6 +25,9 @@
&:hover {
text-decoration: underline;
}
+ &.pageLink {
+ font-weight: 900;
+ }
}
}
}
\ No newline at end of file
From a59135430cd02f791f7deef5bc046c56a12494c0 Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 26 Aug 2024 15:30:58 +1200
Subject: [PATCH 05/53] Fix missing comma
---
client/homebrew/brewRenderer/brewRenderer.jsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index c891b07d1..a7b93522d 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -67,7 +67,7 @@ const BrewRenderer = (props)=>{
viewablePageNumber : 0,
height : PAGE_HEIGHT,
isMounted : false,
- visibility : 'hidden'
+ visibility : 'hidden',
zoom : 100,
currentPageNumber : 1,
});
From 380c1444ca71ac3b48dd67e8e6498e325e469ad8 Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 26 Aug 2024 16:01:12 +1200
Subject: [PATCH 06/53] Tweak position to account for new toolbar
---
client/homebrew/brewRenderer/headerNav/headerNav.less | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.less b/client/homebrew/brewRenderer/headerNav/headerNav.less
index 588687d88..c03887413 100644
--- a/client/homebrew/brewRenderer/headerNav/headerNav.less
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.less
@@ -1,6 +1,6 @@
.headerNav {
position: fixed;
- top: 0px;
+ top: 30px;
left: 0px;
padding: 5px 10px;
background-color: #ccc;
From e57b88a019c98acb14b166515bfb62feacdc64ec Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 26 Aug 2024 16:06:11 +1200
Subject: [PATCH 07/53] Limit max width of header navigation
---
client/homebrew/brewRenderer/headerNav/headerNav.less | 1 +
1 file changed, 1 insertion(+)
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.less b/client/homebrew/brewRenderer/headerNav/headerNav.less
index c03887413..371081cbd 100644
--- a/client/homebrew/brewRenderer/headerNav/headerNav.less
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.less
@@ -6,6 +6,7 @@
background-color: #ccc;
border-radius: 5px;
max-height: 100vh;
+ max-width: 40vw;
overflow-y: auto;
&.active {
padding-bottom: 10px;
From 708cbdc9e50c5df32ea717c0f9eec25a61dd8e71 Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 26 Aug 2024 21:26:30 +1200
Subject: [PATCH 08/53] Change to list items
---
client/homebrew/brewRenderer/headerNav/headerNav.jsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.jsx b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
index 40f6cf4af..37eb0185c 100644
--- a/client/homebrew/brewRenderer/headerNav/headerNav.jsx
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
@@ -66,11 +66,11 @@ const HeaderNav = React.forwardRef(({}, pagesRef)=>{
);
const HeaderNavItem = ({ link, text, depth, className })=>{
- return
+ return
{`${'-'.repeat(depth)}${text}`}
-
;
+ ;
};
export default HeaderNav;
\ No newline at end of file
From a1c275479febb902f6f6f0db09c06d50d1ee25bc Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 26 Aug 2024 21:27:09 +1200
Subject: [PATCH 09/53] Change toolbar to relative positioning
---
client/homebrew/brewRenderer/brewRenderer.less | 1 -
client/homebrew/brewRenderer/toolBar/toolBar.less | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/client/homebrew/brewRenderer/brewRenderer.less b/client/homebrew/brewRenderer/brewRenderer.less
index 04e70f09b..56447d63b 100644
--- a/client/homebrew/brewRenderer/brewRenderer.less
+++ b/client/homebrew/brewRenderer/brewRenderer.less
@@ -1,7 +1,6 @@
@import (multiple, less) 'shared/naturalcrit/styles/reset.less';
.brewRenderer {
- padding-top : 30px;
overflow-y : scroll;
will-change : transform;
:where(.pages) {
diff --git a/client/homebrew/brewRenderer/toolBar/toolBar.less b/client/homebrew/brewRenderer/toolBar/toolBar.less
index 33a6836ef..93b2bb7f6 100644
--- a/client/homebrew/brewRenderer/toolBar/toolBar.less
+++ b/client/homebrew/brewRenderer/toolBar/toolBar.less
@@ -1,5 +1,5 @@
.toolBar {
- position : absolute;
+ position : relative;
z-index : 1;
box-sizing : border-box;
display : flex;
From ba4c9745a26004b26ed47647e9042ad3022ef041 Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 26 Aug 2024 21:27:41 +1200
Subject: [PATCH 10/53] Tweak styling for recent changes
---
client/homebrew/brewRenderer/headerNav/headerNav.less | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.less b/client/homebrew/brewRenderer/headerNav/headerNav.less
index 371081cbd..c9bc7918d 100644
--- a/client/homebrew/brewRenderer/headerNav/headerNav.less
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.less
@@ -1,6 +1,6 @@
.headerNav {
position: fixed;
- top: 30px;
+ top: 0px;
left: 0px;
padding: 5px 10px;
background-color: #ccc;
@@ -17,7 +17,9 @@
.navIcon {
cursor: pointer;
}
- p {
+ li {
+ font-family: 'Open Sans';
+ font-size: 12px;
padding: 2px;
a {
color: inherit;
From 30dac3a73c8500bcd5cd31451aea9fbe39e9e534 Mon Sep 17 00:00:00 2001
From: "G.Ambatte"
Date: Mon, 26 Aug 2024 21:53:15 +1200
Subject: [PATCH 11/53] Revert toolBar.less change
---
client/homebrew/brewRenderer/toolBar/toolBar.less | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/client/homebrew/brewRenderer/toolBar/toolBar.less b/client/homebrew/brewRenderer/toolBar/toolBar.less
index 93b2bb7f6..33a6836ef 100644
--- a/client/homebrew/brewRenderer/toolBar/toolBar.less
+++ b/client/homebrew/brewRenderer/toolBar/toolBar.less
@@ -1,5 +1,5 @@
.toolBar {
- position : relative;
+ position : absolute;
z-index : 1;
box-sizing : border-box;
display : flex;
From cac87b14c7d7aad411d0145feeab834151c2ff30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?=
Date: Sun, 20 Oct 2024 22:07:33 +0200
Subject: [PATCH 12/53] refactor to func comp and using dialog
---
.../brewRenderer/errorBar/errorBar.jsx | 136 ++++++++++--------
.../brewRenderer/errorBar/errorBar.less | 70 +++++----
2 files changed, 115 insertions(+), 91 deletions(-)
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
From 976740dc8b84c96c10a5232c250daf704c446324 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?=
Date: Sun, 20 Oct 2024 22:21:07 +0200
Subject: [PATCH 13/53] make more concise
---
.../brewRenderer/errorBar/errorBar.jsx | 81 ++++++-------------
1 file changed, 25 insertions(+), 56 deletions(-)
diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.jsx b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
index 0b030c668..e951e4aaa 100644
--- a/client/homebrew/brewRenderer/errorBar/errorBar.jsx
+++ b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
@@ -7,67 +7,36 @@ import Dialog from '../../../components/dialog.jsx';
const DISMISS_BUTTON = ;
-const ErrorBar = ( props ) => {
- let hasOpenError = false;
- let hasCloseError = false;
- let hasMatchError = false;
+const ErrorBar = (props) => {
+ let hasOpenError = false, hasCloseError = false, hasMatchError = false;
- const renderErrors = () => {
- hasOpenError = false;
- hasCloseError = false;
- hasMatchError = false;
+ const renderErrors = () => (
+
+ {_.map(props.errors, (err, idx) => {
+ if (err.id === 'OPEN') hasOpenError = true;
+ if (err.id === 'CLOSE') hasCloseError = true;
+ if (err.id === 'MISMATCH') hasMatchError = true;
+ return (
+ -
+ Line {err.line} : {err.text}, '{err.type}' tag
+
+ );
+ })}
+
+ );
- 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;
-
- return (
-
- Line {err.line} : {err.text}, '{err.type}' tag
-
- );
- });
-
- return ;
- };
-
- 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}
-
- );
- };
+ const renderProtip = () => (
+
+
Protips!
+ {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.
}
+
+ );
if (!props.errors.length) return null;
+
return (