mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-11-10 08:38:46 +00:00
lint navbar
This commit is contained in:
@@ -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()}>
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user