AdminTabs: get activeItem from match
This commit is contained in:
parent
85424b9acf
commit
5c821488dc
|
@ -1,5 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useIntl, defineMessages } from 'react-intl';
|
import { useIntl, defineMessages } from 'react-intl';
|
||||||
|
import { useRouteMatch } from 'react-router-dom';
|
||||||
|
|
||||||
import { Tabs } from 'soapbox/components/ui';
|
import { Tabs } from 'soapbox/components/ui';
|
||||||
import { useAppSelector } from 'soapbox/hooks';
|
import { useAppSelector } from 'soapbox/hooks';
|
||||||
|
@ -10,33 +11,30 @@ const messages = defineMessages({
|
||||||
waitlist: { id: 'admin_nav.awaiting_approval', defaultMessage: 'Waitlist' },
|
waitlist: { id: 'admin_nav.awaiting_approval', defaultMessage: 'Waitlist' },
|
||||||
});
|
});
|
||||||
|
|
||||||
interface IAdminTabs {
|
const AdminTabs: React.FC = () => {
|
||||||
activeItem: 'dashboard' | 'reports' | 'approval',
|
|
||||||
}
|
|
||||||
|
|
||||||
const AdminTabs: React.FC<IAdminTabs> = ({ activeItem }) => {
|
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
const match = useRouteMatch();
|
||||||
|
|
||||||
const approvalCount = useAppSelector(state => state.admin.awaitingApproval.count());
|
const approvalCount = useAppSelector(state => state.admin.awaitingApproval.count());
|
||||||
const reportsCount = useAppSelector(state => state.admin.openReports.count());
|
const reportsCount = useAppSelector(state => state.admin.openReports.count());
|
||||||
|
|
||||||
const tabs = [{
|
const tabs = [{
|
||||||
name: 'dashboard',
|
name: '/admin',
|
||||||
text: intl.formatMessage(messages.dashboard),
|
text: intl.formatMessage(messages.dashboard),
|
||||||
to: '/admin',
|
to: '/admin',
|
||||||
}, {
|
}, {
|
||||||
name: 'reports',
|
name: '/admin/reports',
|
||||||
text: intl.formatMessage(messages.reports),
|
text: intl.formatMessage(messages.reports),
|
||||||
to: '/admin/reports',
|
to: '/admin/reports',
|
||||||
count: reportsCount,
|
count: reportsCount,
|
||||||
}, {
|
}, {
|
||||||
name: 'approval',
|
name: '/admin/approval',
|
||||||
text: intl.formatMessage(messages.waitlist),
|
text: intl.formatMessage(messages.waitlist),
|
||||||
to: '/admin/approval',
|
to: '/admin/approval',
|
||||||
count: approvalCount,
|
count: approvalCount,
|
||||||
}];
|
}];
|
||||||
|
|
||||||
return <Tabs items={tabs} activeItem={activeItem} />;
|
return <Tabs items={tabs} activeItem={match.path} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default AdminTabs;
|
export default AdminTabs;
|
||||||
|
|
|
@ -23,7 +23,7 @@ const Admin: React.FC = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Column label={intl.formatMessage(messages.heading)} withHeader={false}>
|
<Column label={intl.formatMessage(messages.heading)} withHeader={false}>
|
||||||
<AdminTabs activeItem='dashboard' />
|
<AdminTabs />
|
||||||
|
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route path='/admin' exact component={Dashboard} />
|
<Route path='/admin' exact component={Dashboard} />
|
||||||
|
|
Loading…
Reference in New Issue