feat: add filterOtherRecordsCollection for DataBlockInitializer (#4117)

This commit is contained in:
Zeke Zhang 2024-04-21 07:59:07 +08:00 committed by GitHub
parent 5f8e442a15
commit 9fe1ecdf1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 1 deletions

View File

@ -271,8 +271,15 @@ export interface DataBlockInitializerProps {
icon?: string | React.ReactNode;
name: string;
title: string;
/**
* Current record Associated records
*/
filter?: (options: { collection: Collection; associationField: CollectionFieldOptions }) => boolean;
filterDataSource?: (dataSource: DataSource) => boolean;
/**
* Other records
*/
filterOtherRecordsCollection?: (collection: Collection) => boolean;
componentType: string;
onlyCurrentDataSource?: boolean;
hideSearch?: boolean;
@ -304,6 +311,7 @@ export const DataBlockInitializer = (props: DataBlockInitializerProps) => {
items: itemsFromProps,
hideOtherRecordsInPopup,
onClick: propsOnClick,
filterOtherRecordsCollection,
} = props;
const { insert, setVisible } = useSchemaInitializer();
const compile = useCompile();
@ -335,6 +343,7 @@ export const DataBlockInitializer = (props: DataBlockInitializerProps) => {
componentName: componentType,
filter,
filterDataSource,
filterOtherRecordsCollection,
onlyCurrentDataSource,
showAssociationFields,
dataBlockInitializerProps: props,

View File

@ -843,6 +843,7 @@ export const useCollectionDataSourceItems = ({
dataBlockInitializerProps,
hideOtherRecordsInPopup,
onClick,
filterOtherRecordsCollection,
}: {
componentName;
filter?: (options: { collection?: Collection; associationField?: CollectionFieldOptions }) => boolean;
@ -855,6 +856,10 @@ export const useCollectionDataSourceItems = ({
*/
hideOtherRecordsInPopup?: boolean;
onClick?: (options: any) => void;
/**
* Other records
*/
filterOtherRecordsCollection?: (collection: Collection) => boolean;
}) => {
const { t } = useTranslation();
const dm = useDataSourceManager();
@ -959,7 +964,10 @@ export const useCollectionDataSourceItems = ({
hideChildrenIfSingleCollection: false,
onCreateBlockSchema: dataBlockInitializerProps.onCreateBlockSchema,
componentType: componentTypeMap[componentName] || componentName,
filter({ collection: c, associationField }) {
filter({ collection, associationField }) {
if (filterOtherRecordsCollection) {
return filterOtherRecordsCollection(collection);
}
return true;
},
onClick(options) {