uf.rjsf_config#
RJSF customization layer for uf.
Provides configuration classes and builders for customizing RJSF form generation beyond the defaults, including field widgets, UI options, and validation rules.
Functions
|
Apply field configurations to existing schemas. |
|
Get a predefined field configuration by name. |
Classes
|
Configuration for conditional field display. |
Builder for RJSF configurations with sensible defaults. |
|
|
Configuration for individual form fields. |
- class uf.rjsf_config.ConditionalFieldConfig(field_name, *, condition, then_schema=None, else_schema=None)[source]#
Bases:
objectConfiguration for conditional field display.
Allows fields to be shown/hidden based on the values of other fields.
Example
>>> # Show 'other_reason' field only when reason is 'other' >>> config = ConditionalFieldConfig( ... 'other_reason', ... condition={'reason': {'const': 'other'}} ... )
- class uf.rjsf_config.RjsfConfigBuilder[source]#
Bases:
objectBuilder for RJSF configurations with sensible defaults.
This class helps construct RJSF specifications by providing a fluent interface for configuring fields.
Example
>>> builder = RjsfConfigBuilder() >>> builder.field('email', RjsfFieldConfig(format='email')) >>> builder.field('message', RjsfFieldConfig(widget='textarea')) >>> spec = builder.build(base_schema)
- class_names(class_names)[source]#
Set CSS class names for the form.
- Parameters:
class_names (
str) – Space-separated CSS class names- Return type:
- Returns:
Self for method chaining
- field(param_name, config)[source]#
Configure a specific field.
- Parameters:
param_name (
str) – Name of the parameter/fieldconfig (
RjsfFieldConfig) – Configuration for the field
- Return type:
- Returns:
Self for method chaining
- class uf.rjsf_config.RjsfFieldConfig(widget=None, ui_options=<factory>, format=None, enum=None, description=None, placeholder=None, title=None, disabled=False, readonly=False, hidden=False, default=None)[source]#
Bases:
objectConfiguration for individual form fields.
This class allows fine-grained control over how form fields are rendered in the RJSF interface.
- widget#
Widget type (e.g., ‘textarea’, ‘select’, ‘radio’, ‘date’)
- ui_options#
Additional UI options for the widget
- format#
JSON Schema format (e.g., ‘email’, ‘uri’, ‘date-time’)
- enum#
List of allowed values (for dropdowns)
- description#
Field description/help text
- placeholder#
Placeholder text for the input
- title#
Custom title for the field
- disabled#
Whether the field is disabled
- readonly#
Whether the field is read-only
Whether to hide the field
- default#
Default value for the field
Example
>>> email_config = RjsfFieldConfig( ... widget='email', ... format='email', ... placeholder='user@example.com' ... )
- uf.rjsf_config.apply_field_configs(schema, ui_schema, field_configs)[source]#
Apply field configurations to existing schemas.
- Parameters:
schema (
dict) – JSON Schema to modifyui_schema (
dict) – UI Schema to modifyfield_configs (
dict[str,RjsfFieldConfig]) – Mapping of field names to configurations
- Return type:
- Returns:
Tuple of (modified_schema, modified_ui_schema)
Example
>>> configs = { ... 'email': get_field_config('email'), ... 'bio': get_field_config('multiline_text'), ... } >>> schema, ui_schema = apply_field_configs(schema, ui_schema, configs)
- uf.rjsf_config.get_field_config(config_name)[source]#
Get a predefined field configuration by name.
- Parameters:
config_name (
str) – Name of the configuration (e.g., ‘email’, ‘multiline_text’)- Return type:
- Returns:
RjsfFieldConfig instance
- Raises:
KeyError – If config_name not found
Example
>>> email_config = get_field_config('email') >>> email_config.format 'email'