Skip to content

Commit

Permalink
Merge pull request #3567 from webkom/ivarnakken/aba-277-sidebar-eleme…
Browse files Browse the repository at this point in the history
…nts-should-expand-based-on

Expand sidebar element based on pathname
  • Loading branch information
erlingfn committed Feb 14, 2023
2 parents 90128e4 + 059a74a commit d1a0041
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 41 deletions.
1 change: 1 addition & 0 deletions app/routes/pages/PageDetailRoute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ const sections: Record<string, Entry> = {
fetchItemActions: [],
},
};

export const categoryOptions = Object.keys(sections)
.map<Entry>((key) => sections[key])
.filter((entry: Entry) => entry.pageSelector === selectFlatpageForPages)
Expand Down
69 changes: 29 additions & 40 deletions app/routes/pages/components/PageHierarchy.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Component } from 'react';
import { Link, useHistory } from 'react-router-dom';
import { useState } from 'react';
import { Link, useLocation } from 'react-router-dom';
import Icon from 'app/components/Icon';
import { readmeIfy } from 'app/components/ReadmeLogo';
import styles from './PageHierarchy.css';
Expand Down Expand Up @@ -84,43 +84,32 @@ type AccordionProps = {
children: ReactNode;
currentCategory: string;
};
type AccordionState = {
isOpen: boolean;
};

class AccordionContainer extends Component<AccordionProps, AccordionState> {
state: AccordionState = {
isOpen:
this.props.currentCategory === this.props.title.toLowerCase() ||
(this.props.currentCategory === undefined &&
this.props.title.toLowerCase() === 'generelt'),
};
handleClick = () => {
this.setState((state) => ({
isOpen: !state.isOpen,
}));
};
const AccordionContainer = ({ title, children }: AccordionProps) => {
const location = useLocation();
const currentCategory = location.pathname.split('/')[2];

const [isOpen, setIsOpen] = useState(
currentCategory === title.toLowerCase() ||
(currentCategory === 'info-om-abakus' &&
title.toLowerCase() === 'generelt')
);

render() {
const { title, children }: AccordionProps = this.props;
return (
<div>
<button className={styles.dropdownBtn} onClick={this.handleClick}>
{title}{' '}
<Icon
name="chevron-up-outline"
className={styles.dropdownIcon}
style={
this.state.isOpen
? { transform: 'rotateX(0deg)' }
: { transform: 'rotateX(180deg)' }
}
/>
</button>{' '}
{this.state.isOpen ? (
<div className={styles.dropdownContainer}>{children}</div>
) : null}
</div>
);
}
}
return (
<div>
<button className={styles.dropdownBtn} onClick={() => setIsOpen(!isOpen)}>
{title}
<Icon
name="chevron-up-outline"
className={styles.dropdownIcon}
style={
isOpen
? { transform: 'rotateX(0deg)' }
: { transform: 'rotateX(180deg)' }
}
/>
</button>
{isOpen && <div className={styles.dropdownContainer}>{children}</div>}
</div>
);
};
1 change: 0 additions & 1 deletion app/routes/pages/components/Sidebar.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
/* eslint-disable react/no-danger */
import cx from 'classnames';
import { Component } from 'react';
import Icon from 'app/components/Icon';
Expand Down

0 comments on commit d1a0041

Please sign in to comment.