From ee92e61e21b7934e15ade399302a3f039f5d8881 Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 23 Apr 2024 14:53:10 -0700 Subject: [PATCH] FormField feedback --- packages/form-field/src/FormField.spec.tsx | 6 +++- .../src/FormField/FormField.styles.ts | 28 ++++++++++++++++--- .../form-field/src/FormField/FormField.tsx | 10 +++---- .../src/FormField/useFormFieldProps.ts | 10 ++++--- .../FormFieldFeedback.styles.ts | 4 ++- .../FormFieldFeedback/FormFieldFeedback.tsx | 28 ++++++++++++------- packages/form-field/src/constants.ts | 5 +++- 7 files changed, 65 insertions(+), 26 deletions(-) diff --git a/packages/form-field/src/FormField.spec.tsx b/packages/form-field/src/FormField.spec.tsx index aa39941176..d5a65afa78 100644 --- a/packages/form-field/src/FormField.spec.tsx +++ b/packages/form-field/src/FormField.spec.tsx @@ -350,7 +350,11 @@ describe('packages/form-field', () => { const feedback = getByTestId(LGIDS_FORM_FIELD.feedback); expect(input).toHaveAttribute( 'aria-describedby', - description?.id + ' ' + feedback?.id, + expect.stringContaining(description?.id!), + ); + expect(input).toHaveAttribute( + 'aria-describedby', + expect.stringContaining(feedback?.id), ); }); }); diff --git a/packages/form-field/src/FormField/FormField.styles.ts b/packages/form-field/src/FormField/FormField.styles.ts index 3e1f41dceb..c6c699cd87 100644 --- a/packages/form-field/src/FormField/FormField.styles.ts +++ b/packages/form-field/src/FormField/FormField.styles.ts @@ -1,7 +1,15 @@ import { css } from '@leafygreen-ui/emotion'; -import { BaseFontSize, Size, spacing, typeScales } from '@leafygreen-ui/tokens'; +import { + BaseFontSize, + Size, + spacing, + typeScales, + Variant, +} from '@leafygreen-ui/tokens'; -export const getFontSize = ({ +import { FormFieldState } from './FormField.types'; + +export const getFontSizeStyles = ({ baseFontSize, size, }: { @@ -24,12 +32,24 @@ export const getFontSize = ({ if (size === Size.Large) { return css` - font-size: 18px; - line-height: 24px; + font-size: ${typeScales.large.fontSize}px; + line-height: ${typeScales.large.lineHeight}px; `; } }; +export const convertFormFieldStateToIconVariant = (state: FormFieldState) => { + if (state === FormFieldState.Error) { + return Variant.Error; + } + + if (state === FormFieldState.Valid) { + return Variant.Success; + } + + return Variant.Primary; +}; + export const textContainerStyle = css` display: flex; flex-direction: column; diff --git a/packages/form-field/src/FormField/FormField.tsx b/packages/form-field/src/FormField/FormField.tsx index 3ab55a7994..fc7784a52c 100644 --- a/packages/form-field/src/FormField/FormField.tsx +++ b/packages/form-field/src/FormField/FormField.tsx @@ -9,12 +9,12 @@ import { useUpdatedBaseFontSize, } from '@leafygreen-ui/typography'; -import { DEFAULT_MESSAGES } from '../constants'; +import { DEFAULT_MESSAGES, LGIDS_FORM_FIELD } from '../constants'; import { FormFieldProvider } from '../FormFieldContext'; import { FormFieldFeedback } from '../FormFieldFeedback'; import { - getFontSize, + getFontSizeStyles, marginBottom, textContainerStyle, } from './FormField.styles'; @@ -50,7 +50,7 @@ export const FormField = forwardRef( fwdRef, ) => { const baseFontSize = useUpdatedBaseFontSize(baseFontSizeProp); - const fontStyles = getFontSize({ baseFontSize, size }); + const fontStyles = getFontSizeStyles({ baseFontSize, size }); const { labelId, descriptionId, feedbackId, inputId, inputProps } = useFormFieldProps({ label, description, state, id, disabled, ...rest }); @@ -77,7 +77,7 @@ export const FormField = forwardRef( > {label && (