This commit is contained in:
filipriec
2025-03-28 20:48:06 +01:00
parent f21953147b
commit 4f8f2f4a40
2 changed files with 69 additions and 55 deletions

View File

@@ -1,4 +1,4 @@
// src/components/handlers/form.rs
// src/components/form/form.rs
use ratatui::{
widgets::{Paragraph, Block, Borders},
layout::{Layout, Constraint, Direction, Rect, Margin, Alignment},
@@ -6,13 +6,14 @@ use ratatui::{
Frame,
};
use crate::config::colors::themes::Theme;
use crate::state::pages::form::FormState;
use crate::state::canvas_state::CanvasState;
use crate::components::handlers::canvas::render_canvas;
// Original form renderer (keep for backward compatibility)
pub fn render_form(
f: &mut Frame,
area: Rect,
form_state: &FormState,
form_state: &impl CanvasState,
fields: &[&str],
current_field: &usize,
inputs: &[&String],
@@ -64,3 +65,47 @@ pub fn render_form(
is_edit_mode,
);
}
// New generic form renderer
pub fn render_generic_form(
f: &mut Frame,
area: Rect,
title: &str,
state: &impl CanvasState,
fields: &[&str],
theme: &Theme,
is_edit_mode: bool,
) {
// Create form card
let form_card = Block::default()
.borders(Borders::ALL)
.border_style(Style::default().fg(theme.border))
.title(format!(" {} ", title))
.style(Style::default().bg(theme.bg).fg(theme.fg));
f.render_widget(form_card, area);
// Define inner area
let inner_area = area.inner(Margin {
horizontal: 1,
vertical: 1,
});
// Create main layout
let main_layout = Layout::default()
.direction(Direction::Vertical)
.constraints([Constraint::Min(1)])
.split(inner_area);
// Delegate to render_canvas
render_canvas(
f,
main_layout[0],
state,
fields,
&state.current_field(),
&state.inputs(),
theme,
is_edit_mode,
);
}