diff --git a/.eslintrc.js b/.eslintrc.js index dd4bcd0d3..74e7bb660 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,7 +15,7 @@ module.exports = { rules : { /** Errors **/ 'camelcase' : ['error', { properties: 'never' }], - 'func-style' : ['error', 'expression', { allowArrowFunctions: true }], + //'func-style' : ['error', 'expression', { allowArrowFunctions: true }], 'no-array-constructor' : 'error', 'no-iterator' : 'error', 'no-nested-ternary' : 'error', diff --git a/client/homebrew/navbar/recent.navitem.jsx b/client/homebrew/navbar/recent.navitem.jsx index bafd29110..431bdd8df 100644 --- a/client/homebrew/navbar/recent.navitem.jsx +++ b/client/homebrew/navbar/recent.navitem.jsx @@ -121,6 +121,7 @@ const RecentItems = createClass({ removeItem : function(url, evt){ evt.preventDefault(); + evt.stopPropagation(); let edited = JSON.parse(localStorage.getItem(EDIT_KEY) || '[]'); let viewed = JSON.parse(localStorage.getItem(VIEW_KEY) || '[]'); diff --git a/shared/naturalcrit/nav/nav.jsx b/shared/naturalcrit/nav/nav.jsx index ff8cc7b92..3c7fd7c5e 100644 --- a/shared/naturalcrit/nav/nav.jsx +++ b/shared/naturalcrit/nav/nav.jsx @@ -1,5 +1,6 @@ require('./nav.less'); const React = require('react'); +const { useState, useRef, useEffect } = React; const createClass = require('create-react-class'); const _ = require('lodash'); const cx = require('classnames'); @@ -71,71 +72,49 @@ const Nav = { } }), - dropdown : createClass({ - displayName : 'Nav.dropdown', - getDefaultProps : function() { - return { - trigger : 'hover' - }; - }, - getInitialState : function() { - return { - showFromClick : false, - showDropdown : false - }; - }, - componentDidMount : function() { - document.addEventListener('click', this.handleClickOutside); - }, - componentWillUnmount : function() { - document.removeEventListener('click', this.handleClickOutside); - }, - handleClickOutside : function(e){ - // Close dropdown when clicked outside - if(this.refs.dropdown && !this.refs.dropdown.contains(e.target)) { - this.handleClickInside(false); - } - }, - handleClickInside : function(state){ - const newState = state != undefined ? state : !this.state.showFromClick; - this.setState({ - showFromClick : newState - }); - this.handleDropdown(newState); - }, - handleDropdown : function(show){ - this.setState({ - showDropdown : show - }); - }, - renderDropdown : function(dropdownChildren){ - if(!this.state.showDropdown) return null; + dropdown : function dropdown(props) { + props = Object.assign({}, props, { + trigger : 'hover click' + }); - return ( -