Skip to content

Commit

Permalink
remove volto sidebar; glossary view; navigation for glossary view
Browse files Browse the repository at this point in the history
  • Loading branch information
mihai-macaneata committed Jun 10, 2020
1 parent fff222f commit d82416d
Show file tree
Hide file tree
Showing 8 changed files with 16,283 additions and 13,956 deletions.
6 changes: 1 addition & 5 deletions jsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
"volto-datablocks",
"volto-drafteditor",
"volto-mosaic",
"volto-plotlycharts",
"volto-sidebar"
"volto-plotlycharts"
],
"compilerOptions": {
"baseUrl": "src",
Expand Down Expand Up @@ -39,9 +38,6 @@
],
"volto-plotlycharts": [
"develop/volto-plotlycharts/src"
],
"volto-sidebar": [
"develop/volto-sidebar/src"
]
}
}
Expand Down
4 changes: 0 additions & 4 deletions mrs.developer.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@
"url": "https://github.com/eea/volto-plotlycharts.git",
"path": "src"
},
"volto-sidebar": {
"url": "https://github.com/eea/volto-sidebar.git",
"path": "src"
},
"volto-base": {
"url": "https://github.com/eea/volto-base.git",
"path": "src"
Expand Down
29,894 changes: 15,993 additions & 13,901 deletions package-lock.json

Large diffs are not rendered by default.

46 changes: 4 additions & 42 deletions src/components/theme/View/TabsChildView.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,6 @@ class DefaultView extends Component {
const blocksFieldname = getBlocksFieldname(content);
const blocksLayoutFieldname = getBlocksLayoutFieldname(content);
const tabs = this.computeFolderTabs(content['@components'].siblings);
const sectionTabs = this.props.sectionTabs?.items;
console.log('sectionTabs in child', sectionTabs);

return (
hasBlocksData(content) && (
Expand All @@ -99,46 +97,10 @@ class DefaultView extends Component {
<SearchWidget pathname={this.props.pathname} />
</div>

{sectionTabs && sectionTabs.length ? (
<nav className="tabs section-tabs">
{sectionTabs.map(tab => (
<Link
key={`localtab-${tab.url}`}
className={`tabs__item${(tab.url ===
this.props.location.pathname &&
' tabs__item_active') ||
''}`}
to={tab.url}
title={tab.title}
>
{tab.title}
</Link>
))}
</nav>
) : (
''
)}
<div className="widthSidebar">
<nav className="tabs section-tabs" />
<div className="withSidebar">
<div className="page-document-sidebar">
{tabs && tabs.length ? (
<nav className="tabs">
{tabs.map(tab => (
<Link
key={`localtab-${tab.url}`}
className={`tabs__item${(tab.url ===
this.props.location.pathname &&
' tabs__item_active') ||
''}`}
to={tab.url}
title={tab.title}
>
{tab.title}
</Link>
))}
</nav>
) : (
''
)}
<nav className="tabs" />
</div>
<div id="page-document" className="hasSidebar">
<Helmet title={content.title} />
Expand Down Expand Up @@ -176,6 +138,6 @@ export default compose(
pathname: props.location.pathname,
content:
state.prefetch?.[state.router.location.pathname] || state.content.data,
sectionTabs: state.section_tabs,
// sectionTabs: state.section_tabs,
})),
)(DefaultView);
2 changes: 0 additions & 2 deletions src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@ import { applyConfig as blocksConfig } from 'volto-blocks/config';
import { applyConfig as mosaicConfig } from 'volto-mosaic/config';
import { applyConfig as plotlyConfig } from 'volto-plotlycharts/config';
// import { applyConfig as installEPRTRFrontend } from './localconfig';
import { applyConfig as installSidebar } from 'volto-sidebar/config';

// import { applyConfig as installEPRTRFrontend } from './localconfig';
import installEPRTR from './localconfig';

const config = [
addonsConfig,
installSidebar,
installFolderListing,
installTableau,
plotlyConfig,
Expand Down
283 changes: 283 additions & 0 deletions src/customizations/volto/components/theme/Navigation/Navigation.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
/**
* Navigation components.
* @module components/theme/Navigation/Navigation
*/

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { compose } from 'redux';
import { NavLink } from 'react-router-dom';
import { defineMessages, injectIntl } from 'react-intl';
import { Menu } from 'semantic-ui-react';
import cx from 'classnames';
import { getBaseUrl } from '@plone/volto/helpers';
import { settings } from '~/config';
import { Portal } from 'react-portal';

import { getNavigation } from '@plone/volto/actions';

const messages = defineMessages({
closeMobileMenu: {
id: 'Close menu',
defaultMessage: 'Close menu',
},
openMobileMenu: {
id: 'Open menu',
defaultMessage: 'Open menu',
},
});

/**
* Navigation container class.
* @class Navigation
* @extends Component
*/
class Navigation extends Component {
/**
* Property types.
* @property {Object} propTypes Property types.
* @static
*/
static propTypes = {
getNavigation: PropTypes.func.isRequired,
pathname: PropTypes.string.isRequired,
items: PropTypes.arrayOf(
PropTypes.shape({
title: PropTypes.string,
url: PropTypes.string,
}),
).isRequired,
lang: PropTypes.string.isRequired,
};

/**
* Constructor
* @method constructor
* @param {Object} props Component properties
* @constructs Navigation
*/
constructor(props) {
super(props);
this.toggleMobileMenu = this.toggleMobileMenu.bind(this);
this.closeMobileMenu = this.closeMobileMenu.bind(this);
this.state = {
isMobileMenuOpen: false,
};
}

/**
* Component will mount
* @method componentWillMount
* @returns {undefined}
*/
UNSAFE_componentWillMount() {
if (!settings.contentExpand.includes('navigation'))
this.props.getNavigation(getBaseUrl(this.props.pathname), 3);
}

/**
* Component will receive props
* @method componentWillReceiveProps
* @param {Object} nextProps Next properties
* @returns {undefined}
*/
UNSAFE_componentWillReceiveProps(nextProps) {
if (
!settings.contentExpand.includes('navigation') &&
nextProps.pathname !== this.props.pathname
) {
this.props.getNavigation(getBaseUrl(nextProps.pathname), 3);
}
}

/**
* Toggle mobile menu's open state
* @method toggleMobileMenu
* @returns {undefined}
*/
toggleMobileMenu() {
this.setState({ isMobileMenuOpen: !this.state.isMobileMenuOpen });
}

/**
* Close mobile menu
* @method closeMobileMenu
* @returns {undefined}
*/
closeMobileMenu() {
if (!this.state.isMobileMenuOpen) {
return;
}
this.setState({ isMobileMenuOpen: false });
}

/**
* Render method.
* @method render
* @returns {string} Markup for the component.
*/
render() {
const { lang } = this.props;
console.log('navigation', this.props.items);

return (
<nav className="navigation">
<div className="hamburger-wrapper mobile tablet only">
<button
className={cx('hamburger hamburger--collapse', {
'is-active': this.state.isMobileMenuOpen,
})}
aria-label={
this.state.isMobileMenuOpen
? this.props.intl.formatMessage(messages.closeMobileMenu, {
type: this.props.type,
})
: this.props.intl.formatMessage(messages.openMobileMenu, {
type: this.props.type,
})
}
title={
this.state.isMobileMenuOpen
? this.props.intl.formatMessage(messages.closeMobileMenu, {
type: this.props.type,
})
: this.props.intl.formatMessage(messages.openMobileMenu, {
type: this.props.type,
})
}
type="button"
onClick={this.toggleMobileMenu}
>
<span className="hamburger-box">
<span className="hamburger-inner" />
</span>
</button>
</div>
<Menu
stackable
pointing
secondary
className={
this.state.isMobileMenuOpen
? 'open'
: 'computer large screen widescreen only'
}
onClick={this.closeMobileMenu}
>
{this.props.items.map(item =>
item.title === 'Glossary' ? (
<React.Fragment>
<NavLink
to={item.url === '' ? '/' : item.url}
key={item.url}
className="item"
activeClassName="active"
exact={
settings.isMultilingual
? item.url === `/${lang}`
: item.url === ''
}
>
{item.title}
</NavLink>
{item.items?.length &&
document.querySelector('.tabs.section-tabs') &&
document.querySelector('.page-document-sidebar .tabs')
? item.items.map(secondLevelItem => (
<React.Fragment>
<Portal
node={
__CLIENT__ &&
document.querySelector('.tabs.section-tabs')
}
>
<NavLink
to={
secondLevelItem.items?.length
? secondLevelItem.items[0].url
: secondLevelItem.url
}
key={secondLevelItem.url}
className="tabs__item"
activeClassName="tabs__item_active"
exact={
settings.isMultilingual
? secondLevelItem.url === `/${lang}`
: secondLevelItem.url === ''
}
>
{secondLevelItem.title}
</NavLink>
</Portal>
{secondLevelItem.items?.length &&
document.querySelector(
'.page-document-sidebar .tabs',
) ? (
<Portal
node={
__CLIENT__ &&
document.querySelector(
'.page-document-sidebar .tabs',
)
}
>
{secondLevelItem.items.map(thirdLevelItem => (
<NavLink
to={
thirdLevelItem.url === ''
? '/'
: thirdLevelItem.url
}
key={thirdLevelItem.url}
className="tabs__item"
activeClassName="tabs__item_active"
exact={
settings.isMultilingual
? thirdLevelItem.url === `/${lang}`
: thirdLevelItem.url === ''
}
>
{thirdLevelItem.title}
</NavLink>
))}
</Portal>
) : (
''
)}
</React.Fragment>
))
: ''}
</React.Fragment>
) : (
<NavLink
to={item.url === '' ? '/' : item.url}
key={item.url}
className="item"
activeClassName="active"
exact={
settings.isMultilingual
? item.url === `/${lang}`
: item.url === ''
}
>
{item.title}
</NavLink>
),
)}
</Menu>
</nav>
);
}
}

export default compose(
injectIntl,
connect(
state => ({
items: state.navigation.items,
lang: state.intl.locale,
}),
{ getNavigation },
),
)(Navigation);
Loading

0 comments on commit d82416d

Please sign in to comment.