From 49be0ada55fae0a256c0ea8c495d86c5d31d8438 Mon Sep 17 00:00:00 2001 From: Alessio Gravili Date: Thu, 13 Nov 2025 20:06:38 -0800 Subject: [PATCH] fix --- .../src/views/List/handleServerFunction.tsx | 25 +++------------ .../src/elements/ListDrawer/DrawerContent.tsx | 14 ++++---- packages/ui/src/elements/ListDrawer/types.ts | 32 ++++++++++++++++++- packages/ui/src/exports/client/index.ts | 2 ++ 4 files changed, 45 insertions(+), 28 deletions(-) diff --git a/packages/next/src/views/List/handleServerFunction.tsx b/packages/next/src/views/List/handleServerFunction.tsx index d30e332a5a7..5b667c9f1df 100644 --- a/packages/next/src/views/List/handleServerFunction.tsx +++ b/packages/next/src/views/List/handleServerFunction.tsx @@ -1,4 +1,5 @@ -import type { CollectionPreferences, ListQuery, ServerFunction, VisibleEntities } from 'payload' +import type { RenderListServerFnArgs, RenderListServerFnReturnType } from '@payloadcms/ui' +import type { CollectionPreferences, ServerFunction, VisibleEntities } from 'payload' import { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig' import { headers as getHeaders } from 'next/headers.js' @@ -7,27 +8,9 @@ import { applyLocaleFiltering } from 'payload/shared' import { renderListView } from './index.js' -type RenderListResult = { - List: React.ReactNode - preferences: CollectionPreferences -} - export const renderListHandler: ServerFunction< - { - collectionSlug: string - disableActions?: boolean - disableBulkDelete?: boolean - disableBulkEdit?: boolean - disableQueryPresets?: boolean - documentDrawerSlug: string - drawerSlug?: string - enableRowSelections: boolean - overrideEntityVisibility?: boolean - query: ListQuery - redirectAfterDelete: boolean - redirectAfterDuplicate: boolean - }, - Promise + RenderListServerFnArgs, + Promise > = async (args) => { const { collectionSlug, diff --git a/packages/ui/src/elements/ListDrawer/DrawerContent.tsx b/packages/ui/src/elements/ListDrawer/DrawerContent.tsx index 37232b8b82f..6c62a5f8bd8 100644 --- a/packages/ui/src/elements/ListDrawer/DrawerContent.tsx +++ b/packages/ui/src/elements/ListDrawer/DrawerContent.tsx @@ -6,7 +6,11 @@ import { hoistQueryParamsToAnd } from 'payload/shared' import React, { useCallback, useEffect, useState } from 'react' import type { ListDrawerContextProps, ListDrawerContextType } from '../ListDrawer/Provider.js' -import type { ListDrawerProps } from './types.js' +import type { + ListDrawerProps, + RenderListServerFnArgs, + RenderListServerFnReturnType, +} from './types.js' import { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js' import { useEffectEvent } from '../../hooks/useEffectEvent.js' @@ -92,10 +96,9 @@ export const ListDrawerContent: React.FC = ({ } if (slug) { - const result: { List: React.ReactNode } = (await serverFunction({ + const result: RenderListServerFnReturnType = (await serverFunction({ name: 'render-list', args: { - allowCreate, collectionSlug: slug, disableBulkDelete: true, disableBulkEdit: true, @@ -104,8 +107,8 @@ export const ListDrawerContent: React.FC = ({ enableRowSelections, overrideEntityVisibility, query: newQuery, - }, - })) as { List: React.ReactNode } + } satisfies RenderListServerFnArgs, + })) as RenderListServerFnReturnType setListView(result?.List || null) } else { @@ -123,7 +126,6 @@ export const ListDrawerContent: React.FC = ({ [ serverFunction, closeModal, - allowCreate, drawerSlug, isOpen, enableRowSelections, diff --git a/packages/ui/src/elements/ListDrawer/types.ts b/packages/ui/src/elements/ListDrawer/types.ts index 7d37ca1155d..f9f54b906b2 100644 --- a/packages/ui/src/elements/ListDrawer/types.ts +++ b/packages/ui/src/elements/ListDrawer/types.ts @@ -1,9 +1,39 @@ -import type { FilterOptionsResult, SanitizedCollectionConfig } from 'payload' +import type { + CollectionPreferences, + FilterOptionsResult, + ListQuery, + SanitizedCollectionConfig, +} from 'payload' import type React from 'react' import type { HTMLAttributes } from 'react' import type { ListDrawerContextProps } from './Provider.js' +/** + * @internal - this may change in a minor release + */ +export type RenderListServerFnArgs = { + collectionSlug: string + disableActions?: boolean + disableBulkDelete?: boolean + disableBulkEdit?: boolean + disableQueryPresets?: boolean + drawerSlug?: string + enableRowSelections: boolean + overrideEntityVisibility?: boolean + query: ListQuery + redirectAfterDelete?: boolean + redirectAfterDuplicate?: boolean +} + +/** + * @internal - this may change in a minor release + */ +export type RenderListServerFnReturnType = { + List: React.ReactNode + preferences: CollectionPreferences +} + export type ListDrawerProps = { readonly allowCreate?: boolean readonly collectionSlugs: SanitizedCollectionConfig['slug'][] diff --git a/packages/ui/src/exports/client/index.ts b/packages/ui/src/exports/client/index.ts index 1ad4352d07a..b149f57f4ff 100644 --- a/packages/ui/src/exports/client/index.ts +++ b/packages/ui/src/exports/client/index.ts @@ -99,6 +99,8 @@ export { useListDrawer } from '../../elements/ListDrawer/index.js' export type { ListDrawerProps, ListTogglerProps, + RenderListServerFnArgs, + RenderListServerFnReturnType, UseListDrawer, } from '../../elements/ListDrawer/types.js' export { ListSelection } from '../../views/List/ListSelection/index.js'