diff --git a/components/Settings.js b/components/Settings.js
index 09f31c33..f3144f65 100644
--- a/components/Settings.js
+++ b/components/Settings.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState } from 'react';
import Page from 'components/layout/Page';
import MenuLayout from 'components/layout/MenuLayout';
import WebsiteSettings from './WebsiteSettings';
@@ -8,21 +8,16 @@ import { useSelector } from 'react-redux';
export default function Settings() {
const user = useSelector(state => state.user);
+ const [option, setOption] = useState('Websites');
const menuOptions = ['Websites', user.is_admin && 'Accounts', 'Profile'];
return (
-
- {option => {
- if (option === 'Websites') {
- return ;
- } else if (option === 'Accounts') {
- return ;
- } else if (option === 'Profile') {
- return ;
- }
- }}
+
+ {option === 'Websites' && }
+ {option === 'Accounts' && }
+ {option === 'Profile' && }
);
diff --git a/components/WebsiteDetails.js b/components/WebsiteDetails.js
index 4d91b7bb..250ed1f7 100644
--- a/components/WebsiteDetails.js
+++ b/components/WebsiteDetails.js
@@ -9,15 +9,18 @@ import { get } from 'lib/web';
import { browserFilter, urlFilter, refFilter, deviceFilter, countryFilter } from 'lib/filters';
import styles from './WebsiteDetails.module.css';
import PageHeader from './layout/PageHeader';
+import MenuLayout from './layout/MenuLayout';
const pageviewClasses = 'col-md-12 col-lg-6';
const sessionClasses = 'col-12 col-lg-4';
+const menuOptions = ['Pages', 'Referrers', 'Browsers', 'Operating system', 'Devices', 'Countries'];
export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' }) {
const [data, setData] = useState();
const [chartLoaded, setChartLoaded] = useState(false);
const [countryData, setCountryData] = useState();
const [dateRange, setDateRange] = useState(getDateRange(defaultDateRange));
+ const [expand, setExpand] = useState();
const { startDate, endDate } = dateRange;
async function loadData() {
@@ -32,6 +35,14 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
setTimeout(() => setDateRange(values), 300);
}
+ function handleExpand(title) {
+ setExpand(title);
+ }
+
+ function handleMenuSelect(title) {
+ setExpand(title);
+ }
+
useEffect(() => {
if (websiteId) {
loadData();
@@ -55,7 +66,7 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
/>
- {chartLoaded && (
+ {chartLoaded && !expand && (
<>
@@ -67,6 +78,7 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
startDate={startDate}
endDate={endDate}
dataFilter={urlFilter}
+ onExpand={handleExpand}
/>
@@ -78,6 +90,7 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
startDate={startDate}
endDate={endDate}
dataFilter={refFilter(data.domain)}
+ onExpand={handleExpand}
/>
@@ -91,6 +104,7 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
startDate={startDate}
endDate={endDate}
dataFilter={browserFilter}
+ onExpand={handleExpand}
/>
@@ -101,6 +115,7 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
websiteId={websiteId}
startDate={startDate}
endDate={endDate}
+ onExpand={handleExpand}
/>
@@ -112,6 +127,7 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
startDate={startDate}
endDate={endDate}
dataFilter={deviceFilter}
+ onExpand={handleExpand}
/>
@@ -129,11 +145,21 @@ export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' })
endDate={endDate}
dataFilter={countryFilter}
onDataLoad={data => setCountryData(data)}
+ onExpand={handleExpand}
/>
>
)}
+ {expand && (
+
+ )}
);
}
diff --git a/components/WebsiteDetails.module.css b/components/WebsiteDetails.module.css
index 7e59d7b9..eb787027 100644
--- a/components/WebsiteDetails.module.css
+++ b/components/WebsiteDetails.module.css
@@ -2,6 +2,14 @@
margin-bottom: 30px;
}
+.expand {
+ border-top: 1px solid var(--gray300);
+}
+
+.menu {
+ font-size: var(--font-size-small);
+}
+
.row {
border-top: 1px solid var(--gray300);
min-height: 430px;
diff --git a/components/WebsiteList.js b/components/WebsiteList.js
index 00668673..49cbfa9f 100644
--- a/components/WebsiteList.js
+++ b/components/WebsiteList.js
@@ -27,13 +27,15 @@ export default function WebsiteList() {
{data?.map(({ website_id, name }) => (
-
- {name}
-
+
+
+ {name}
+
+
}
onClick={() =>
diff --git a/components/charts/QuickButtons.module.css b/components/charts/QuickButtons.module.css
index 81c58856..f84bc42a 100644
--- a/components/charts/QuickButtons.module.css
+++ b/components/charts/QuickButtons.module.css
@@ -1,5 +1,6 @@
.buttons {
display: flex;
+ align-content: center;
position: absolute;
top: 0;
right: 0;
@@ -10,7 +11,7 @@
margin-left: 10px;
}
-.button {
+.buttons .button {
font-size: var(--font-size-xsmall);
padding: 4px 8px;
}
diff --git a/components/charts/RankingsChart.js b/components/charts/RankingsChart.js
index 85acefeb..e3c7fc2c 100644
--- a/components/charts/RankingsChart.js
+++ b/components/charts/RankingsChart.js
@@ -1,7 +1,9 @@
import React, { useState, useEffect, useMemo } from 'react';
import { useSpring, animated, config } from 'react-spring';
import classNames from 'classnames';
-import CheckVisible from '../helpers/CheckVisible';
+import CheckVisible from 'components/helpers/CheckVisible';
+import Button from 'components/common/Button';
+import Arrow from 'assets/arrow-right.svg';
import { get } from 'lib/web';
import { percentFilter } from 'lib/filters';
import styles from './RankingsChart.module.css';
@@ -16,6 +18,7 @@ export default function RankingsChart({
className,
dataFilter,
onDataLoad = () => {},
+ onExpand = () => {},
}) {
const [data, setData] = useState();
@@ -62,6 +65,11 @@ export default function RankingsChart({
))}
+
+
} size="xsmall" onClick={() => onExpand(title)}>
+
More
+
+
)}
diff --git a/components/charts/RankingsChart.module.css b/components/charts/RankingsChart.module.css
index bb060c04..b5b2da97 100644
--- a/components/charts/RankingsChart.module.css
+++ b/components/charts/RankingsChart.module.css
@@ -1,6 +1,6 @@
.container {
position: relative;
- min-height: 430px;
+ min-height: 460px;
font-size: var(--font-size-small);
padding: 20px 0;
display: flex;
@@ -90,6 +90,11 @@
transform: translate(-50%, -50%);
}
+.footer {
+ display: flex;
+ justify-content: center;
+}
+
@media only screen and (max-width: 992px) {
.container {
min-height: auto;
diff --git a/components/common/Button.js b/components/common/Button.js
index b61f05d3..1f3a1ecb 100644
--- a/components/common/Button.js
+++ b/components/common/Button.js
@@ -16,8 +16,9 @@ export default function Button({