feat(doc-search): Hinzufügen von Attributstatusverwaltung und Eingabewertbindung für Filter

This commit is contained in:
tekh 2025-07-16 11:03:07 +02:00
parent 1fbcdd82c8
commit 3cef34bd1e

View File

@ -35,6 +35,8 @@ export function DocSearchView() {
}); });
}, []); }, []);
const [openCreateFilterModal, setOpenCreateFilterModal] = useState(false);
const [docs, setDocs] = useState<Doc[]>([]); const [docs, setDocs] = useState<Doc[]>([]);
useEffect(() => { useEffect(() => {
@ -43,7 +45,30 @@ export function DocSearchView() {
}); });
}, []); }, []);
const [openCreateFilterModal, setOpenCreateFilterModal] = useState(false); //#region attributes
const [attributes, setAttributes] = useState<Record<string, string>>({});
function setAttribute(name: string, serilizedValue: string) {
setAttributes(prev => ({
...prev,
[name]: serilizedValue
}));
}
function removeAttribute(name: string) {
setAttributes(prev => {
const { [name]: _, ...rest } = prev;
return rest;
});
}
function updateAttribute(name: string, serilizedValue?: string | null) {
if (serilizedValue)
setAttribute(name, serilizedValue);
else
removeAttribute(name);
}
//#endregion
//#region example components //#region example components
// <Box // <Box
@ -108,7 +133,7 @@ export function DocSearchView() {
filterComp = <DecimalFilter label={filter.label ?? filter.name} /> filterComp = <DecimalFilter label={filter.label ?? filter.name} />
break; break;
case 'VARCHAR': case 'VARCHAR':
filterComp = <TextFilter label={filter.label ?? filter.name} /> filterComp = <TextFilter label={filter.label ?? filter.name} onChange={value => updateAttribute(filter.name, value)} />
break; break;
case 'DATE': case 'DATE':
filterComp = <DateFilter label={filter.label ?? filter.name} /> filterComp = <DateFilter label={filter.label ?? filter.name} />