lint navbar

This commit is contained in:
Víctor Losada Hernández
2026-10-10 22:05:52 +02:00
parent 6e85231e4f
commit 27045fc42e
6 changed files with 49 additions and 50 deletions
+1 -1
View File
@@ -68,7 +68,7 @@ const MetadataNav = createReactClass({
},
render : function(){
if(!this.props.brew?.shareId || this.props.pageName !== 'sharePage') return <></>
if(!this.props.brew?.shareId || this.props.pageName !== 'sharePage') return <></>;
return <Nav.item icon='fas fa-info-circle' color='grey' className='metadata'
onClick={()=>this.toggleMetaWindow()}>
+4 -4
View File
@@ -1,5 +1,5 @@
import './navbar.less';
import React, { useState, useRef, useEffect } from 'react';
import React from 'react';
import cx from 'classnames';
import NaturalCritIcon from '@components/svg/naturalcrit-d20.svg.jsx';
@@ -25,10 +25,10 @@ const Nav = {
</div>;
},
item : ({ icon, kbd,href, newTab, onClick, color, children, className, disabled, noDismiss, ...props })=>{
item : ({ icon, kbd, href, newTab, onClick, color, children, className, disabled, noDismiss, ...props })=>{
const classes = cx('navItem', color, className);
if(disabled) {
return <button className={classes} disabled>{children}{icon && <i className={icon}></i>}</button>
return <button className={classes} disabled>{children}{icon && <i className={icon}></i>}</button>;
}
if(href){
return <a className={classes} href={href} target={newTab ? '_blank' : '_self'} {...props}>
@@ -43,7 +43,7 @@ const Nav = {
</button>;
}
},
header: ({span, className, children, ...props})=>{
header : ({ span, className, children, ...props })=>{
return <span className={cx([`navItem header`, className])} no-dismiss='true'>
{children}
</span>;
+26 -27
View File
@@ -12,30 +12,29 @@ import AccountNavItem from './account.navitem.jsx';
const { both: RecentNavItem } = RecentNavItems;
import Nav from './nav.jsx';
const Navbar = ({ children, brew, pageName, editor, title, currentPage, props }) => {
const version = global.version || '0.0.0';
const Navbar = ({ children, brew, pageName, editor, title, currentPage, props })=>{
const isMac = navigator.platform.toUpperCase().includes('MAC');
const mod = isMac ? '⌘' : 'Ctrl';
const isBrew = !!brew && (brew.shareId || pageName === 'homePage' || pageName === 'newPage');
const account = global.account;
const navSlots = React.Children.toArray(children).reduce((slots, child) => {
if (!React.isValidElement(child)) return slots;
const navSlots = React.Children.toArray(children).reduce((slots, child)=>{
if(!React.isValidElement(child)) return slots;
const content = child.props.children;
if (child.type === Navbar.File) slots.file = content;
else if (child.type === Navbar.Edit) slots.edit = content;
else if (child.type === Navbar.Go) slots.go = content;
else if (child.type === Navbar.Help) slots.help = content;
else if (child.type === Navbar.Menu) slots.menu = content;
if(child.type === Navbar.File) slots.file = content;
else if(child.type === Navbar.Edit) slots.edit = content;
else if(child.type === Navbar.Go) slots.go = content;
else if(child.type === Navbar.Help) slots.help = content;
else if(child.type === Navbar.Menu) slots.menu = content;
return slots;
}, {});
const renderDownloadLink = () => {
if (!isBrew) return <Nav.item disabled={!isBrew}>Get txt</Nav.item>;
const renderDownloadLink = ()=>{
if(!isBrew) return <Nav.item disabled={!isBrew}>Get txt</Nav.item>;
let shareLink = brew.shareId;
if (brew.googleId && !brew.stubbed) {
if(brew.googleId && !brew.stubbed) {
shareLink = brew.googleId + shareLink;
}
@@ -46,7 +45,7 @@ const Navbar = ({ children, brew, pageName, editor, title, currentPage, props })
);
};
const renderEditLink = () => {
const renderEditLink = ()=>{
const editLink = brew?.googleId && !brew?.stubbed ? brew?.googleId + brew?.editId : brew?.editId;
return (
<Nav.item href={`/edit/${editLink}`} disabled={!brew?.editId}>
@@ -55,7 +54,7 @@ const Navbar = ({ children, brew, pageName, editor, title, currentPage, props })
);
};
const renderFile = () => {
const renderFile = ()=>{
return (
<Dropdown groupName={'File'} customTrigger={<>File</>} icon={null} key={'file'}>
<NewBrewNavItem />
@@ -84,23 +83,23 @@ const Navbar = ({ children, brew, pageName, editor, title, currentPage, props })
);
};
const renderEdit = () => {
const renderEdit = ()=>{
return (
<Dropdown groupName={'Edit'} customTrigger={<>Edit</>} icon={null} key={'edit'}>
<div className='nav-section'>
<Nav.item onClick={() => editor?.undo()} kbd={mod + ' + z'} disabled={!editor}>
<Nav.item onClick={()=>editor?.undo()} kbd={`${mod} + z`} disabled={!editor}>
Undo
</Nav.item>
<Nav.item onClick={() => editor?.redo()} kbd={mod + ' + Shift + z'} disabled={!editor}>
<Nav.item onClick={()=>editor?.redo()} kbd={`${mod} + Shift + z`} disabled={!editor}>
Redo
</Nav.item>
<Nav.item onClick={() => editor?.find()} kbd={mod + ' + f'} disabled={!editor}>
<Nav.item onClick={()=>editor?.find()} kbd={`${mod} + f`} disabled={!editor}>
Find / Replace
</Nav.item>
<Nav.item onClick={() => editor?.foldCode()} disabled={!editor}>
<Nav.item onClick={()=>editor?.foldCode()} disabled={!editor}>
Fold all lines
</Nav.item>
<Nav.item onClick={() => editor?.unfoldCode()} disabled={!editor}>
<Nav.item onClick={()=>editor?.unfoldCode()} disabled={!editor}>
Unfold all lines
</Nav.item>
</div>
@@ -122,11 +121,11 @@ const Navbar = ({ children, brew, pageName, editor, title, currentPage, props })
);
};
const renderGo = () => {
const renderGo = ()=>{
return (
<Dropdown groupName={'Go'} customTrigger={<>Go</>} icon={null} key={'go'}>
{renderEditLink()}
<ShareNavItem brew={brew} disabled={!brew?.shareId} currentPage={'' /*how the hell do i get it here?*/} />
<ShareNavItem brew={brew} disabled={!brew?.shareId} currentPage={currentPage} />
<div className='nav-section'>
<Nav.item className='patreon' newTab={true} href='https://www.patreon.com/NaturalCrit' color='green' icon='fas fa-heart'>
Patreon
@@ -172,10 +171,10 @@ const Navbar = ({ children, brew, pageName, editor, title, currentPage, props })
);
};
Navbar.File = ({ children }) => children;
Navbar.Edit = ({ children }) => children;
Navbar.Go = ({ children }) => children;
Navbar.Help = ({ children }) => children;
Navbar.Menu = ({ children }) => children;
Navbar.File = ({ children })=>children;
Navbar.Edit = ({ children })=>children;
Navbar.Go = ({ children })=>children;
Navbar.Help = ({ children })=>children;
Navbar.Menu = ({ children })=>children;
export default Navbar;
+1 -1
View File
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
import Nav from './nav.jsx';
import { printCurrentBrew } from '@shared/helpers.js';
export default function({disabled}){
export default function({ disabled }){
const [printing, setPrinting] = useState(false);
// listen for print cycle events to display "loading" message since it can take some time.
+4 -4
View File
@@ -143,15 +143,15 @@ const RecentItems = createReactClass({
// if(!this.state.showDropdown) return null;
const makeItems = (brews)=>{
return <div className="nav-section">
return <div className='nav-section'>
{_.map(brews, (brew, i)=>{
return <a className='navItem' href={brew.url} key={`${brew.id}-${i}`} target='_blank' rel='noopener noreferrer' title={brew.title || '[ no title ]'}>
<span className='title'>{brew.title || '[ no title ]'}</span>
<span className='time'>{Moment(brew.ts).fromNow()}</span>
<button className='clear' title='Remove from Recents' onClick={(e)=>{this.removeItem(`${brew.url}`, e);}}><i className='fas fa-times'></i></button>
</a>
</a>;
})}
</div>
</div>;
};
return <>
@@ -167,7 +167,7 @@ const RecentItems = createReactClass({
},
render : function(){
return this.renderDropdown()
return this.renderDropdown();
}
});
+13 -13
View File
@@ -3,10 +3,10 @@ import dedent from 'dedent';
import Nav from './nav.jsx';
const getShareId = (brew)=>{
if (!brew) return null;
if(!brew) return null;
return brew.googleId && !brew.stubbed
? brew.googleId + brew.shareId
: brew.shareId
: brew.shareId;
};
const getRedditLink = (brew)=>{
@@ -18,24 +18,24 @@ const getRedditLink = (brew)=>{
return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(brew.title.toWellFormed())}&text=${encodeURIComponent(text)}`;
};
export default ({ brew, disabled, currentPage })=> {
export default ({ brew, disabled, currentPage })=>{
return (
<div className='nav-section'>
<Nav.item color='blue' href={`/share/${getShareId(brew)}`} disabled={disabled}>
<div className='nav-section'>
<Nav.item color='blue' href={`/share/${getShareId(brew)}`} disabled={disabled}>
view share page
</Nav.item>
<Nav.item color='blue' onClick={()=>{navigator.clipboard.writeText(`${global.config.baseUrl}/share/${getShareId(brew)}`);}} disabled={disabled}>
</Nav.item>
<Nav.item color='blue' onClick={()=>{navigator.clipboard.writeText(`${global.config.baseUrl}/share/${getShareId(brew)}`);}} disabled={disabled}>
copy share url
</Nav.item>
{currentPage > 1 &&
</Nav.item>
{currentPage > 1 &&
<Nav.item
color='blue'
onClick={()=>{navigator.clipboard.writeText(`${global.config.baseUrl}/share/${getShareId(brew)}#p${currentPage}`);}}>
copy url (page {currentPage})
</Nav.item>}
<Nav.item color='blue' href={!disabled && getRedditLink(brew)} newTab rel='noopener noreferrer' disabled={disabled}>
<Nav.item color='blue' href={!disabled && getRedditLink(brew)} newTab rel='noopener noreferrer' disabled={disabled}>
post to reddit
</Nav.item>
</div>
)
</Nav.item>
</div>
);
};