import {
Badge,
HStack,
IconButton,
Menu,
MenuButton,
MenuItem,
MenuList,
SkeletonCircle,
Text,
} from '@chakra-ui/react';
import { useQuery } from '@tanstack/react-query';
import { __ } from '@wordpress/i18n';
import React, { useEffect, useState } from 'react';
import {
BiBookOpen,
BiBookmarks,
BiCog,
BiDotsHorizontalRounded,
BiGroup,
} from 'react-icons/bi';
import { NavLink, useLocation, useSearchParams } from 'react-router-dom';
import {
HeaderLeftSection,
HeaderLogo,
} from '../../../../../../assets/js/back-end/components/common/Header';
import {
NavMenu,
NavMenuLink,
} from '../../../../../../assets/js/back-end/components/common/Nav';
import {
headerResponsive,
navActiveStyles,
navLinkStyles,
} from '../../../../../../assets/js/back-end/config/styles';
import { Trash } from '../../../../../../assets/js/back-end/constants/images';
import API from '../../../../../../assets/js/back-end/utils/api';
import { urls } from '../../constants/urls';
import { groupsBackendRoutes } from '../../routes/routes';
interface FilterParams {
search?: string;
status?: string;
per_page?: number;
page?: number;
orderby: string;
order: 'asc' | 'desc';
}
const tabButtons: FilterTabs = [
{
status: 'any',
name: __('All Groups', 'learning-management-system'),
icon: ,
},
{
status: 'publish',
name: __('Published', 'learning-management-system'),
icon: ,
},
{
status: 'draft',
name: __('Draft', 'learning-management-system'),
icon: ,
},
{
status: 'trash',
name: __('Trash', 'learning-management-system'),
icon: ,
},
];
const LeftHeader: React.FC = (props) => {
const location = useLocation();
const [filterParams, setFilterParams] = useState({
order: 'desc',
orderby: 'date',
});
const [searchParams] = useSearchParams();
const { pathname } = useLocation();
const currentTab =
'/groups-settings' === pathname
? ''
: (searchParams.get('status') ?? 'any');
const groupAPI = new API(urls.groups);
useEffect(() => {
if (currentTab) {
setFilterParams((prevState) => ({
...prevState,
status: currentTab,
}));
}
}, [currentTab]);
const groupQuery = useQuery({
queryKey: ['groupsList', filterParams],
queryFn: () => groupAPI.list(filterParams),
...{
keepPreviousData: true,
},
});
const counts = groupQuery.data?.meta?.groups_count;
const isCounting = groupQuery.isLoading;
const groupNavStyles = {
...navLinkStyles,
mr: '0px',
borderBottom: '2px solid white',
};
return (
<>
{tabButtons.map((tab) => (
{tab.icon}
{tab.name}
{counts && counts[tab.status] ? (
{counts[tab.status]}
) : null}
{isCounting && currentTab === tab.status ? (
) : null}
))}
{__('Settings', 'learning-management-system')}
>
);
};
export default LeftHeader;