'use client'; import clsx from 'clsx'; import { AnimatePresence, motion } from 'framer-motion'; import { MouseEvent, useContext, useEffect, useRef, useState } from 'react'; import { Calendar } from '../ui/calendar'; import { format } from 'date-fns'; import { SmsContext } from '@/context/SmsContext'; import Image from 'next/image'; import { useOnClickOutside } from 'usehooks-ts'; import { SlSocialGithub } from 'react-icons/sl'; export const sortData = [ { title: 'Newest', id: 'desc', }, { title: 'Oldest', id: 'asc', }, ]; const FilterTable = () => { const smsContext = useContext(SmsContext); if (!smsContext) { throw new Error('smsContext must be used within an AuthProvider'); } const { datee, setDatee, setActiveSort, activeSort, searchValue, setSearchValue, setSearchFecth, searchFecth, timeDate, setTimeDate, smsTableData, } = smsContext; const calendarRef = useRef(null); const [calendar, setCalendar] = useState(false); const [filterActive, setFilterActive] = useState(false); const handleClickOutside = () => { setCalendar(false); }; useOnClickOutside(calendarRef, handleClickOutside); const checkSortActive = () => { if (activeSort === 'asc' || datee || searchFecth) { setFilterActive(true); } else { setFilterActive(false); } }; const resetFilters = () => { setActiveSort('desc'); setDatee(undefined); setSearchFecth(''); setSearchValue(''); }; const resetSearch = () => { setSearchFecth(''); setSearchValue(''); }; useEffect(() => { checkSortActive(); }, [activeSort, datee, searchFecth]); return (
Filtr
{sortData.map((item, i) => (
{ setActiveSort(item.id); }} className={clsx('leading-[115%] text-[14px] cursor-pointer', { 'text-fillButtonAccentDefault font-[600]': activeSort === item.id, 'text-textDarkt': activeSort !== item.id, })}> {item.title}
))}
setCalendar((prev) => !prev)} className={clsx( 'leading-[115%] text-[14px] text-textDarkt cursor-pointer w-fit ', {}, )}> Kalendar
{calendar && ( setCalendar(false)} className={clsx( 'my-20 bg-[#F5F5FA] w-fit rounded-[8px] -translate-y-[50px] -translate-x-[60px] shadow-[0_2px_32px_rgba(0,0,0,0.3)] transition-all', )} /> )}
{datee && smsTableData?.data.length !== 0 && ( setTimeDate(e.target.value)} value={timeDate} className="w-full outline-none px-6 py-3 shadow-tableShadow bg-[#F0F0FA] rounded-full" /> )} {filterActive ? (
)

Filteri aýyr

) : null}
setSearchValue(e.target.value)} value={searchValue} className="w-full bg-transparent outline-none" /> {searchFecth ? ( ) : null}
setSearchFecth(searchValue)} className="bg-fillButtonAccentDefault rounded-[0_9999px_9999px_0] px-4 py-[12px] cursor-pointer"> search
); }; export default FilterTable;