diff --git a/src/npm-fastui/src/components/FormField.tsx b/src/npm-fastui/src/components/FormField.tsx index 1676eb1d..d1b30c78 100644 --- a/src/npm-fastui/src/components/FormField.tsx +++ b/src/npm-fastui/src/components/FormField.tsx @@ -51,7 +51,7 @@ interface FormFieldTextareaProps extends FormFieldTextarea { } export const FormFieldTextareaComp: FC = (props) => { - const { name, placeholder, required, locked, rows, cols } = props + const { name, placeholder, required, locked, rows, cols, autocomplete } = props return (
@@ -141,7 +142,7 @@ export const FormFieldSelectComp: FC = (props) => { } export const FormFieldSelectVanillaComp: FC = (props) => { - const { name, required, locked, options, multiple, initial, placeholder, onChange } = props + const { name, required, locked, options, multiple, initial, placeholder, onChange, autocomplete } = props const className = useClassName(props) const classNameSelect = useClassName(props, { el: 'select' }) @@ -159,6 +160,7 @@ export const FormFieldSelectVanillaComp: FC = (props) => { aria-describedby={descId(props)} placeholder={placeholder} onChange={() => onChange && onChange()} + autoComplete={autocomplete} > {multiple ? null : } {options.map((option, i) => ( diff --git a/src/npm-fastui/src/models.d.ts b/src/npm-fastui/src/models.d.ts index 1f85fd49..510fca5f 100644 --- a/src/npm-fastui/src/models.d.ts +++ b/src/npm-fastui/src/models.d.ts @@ -363,6 +363,7 @@ export interface FormFieldTextarea { cols?: number initial?: string placeholder?: string + autocomplete?: string type: 'FormFieldTextarea' } export interface FormFieldBoolean { @@ -405,6 +406,7 @@ export interface FormFieldSelect { initial?: string[] | string vanilla?: boolean placeholder?: string + autocomplete?: string type: 'FormFieldSelect' } export interface SelectOption { diff --git a/src/python-fastui/fastui/components/forms.py b/src/python-fastui/fastui/components/forms.py index 6f0b92a1..a18a9c4c 100644 --- a/src/python-fastui/fastui/components/forms.py +++ b/src/python-fastui/fastui/components/forms.py @@ -40,6 +40,7 @@ class FormFieldTextarea(BaseFormField): cols: _t.Union[int, None] = None initial: _t.Union[str, None] = None placeholder: _t.Union[str, None] = None + autocomplete: _t.Union[str, None] = None type: _t.Literal['FormFieldTextarea'] = 'FormFieldTextarea' @@ -61,6 +62,7 @@ class FormFieldSelect(BaseFormField): initial: _t.Union[_t.List[str], str, None] = None vanilla: _t.Union[bool, None] = None placeholder: _t.Union[str, None] = None + autocomplete: _t.Union[str, None] = None type: _t.Literal['FormFieldSelect'] = 'FormFieldSelect' diff --git a/src/python-fastui/fastui/json_schema.py b/src/python-fastui/fastui/json_schema.py index e0ee88da..49492796 100644 --- a/src/python-fastui/fastui/json_schema.py +++ b/src/python-fastui/fastui/json_schema.py @@ -257,6 +257,7 @@ def special_string_field( placeholder=schema.get('placeholder'), initial=schema.get('initial'), description=schema.get('description'), + autocomplete=schema.get('autocomplete'), ) elif enum := schema.get('enum'): enum_labels = schema.get('enum_labels', {}) @@ -269,6 +270,7 @@ def special_string_field( options=[SelectOption(value=v, label=enum_labels.get(v) or as_title(v)) for v in enum], initial=schema.get('default'), description=schema.get('description'), + autocomplete=schema.get('autocomplete'), ) elif search_url := schema.get('search_url'): return FormFieldSelectSearch(