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

@@ -16,17 +16,20 @@ use canvas::{
render_suggestions_dropdown,
DefaultCanvasTheme,
};
use crate::pages::login::LoginState;
use crate::pages::login::LoginFormState;
use crate::dialog;
pub fn render_login(
f: &mut Frame,
area: Rect,
theme: &Theme,
// FIX: take &LoginState (reference), not owned
login_state: &LoginState,
login_page: &LoginFormState,
app_state: &AppState,
) {
let login_state = &login_page.state;
let editor = &login_page.editor;
// Main container
let block = Block::default()
.borders(Borders::ALL)
@@ -52,14 +55,10 @@ pub fn render_login(
])
.split(inner_area);
// Wrap LoginState in FormEditor (no clone needed)
let editor = FormEditor::new(login_state.clone());
// Use DefaultCanvasTheme instead of app Theme
let input_rect = render_canvas(
f,
chunks[0],
&editor,
editor,
&DefaultCanvasTheme,
);
@@ -134,14 +133,14 @@ pub fn render_login(
);
// --- SUGGESTIONS DROPDOWN (if active) ---
if editor.mode() == canvas::AppMode::Edit {
if editor.mode() == canvas::AppMode::Edit {
if let Some(input_rect) = input_rect {
render_suggestions_dropdown(
f,
f.area(),
chunks[0],
input_rect,
&DefaultCanvasTheme,
&editor, // FIX: pass &editor
editor,
);
}
}