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')} } style={{ background: '#FFFFFF', boxShadow: 'none', }} py={'35px'} color={'primary.500'} /> {tabButtons.map((tab) => ( {tab.icon} {tab.name} {counts && counts[tab.status] ? ( {counts[tab.status]} ) : null} ))} {__('Settings', 'learning-management-system')} ); }; export default LeftHeader;