diff --git a/src/controls/TextControl.tsx b/src/controls/TextControl.tsx index 09b8ab7..bdaa41c 100644 --- a/src/controls/TextControl.tsx +++ b/src/controls/TextControl.tsx @@ -1,6 +1,6 @@ import type { ChangeEvent } from "react" import { useCallback, useEffect } from "react" -import { Input, Form } from "antd" +import { Input, Form, InputProps } from "antd" import type { Rule } from "antd/es/form" import type { ControlElement, @@ -10,6 +10,7 @@ import type { import type { ControlUISchema, TextControlOptions } from "../ui-schema" import { assertNever } from "../common/assert-never" import { withJsonFormsControlProps } from "@jsonforms/react" +import { TextAreaProps } from "antd/es/input/TextArea" type ControlProps = Omit & { data: string handleChange(path: string, value: string): void @@ -95,26 +96,64 @@ function TextControlInput({ textControlOptions, ...rest }: TextControlInputProps) { + const { inputProps, ...restTextControlOptions } = textControlOptions + if ( - !(`type` in textControlOptions) || - textControlOptions.type === undefined + !(`type` in restTextControlOptions) || + restTextControlOptions.type === undefined ) { - return + return ( + + ) } - switch (textControlOptions.type) { + switch (restTextControlOptions.type) { case "multiline": - return + return ( + + ) case "singleline": - return + return ( + + ) case "password": - return + return ( + + ) default: try { - assertNever(textControlOptions.type) + assertNever(restTextControlOptions.type) } catch (e) { - return + return ( + + ) } } } diff --git a/src/stories/controls/TextControl.stories.tsx b/src/stories/controls/TextControl.stories.tsx index 4a61064..2d340b2 100644 --- a/src/stories/controls/TextControl.stories.tsx +++ b/src/stories/controls/TextControl.stories.tsx @@ -90,7 +90,11 @@ export const Password: Story = { type: "Control", scope: "#/properties/name", label: "Name", - options: { type: "password", rules: [] }, + options: { + type: "password", + rules: [], + inputProps: { autoComplete: "new-password" }, + }, }, ], } satisfies UISchema,