import * as React from 'react'; import classNames from 'classnames'; import { classNameModifier } from '../shared/utils'; import { ComponentClassNames } from '../shared/constants'; import { BaseFieldGroupOptions, FieldGroupOptions, ForwardRefPrimitive, Primitive, } from '../types'; import { Flex } from '../Flex'; import { View } from '../View'; const FieldGroupPrimitive: Primitive = ( { children, className, innerEndComponent, innerStartComponent, orientation = 'horizontal', outerEndComponent, outerStartComponent, variation, ...rest }, ref ) => { // Don't apply hasInner classnames unless a component was provided const hasInnerStartComponent = innerStartComponent != null; const hasInnerEndComponent = innerEndComponent != null; const fieldGroupHasInnerStartClassName = hasInnerStartComponent ? ComponentClassNames.FieldGroupHasInnerStart : null; const fieldGroupHasInnerEndClassName = hasInnerEndComponent ? ComponentClassNames.FieldGroupHasInnerEnd : null; const componentClasses = classNames( ComponentClassNames.FieldGroup, fieldGroupHasInnerStartClassName, fieldGroupHasInnerEndClassName, classNameModifier(ComponentClassNames.FieldGroup, orientation), className ); return ( {outerStartComponent && ( {outerStartComponent} )} {innerStartComponent && ( {innerStartComponent} )} {children} {innerEndComponent && ( {innerEndComponent} )} {outerEndComponent && ( {outerEndComponent} )} ); }; export const FieldGroup: ForwardRefPrimitive = React.forwardRef(FieldGroupPrimitive); FieldGroup.displayName = 'FieldGroup';