fix(filter-provider): improve filter utility with dynamic value and field resolution (#6314)

This commit is contained in:
Zeke Zhang 2025-02-27 07:37:00 +08:00 committed by GitHub
parent 376cb21a71
commit 605eea4399
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -193,16 +193,19 @@ export const useFilterAPI = () => {
const doFilter = useCallback(
(
value,
field: string | ((target: FilterTarget['targets'][0]) => string) = 'id',
value: any | ((target: FilterTarget['targets'][0], block: DataBlock) => any),
field: string | ((target: FilterTarget['targets'][0], block: DataBlock) => string) = 'id',
operator: string | ((target: FilterTarget['targets'][0]) => string) = '$eq',
) => {
dataBlocks.forEach((block) => {
const target = targets.find((target) => target.uid === block.uid);
if (!target) return;
if (_.isFunction(value)) {
value = value(target, block);
}
if (_.isFunction(field)) {
field = field(target);
field = field(target, block);
}
if (_.isFunction(operator)) {
operator = operator(target);