- Fix has_unique flag reading from field definition (was scanning fragment fields) - Implement duplicate validation in CLI and TUI backends - Add item counter update in Web backend after add/delete operations - Refactor Web JavaScript: remove global constants, use closure-based state per group - Store repeating group config in data-* attributes instead of global variables - Update documentation and examples with unique = true attribute - All backends now enforce unique items validation consistently
Advanced Features
Examples showcasing conditional logic, dynamic fields, and complex forms.
Files
Conditional Logic
- conditional_form.toml - Fields that show/hide based on conditions
- conditional_sections.toml - Sections visible based on form state
- conditional_required_demo.rs - Programmatic example with conditional validation
Dynamic Display
- display_items_demo.toml - Complex item rendering and formatting
Usage
TOML Forms (CLI/Web)
# CLI
cargo run --example conditional_form
# Web
cargo run -p typedialog-web -- --config conditional_form.toml
Rust Examples (with full control)
cargo run --example conditional_required_demo
Features Demonstrated
- Conditional visibility - Show/hide fields based on other fields
- Conditional requirements - Change validation rules dynamically
- Section collapsing - Organize complex forms hierarchically
- Custom display logic - Complex field rendering
- State management - Track form state and dependencies
Patterns
Conditional Field Example
[fields.experience]
type = "select"
label = "Experience Level"
options = ["Junior", "Senior"]
[fields.years]
type = "number"
label = "Years of Experience"
visible_when = { experience = "Senior" }
required_when = { experience = "Senior" }
Conditional Section Example
[sections.advanced_options]
visible_when = { show_advanced = true }
[sections.advanced_options.fields.custom_setting]
type = "text"