step4
This commit is contained in:
@@ -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,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user