login page using canvas for forms

This commit is contained in:
filipriec
2025-08-28 21:07:23 +02:00
parent 6e221ef8c1
commit 19a9bab8c2
8 changed files with 195 additions and 101 deletions

View File

@@ -10,6 +10,7 @@ use crate::modes::handlers::event::{EventHandler, EventOutcome};
use crate::modes::handlers::mode_manager::{AppMode, ModeManager};
use crate::state::pages::auth::AuthState;
use crate::pages::register::RegisterState;
use crate::pages::login::LoginFormState;
use crate::pages::admin::AdminState;
use crate::pages::admin::AdminFocus;
use crate::pages::intro::IntroState;
@@ -28,6 +29,7 @@ use crate::pages::register::RegisterResult;
use crate::ui::handlers::context::DialogPurpose;
use crate::utils::columns::filter_user_columns;
use canvas::keymap::KeyEventOutcome;
use canvas::FormEditor;
use anyhow::{Context, Result};
use crossterm::cursor::{SetCursorStyle, MoveTo};
use crossterm::event as crossterm_event;
@@ -66,7 +68,7 @@ pub async fn run_ui() -> Result<()> {
let event_reader = EventReader::new();
let mut auth_state = AuthState::default();
let mut login_state = LoginState::default();
let mut login_state = LoginFormState::new();
let mut register_state = RegisterState::default();
let mut intro_state = IntroState::default();
let mut admin_state = AdminState::default();
@@ -350,7 +352,9 @@ pub async fn run_ui() -> Result<()> {
// Navigate with the up-to-date state
router.navigate(Page::Intro(intro_state.clone()));
}
AppView::Login => router.navigate(Page::Login(login_state.clone())),
AppView::Login => {
router.navigate(Page::Login(LoginFormState::new()))
}
AppView::Register => router.navigate(Page::Register(register_state.clone())),
AppView::Admin => {
if let Page::Admin(current) = &router.current {
@@ -619,8 +623,7 @@ pub async fn run_ui() -> Result<()> {
let current_input = state.get_current_input();
let max_cursor_pos =
if !current_input.is_empty() { current_input.len() - 1 } else { 0 };
state.current_cursor_pos =
event_handler.ideal_cursor_column.min(max_cursor_pos);
state.set_current_cursor_pos(event_handler.ideal_cursor_column.min(max_cursor_pos));
}
}