From ac8a74e689832671593aecc5689fae258910bb66 Mon Sep 17 00:00:00 2001 From: malangcat Date: Sun, 5 Jan 2025 05:12:03 +0900 Subject: [PATCH] fix: text field snapshot test failures --- docs/public/__registry__/ui/text-field.json | 2 +- docs/registry/ui/text-field.tsx | 61 +++++++++++-------- .../qvism-preset/src/text-field.recipe.ts | 5 +- packages/stylesheet/textField.css | 5 +- 4 files changed, 41 insertions(+), 32 deletions(-) diff --git a/docs/public/__registry__/ui/text-field.json b/docs/public/__registry__/ui/text-field.json index 9340f0416..b6f8e4bc6 100644 --- a/docs/public/__registry__/ui/text-field.json +++ b/docs/public/__registry__/ui/text-field.json @@ -9,7 +9,7 @@ { "name": "text-field.tsx", "type": "ui", - "content": "\"use client\";\n\nimport \"@seed-design/stylesheet/textField.css\";\n\nimport * as React from \"react\";\nimport { IconExclamationmarkCircleFill } from \"@daangn/react-monochrome-icon\";\nimport { TextField as SeedTextField } from \"@seed-design/react\";\n\nexport interface TextFieldProps\n extends Omit {\n label?: React.ReactNode;\n\n indicator?: React.ReactNode;\n\n prefixIcon?: React.ReactNode;\n\n prefix?: React.ReactNode;\n\n suffixIcon?: React.ReactNode;\n\n suffix?: React.ReactNode;\n\n description?: React.ReactNode;\n\n errorMessage?: React.ReactNode;\n\n hideCharacterCount?: boolean;\n}\n\nexport const TextField = React.forwardRef(\n (\n {\n description,\n errorMessage,\n prefix,\n prefixIcon,\n suffix,\n suffixIcon,\n indicator,\n label,\n children,\n hideCharacterCount,\n ...otherProps\n },\n ref,\n ) => {\n const renderCharacterCount =\n !hideCharacterCount && otherProps.maxGraphemeCount;\n\n return (\n \n \n {label}\n {indicator}\n \n \n {prefixIcon && }\n {prefix && (\n {prefix}\n )}\n {children}\n {suffix && (\n {suffix}\n )}\n {suffixIcon && }\n {indicator && (\n {indicator}\n )}\n \n \n {description && (\n {description}\n )}\n {errorMessage && (\n \n }\n />\n {errorMessage}\n \n )}\n {renderCharacterCount && (\n \n \n \n /{otherProps.maxGraphemeCount}\n \n \n )}\n \n \n );\n },\n);\nTextField.displayName = \"TextField\";\n\nexport interface TextFieldInputProps extends SeedTextField.InputProps {}\n\nexport const TextFieldInput = SeedTextField.Input;\n\nexport interface TextFieldTextareaProps extends SeedTextField.TextareaProps {}\n\nexport const TextFieldTextarea = SeedTextField.Textarea;\n" + "content": "\"use client\";\n\nimport \"@seed-design/stylesheet/textField.css\";\n\nimport * as React from \"react\";\nimport { IconExclamationmarkCircleFill } from \"@daangn/react-monochrome-icon\";\nimport { TextField as SeedTextField } from \"@seed-design/react\";\n\nexport interface TextFieldProps\n extends Omit {\n label?: React.ReactNode;\n\n indicator?: React.ReactNode;\n\n prefixIcon?: React.ReactNode;\n\n prefix?: React.ReactNode;\n\n suffixIcon?: React.ReactNode;\n\n suffix?: React.ReactNode;\n\n description?: React.ReactNode;\n\n errorMessage?: React.ReactNode;\n\n hideCharacterCount?: boolean;\n}\n\nexport const TextField = React.forwardRef(\n (\n {\n description,\n errorMessage,\n prefix,\n prefixIcon,\n suffix,\n suffixIcon,\n indicator,\n label,\n children,\n hideCharacterCount,\n ...otherProps\n },\n ref,\n ) => {\n const renderCharacterCount =\n !hideCharacterCount && otherProps.maxGraphemeCount;\n const renderDescription = description && !otherProps.invalid;\n const renderErrorMessage = errorMessage && otherProps.invalid;\n const renderFooter =\n renderDescription || renderErrorMessage || renderCharacterCount;\n const renderHeader = label || indicator;\n\n return (\n \n {renderHeader && (\n \n {label}\n {indicator}\n \n )}\n \n {prefixIcon && }\n {prefix && (\n {prefix}\n )}\n {children}\n {suffix && (\n {suffix}\n )}\n {suffixIcon && }\n {indicator && (\n {indicator}\n )}\n \n {renderFooter && (\n \n {renderDescription && (\n \n {description}\n \n )}\n {renderErrorMessage && (\n \n }\n />\n {errorMessage}\n \n )}\n {renderCharacterCount && (\n \n \n \n /{otherProps.maxGraphemeCount}\n \n \n )}\n \n )}\n \n );\n },\n);\nTextField.displayName = \"TextField\";\n\nexport interface TextFieldInputProps extends SeedTextField.InputProps {}\n\nexport const TextFieldInput = SeedTextField.Input;\n\nexport interface TextFieldTextareaProps extends SeedTextField.TextareaProps {}\n\nexport const TextFieldTextarea = SeedTextField.Textarea;\n" } ] } \ No newline at end of file diff --git a/docs/registry/ui/text-field.tsx b/docs/registry/ui/text-field.tsx index 38e273e29..7d4d343cb 100644 --- a/docs/registry/ui/text-field.tsx +++ b/docs/registry/ui/text-field.tsx @@ -46,13 +46,20 @@ export const TextField = React.forwardRef( ) => { const renderCharacterCount = !hideCharacterCount && otherProps.maxGraphemeCount; + const renderDescription = description && !otherProps.invalid; + const renderErrorMessage = errorMessage && otherProps.invalid; + const renderFooter = + renderDescription || renderErrorMessage || renderCharacterCount; + const renderHeader = label || indicator; return ( - - {label} - {indicator} - + {renderHeader && ( + + {label} + {indicator} + + )} {prefixIcon && } {prefix && ( @@ -67,27 +74,31 @@ export const TextField = React.forwardRef( {indicator} )} - - {description && ( - {description} - )} - {errorMessage && ( - - } - /> - {errorMessage} - - )} - {renderCharacterCount && ( - - - - /{otherProps.maxGraphemeCount} - - - )} - + {renderFooter && ( + + {renderDescription && ( + + {description} + + )} + {renderErrorMessage && ( + + } + /> + {errorMessage} + + )} + {renderCharacterCount && ( + + + + /{otherProps.maxGraphemeCount} + + + )} + + )} ); }, diff --git a/packages/qvism-preset/src/text-field.recipe.ts b/packages/qvism-preset/src/text-field.recipe.ts index 9094c9fda..ed6ee8038 100644 --- a/packages/qvism-preset/src/text-field.recipe.ts +++ b/packages/qvism-preset/src/text-field.recipe.ts @@ -104,17 +104,16 @@ const textField = defineRecipe({ font: "inherit", [pseudo(":is(input)")]: { - border: "none", paddingInline: 0, - background: "none", }, [pseudo(":is(textarea)")]: { - border: "none", minHeight: "90px", width: "100%", }, + background: "none", + border: "none", outline: "none", resize: "none", flexGrow: 1, diff --git a/packages/stylesheet/textField.css b/packages/stylesheet/textField.css index 901214e21..f83d084df 100644 --- a/packages/stylesheet/textField.css +++ b/packages/stylesheet/textField.css @@ -67,16 +67,15 @@ font: inherit; } .textField__value:is(input) { - border: none; padding-inline: 0; - background: none; } .textField__value:is(textarea) { - border: none; min-height: 90px; width: 100%; } .textField__value { + background: none; + border: none; outline: none; resize: none; flex-grow: 1;