diff --git a/packages/core/client/src/block-provider/FormBlockProvider.tsx b/packages/core/client/src/block-provider/FormBlockProvider.tsx index d2abb74276..fcd16e041a 100644 --- a/packages/core/client/src/block-provider/FormBlockProvider.tsx +++ b/packages/core/client/src/block-provider/FormBlockProvider.tsx @@ -24,6 +24,8 @@ import { useActionContext } from '../schema-component'; import { BlockProvider, useBlockRequestContext } from './BlockProvider'; import { TemplateBlockProvider } from './TemplateBlockProvider'; import { FormActiveFieldsProvider } from './hooks/useFormActiveFields'; +import { useDesignable } from '../schema-component'; +import { useCollectionRecordData } from '../data-source'; export const FormBlockContext = createContext<{ form?: any; @@ -123,6 +125,18 @@ export const useIsDetailBlock = () => { export const FormBlockProvider = withDynamicSchemaProps((props) => { const parentRecordData = useCollectionParentRecordData(); const { parentRecord } = props; + const record = useCollectionRecordData(); + const { association } = props; + const cm = useCollectionManager(); + const { __collection } = record || {}; + const { designable } = useDesignable(); + const collection = props.collection || cm.getCollection(association).name; + + if (!designable && __collection) { + if (__collection !== collection) { + return null; + } + } return ( diff --git a/packages/core/client/src/schema-component/antd/list/List.tsx b/packages/core/client/src/schema-component/antd/list/List.tsx index d17bdd8357..cceffb55be 100644 --- a/packages/core/client/src/schema-component/antd/list/List.tsx +++ b/packages/core/client/src/schema-component/antd/list/List.tsx @@ -30,6 +30,7 @@ const InternalList = (props) => { const fieldSchema = useFieldSchema(); const Designer = useDesigner(); const meta = service?.data?.meta; + const { pageSize, count, hasNext, page } = meta || {}; const field = useField(); const [schemaMap] = useState(new Map()); const { wrapSSR, componentCls, hashId } = useStyles(); @@ -67,7 +68,51 @@ const InternalList = (props) => { ); const cardItemSchema = getCardItemSchema?.(fieldSchema); const { layout = 'vertical' } = cardItemSchema?.['x-component-props'] || {}; - + const usePagination = () => { + if (!count) { + return { + onChange: onPaginationChange, + total: count || field.value?.length < pageSize || !hasNext ? pageSize * page : pageSize * page + 1, + pageSize: pageSize || 10, + current: page || 1, + showSizeChanger: true, + pageSizeOptions, + simple: true, + className: css` + .ant-pagination-simple-pager { + display: none !important; + } + `, + itemRender: (_, type, originalElement) => { + if (type === 'prev') { + return ( +
+ {originalElement}
{page}
+
+ ); + } else { + return originalElement; + } + }, + }; + } + return { + onChange: onPaginationChange, + total: count || 0, + pageSize: pageSize || 10, + current: page || 1, + showSizeChanger: true, + pageSizeOptions, + }; + }; + const paginationProps = usePagination(); return wrapSSR( { {field.value?.length