mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 13:39:24 +08:00
fix(filter-provider): improve filter utility with dynamic value and field resolution (#6314)
This commit is contained in:
parent
376cb21a71
commit
605eea4399
@ -193,16 +193,19 @@ export const useFilterAPI = () => {
|
|||||||
|
|
||||||
const doFilter = useCallback(
|
const doFilter = useCallback(
|
||||||
(
|
(
|
||||||
value,
|
value: any | ((target: FilterTarget['targets'][0], block: DataBlock) => any),
|
||||||
field: string | ((target: FilterTarget['targets'][0]) => string) = 'id',
|
field: string | ((target: FilterTarget['targets'][0], block: DataBlock) => string) = 'id',
|
||||||
operator: string | ((target: FilterTarget['targets'][0]) => string) = '$eq',
|
operator: string | ((target: FilterTarget['targets'][0]) => string) = '$eq',
|
||||||
) => {
|
) => {
|
||||||
dataBlocks.forEach((block) => {
|
dataBlocks.forEach((block) => {
|
||||||
const target = targets.find((target) => target.uid === block.uid);
|
const target = targets.find((target) => target.uid === block.uid);
|
||||||
if (!target) return;
|
if (!target) return;
|
||||||
|
|
||||||
|
if (_.isFunction(value)) {
|
||||||
|
value = value(target, block);
|
||||||
|
}
|
||||||
if (_.isFunction(field)) {
|
if (_.isFunction(field)) {
|
||||||
field = field(target);
|
field = field(target, block);
|
||||||
}
|
}
|
||||||
if (_.isFunction(operator)) {
|
if (_.isFunction(operator)) {
|
||||||
operator = operator(target);
|
operator = operator(target);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user