'use client'; import { useEffect } from 'react'; import { IconChild } from '@/components/Icons'; import SelectGraphFilter from '@/components/select/SelectGraphFilter'; import SelectMatchMode from '@/components/select/SelectMatchMode'; import MiniButton from '@/components/ui/MiniButton'; import SearchBar from '@/components/ui/SearchBar'; import { applyGraphFilter } from '@/models/miscellaneousAPI'; import { ConstituentaID, IConstituenta, IRSForm } from '@/models/rsform'; import { matchConstituenta } from '@/models/rsformAPI'; import { useCstSearchStore } from '@/stores/cstSearch'; interface ConstituentsSearchProps { schema: IRSForm; dense?: boolean; activeID?: ConstituentaID; activeExpression: string; onChange: React.Dispatch>; } function ConstituentsSearch({ schema, activeID, activeExpression, dense, onChange }: ConstituentsSearchProps) { const query = useCstSearchStore(state => state.query); const filterMatch = useCstSearchStore(state => state.match); const filterSource = useCstSearchStore(state => state.source); const includeInherited = useCstSearchStore(state => state.includeInherited); const setQuery = useCstSearchStore(state => state.setQuery); const setMatch = useCstSearchStore(state => state.setMatch); const setSource = useCstSearchStore(state => state.setSource); const toggleInherited = useCstSearchStore(state => state.toggleInherited); useEffect(() => { if (schema.items.length === 0) { onChange([]); return; } let result: IConstituenta[] = []; if (!activeID) { result = schema.items; } else { result = applyGraphFilter(schema, activeID, filterSource); } if (query) { result = result.filter(cst => matchConstituenta(cst, query, filterMatch)); } if (!includeInherited) { result = result.filter(cst => !cst.is_inherited); } onChange(result); }, [query, onChange, filterSource, activeExpression, schema.items, schema, filterMatch, activeID, includeInherited]); return (
{schema.stats.count_inherited > 0 ? ( ${includeInherited ? 'отображать' : 'скрывать'}`} icon={} className='h-fit self-center' onClick={toggleInherited} /> ) : null}
); } export default ConstituentsSearch;