/** * External dependencies */ import clsx from 'clsx'; /** * WordPress dependencies */ import { useContext, useMemo } from '@wordpress/element'; import { __experimentalHeading as Heading, BaseControl, } from '@wordpress/components'; import { Stack } from '@wordpress/ui'; /** * Internal dependencies */ import type { FieldLayoutProps, NormalizedForm, NormalizedRegularLayout, } from '../../../types'; import DataFormContext from '../../dataform-context'; import { DataFormLayout } from '../data-form-layout'; import { DEFAULT_LAYOUT } from '../normalize-form'; function Header( { title }: { title: string } ) { return ( { title } ); } export default function FormRegularField< Item >( { data, field, onChange, hideLabelFromVision, markWhenOptional, validity, }: FieldLayoutProps< Item > ) { const { fields } = useContext( DataFormContext ); const layout = field.layout as NormalizedRegularLayout; const form: NormalizedForm = useMemo( () => ( { layout: DEFAULT_LAYOUT, fields: !! field.children ? field.children : [], } ), [ field ] ); if ( !! field.children ) { return ( <> { ! hideLabelFromVision && field.label && (
) } ); } const labelPosition = layout.labelPosition; const fieldDefinition = fields.find( ( fieldDef ) => fieldDef.id === field.id ); if ( ! fieldDefinition || ! fieldDefinition.Edit ) { return null; } if ( labelPosition === 'side' ) { return (
{ fieldDefinition.label }
{ fieldDefinition.readOnly === true ? ( ) : ( ) }
); } return (
{ fieldDefinition.readOnly === true ? ( <> <> { ! hideLabelFromVision && labelPosition !== 'none' && ( { fieldDefinition.label } ) } ) : ( ) }
); }