implementation of canvas for multiple pages step 1
This commit is contained in:
44
client/src/state/canvas_state.rs
Normal file
44
client/src/state/canvas_state.rs
Normal file
@@ -0,0 +1,44 @@
|
||||
// src/state/canvas_state.rs
|
||||
|
||||
use crate::state::pages::form::FormState;
|
||||
|
||||
pub trait CanvasState {
|
||||
fn current_field(&self) -> usize;
|
||||
fn current_cursor_pos(&self) -> usize;
|
||||
fn has_unsaved_changes(&self) -> bool;
|
||||
fn inputs(&self) -> Vec<&String>;
|
||||
fn get_current_input(&self) -> &str;
|
||||
fn get_current_input_mut(&mut self) -> &mut String;
|
||||
}
|
||||
|
||||
// Implement for FormState (keep existing form.rs code and add this)
|
||||
impl CanvasState for FormState {
|
||||
fn current_field(&self) -> usize {
|
||||
self.current_field
|
||||
}
|
||||
|
||||
fn current_cursor_pos(&self) -> usize {
|
||||
self.current_cursor_pos
|
||||
}
|
||||
|
||||
fn has_unsaved_changes(&self) -> bool {
|
||||
self.has_unsaved_changes
|
||||
}
|
||||
|
||||
fn inputs(&self) -> Vec<&String> {
|
||||
self.values.iter().collect()
|
||||
}
|
||||
|
||||
fn get_current_input(&self) -> &str {
|
||||
self.values
|
||||
.get(self.current_field)
|
||||
.map(|s| s.as_str())
|
||||
.unwrap_or("")
|
||||
}
|
||||
|
||||
fn get_current_input_mut(&mut self) -> &mut String {
|
||||
self.values
|
||||
.get_mut(self.current_field)
|
||||
.expect("Invalid current_field index")
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// src/state/mod.rs
|
||||
pub mod state;
|
||||
pub mod pages;
|
||||
pub mod canvas_state;
|
||||
|
||||
Reference in New Issue
Block a user