Crate leptos_forms_rs

Crate leptos_forms_rs 

Source
Expand description

Leptos Forms - A comprehensive form management library for Leptos

This library provides a complete solution for building forms in Leptos applications, including form state management, validation, field arrays, event handling, and more.

§Features

  • Type-safe forms with compile-time validation
  • Reactive state management using Leptos signals
  • Event handling system with comprehensive form and field events
  • Hook system with React-like hooks for form state management
  • Component integration with pre-built form components
  • Field arrays and dynamic forms support
  • Form persistence with localStorage support
  • WASM-powered for high performance

§Quick Start

use leptos::*;
use leptos::prelude::{ElementChild, ClassAttribute};
use leptos_forms_rs::*;
use leptos_forms_rs::core::types::FieldType;
use serde::{Deserialize, Serialize};

#[derive(Clone, Serialize, Deserialize, PartialEq, Debug)]
struct LoginForm {
    email: String,
    password: String,
}

impl Form for LoginForm {
    fn default_values() -> Self {
        LoginForm {
            email: "".to_string(),
            password: "".to_string(),
        }
    }

    fn field_metadata() -> Vec<FieldMetadata> {
        vec![
            FieldMetadata {
                name: "email".to_string(),
                field_type: FieldType::Email,
                ..Default::default()
            },
            FieldMetadata {
                name: "password".to_string(),
                field_type: FieldType::Password,
                ..Default::default()
            }
        ]
    }

    fn validate(&self) -> Result<(), ValidationErrors> { Ok(()) }
}

#[component]
pub fn LoginPage() -> impl IntoView {
    let (form, _submit_callback, _reset_callback) = use_form(LoginForm::default_values());

    view! {
        <div class="form">
            <FormField form=form.clone() name="email".to_string() />
            <FormField form=form.clone() name="password".to_string() />
        </div>
    }
}

Re-exports§

pub use core::traits::FormState;
pub use core::FieldMetadata;
pub use core::Form;
pub use core::FormHandle;
pub use core::FormSchema;
pub use validation::validate_form;
pub use validation::ValidationErrors;
pub use validation::Validators;
pub use error::FieldError;
pub use error::FormError;
pub use hooks::use_conditional_validation;
pub use hooks::use_field_array;
pub use hooks::use_field_array_values;
pub use hooks::use_field_dirty;
pub use hooks::use_field_error;
pub use hooks::use_field_touched;
pub use hooks::use_field_value;
pub use hooks::use_form;
pub use hooks::use_form_analytics;
pub use hooks::use_form_performance;
pub use hooks::use_form_persistence;
pub use hooks::use_form_submission;
pub use hooks::use_form_validation;
pub use hooks::use_form_wizard;
pub use hooks::use_real_time_validation;
pub use hooks::FieldArrayHandle;
pub use components::form_wizard as FormWizard;
pub use components::Form as FormComponent;
pub use components::FormDebug;
pub use components::FormField;
pub use components::FormReset;
pub use utils::deserialize_form;
pub use utils::form_from_json;
pub use utils::form_to_json;
pub use utils::form_to_map;
pub use utils::forms_are_equal;
pub use utils::get_field_type;
pub use utils::get_form_field_names;
pub use utils::get_form_stats;
pub use utils::get_required_field_names;
pub use utils::has_validation_errors;
pub use utils::is_field_required;
pub use utils::map_to_form;
pub use utils::merge_validation_errors;
pub use utils::serialize_form;
pub use utils::validate_field_value;
pub use utils::validate_form_detailed;
pub use utils::FormStats;
pub use utils::FormValidationResult;
pub use events::EventSystem;
pub use events::EventSystemBuilder;
pub use events::EventSystemUtils;
pub use events::FieldBlurHandler;
pub use events::FieldChangeHandler;
pub use events::FieldEvent;
pub use events::FieldEventType;
pub use events::FieldFocusHandler;
pub use events::FieldInputHandler;
pub use events::FormEvent;
pub use events::FormEventType;
pub use events::FormResetHandler;
pub use events::FormSubmitHandler;
pub use devtools::DebugUtilities;
pub use devtools::FieldChange;
pub use devtools::FieldState;
pub use devtools::FormSnapshot;
pub use devtools::FormStateInspector;
pub use devtools::FormStateSnapshot;
pub use devtools::IntegrityCheck;
pub use devtools::PerformanceMetrics;
pub use devtools::PerformanceMonitor;
pub use devtools::SnapshotDiff;

Modules§

components
Components module - UI components for the Leptos Forms library
core
devtools
DevTools module - Development tools for form debugging and monitoring
error
Error handling module - Comprehensive error management for Leptos Forms
events
Event handling system for Leptos Forms
examples
Examples module
hooks
Hooks module - React-like hooks for form management
utils
Utils module - Utility functions for form operations
validation
Validation module - Type-safe form validation for Leptos Forms