import {useState, useMemo} from 'react' import PropTypes from 'prop-types' import Box from '@mui/material/Box' import FormControl from '@mui/material/FormControl' import InputLabel from '@mui/material/InputLabel' import Select from '@mui/material/Select' import MenuItem from '@mui/material/MenuItem' import TextField from '@mui/material/TextField' import Chip from '@mui/material/Chip' import Button from '@mui/material/Button' import ClearIcon from '@mui/icons-material/Clear' import FilterListIcon from '@mui/icons-material/FilterList' import {formatDate} from '@/lib/format.js' export default function VersionFilters({data, onFiltersChange}) { const [filters, setFilters] = useState({ author: '', dateFrom: '', dateTo: '', status: '' }) // Extract unique authors from data const authors = useMemo(() => { const authorSet = new Set() for (const version of data) { if (version.user_created) { const authorName = version.user_created.split('-')[0] authorSet.add(authorName) } } return [...authorSet].sort() }, [data]) // Extract date range from data const dateRange = useMemo(() => { if (data.length === 0) { return {min: '', max: ''} } const dates = data.map(v => new Date(v.date_created)) const minDate = new Date(Math.min(...dates)) const maxDate = new Date(Math.max(...dates)) return { min: minDate.toISOString().split('T')[0], max: maxDate.toISOString().split('T')[0] } }, [data]) const handleFilterChange = (filterKey, value) => { const newFilters = {...filters, [filterKey]: value} setFilters(newFilters) onFiltersChange(newFilters) } const clearAllFilters = () => { const emptyFilters = { author: '', dateFrom: '', dateTo: '', status: '' } setFilters(emptyFilters) onFiltersChange(emptyFilters) } const hasActiveFilters = Object.values(filters).some(value => value !== '') return ( Auteur handleFilterChange('dateFrom', event.target.value)} /> handleFilterChange('dateTo', event.target.value)} /> Statut {hasActiveFilters && ( )} {/* Active filters display */} {hasActiveFilters && ( {filters.author && ( handleFilterChange('author', '')} /> )} {filters.dateFrom && ( handleFilterChange('dateFrom', '')} /> )} {filters.dateTo && ( handleFilterChange('dateTo', '')} /> )} {filters.status && ( handleFilterChange('status', '')} /> )} )} ) } VersionFilters.propTypes = { data: PropTypes.array.isRequired, onFiltersChange: PropTypes.func.isRequired }