Currently, custom components do not respect `admin.condition` unless manually wrapped with the `withCondition` HOC, like all default fields currently do. This should not be a requirement of component authors. Instead, we can automatically detect custom client and server fields and wrap them with the underlying `WatchCondition` component which will subscribe to the `passesCondition` property within client-side form state. For my future self: there are potentially multiple instances where fields subscribe to conditions duplicately, such as when rendering a default Payload field within a custom field component. This was always a problem and it is non-breaking, but needs to be reevaluated and removed in the future for performance. Only the default fields that Payload renders client-side need to subscribe to field conditions in this way. When importing a Payload field into your custom field component, for example, it should not include the HOC, because custom components now watch conditions themselves.
12 lines
285 B
TypeScript
12 lines
285 B
TypeScript
'use client'
|
|
import type { TextFieldClientComponent } from 'payload'
|
|
|
|
import { TextField, withCondition } from '@payloadcms/ui'
|
|
import React from 'react'
|
|
|
|
const MyField: TextFieldClientComponent = (props) => {
|
|
return <TextField {...props} />
|
|
}
|
|
|
|
export default withCondition(MyField)
|