feat(Item_list): update ItemsList component to include delete button for property input fields

This commit is contained in:
ryan 2025-01-28 02:42:16 +03:00
parent c38f19d76c
commit afa3bd3ece

View file

@ -608,33 +608,48 @@ pub fn ItemsList(
custom_props.into_iter().map(move |property| { custom_props.into_iter().map(move |property| {
let property_clone = property.clone(); let property_clone = property.clone();
let property_label = property_labels.get().get(&property_clone).cloned().unwrap_or_else(|| property_clone.clone()); let property_label = property_labels.get().get(&property_clone).cloned().unwrap_or_else(|| property_clone.clone());
let property_clone_for_button = property_clone.clone();
let property_clone_for_cells = property_clone.clone();
view! { view! {
<tr> <tr>
<td>{ property_label }</td> <td>
{move || { { property_label }
let property_clone = property_clone.clone(); // Clone `property_clone` again for the inner closure <button class="delete-property" on:click=move |_| {
items.get().iter().enumerate().map(move |(index, item)| { log!("Deleting property: {}", property_clone_for_button);
let property_clone_for_closure = property_clone.clone(); set_custom_properties.update(|props| {
view! { props.retain(|p| p != &property_clone_for_button);
<td> });
<EditableCell set_selected_properties.update(|selected| {
value=item.custom_properties.get(&property_clone).cloned().unwrap_or_default() selected.remove(&property_clone_for_button);
on_input=move |value| update_item(index, &property_clone_for_closure, value) });
key=Arc::new(format!("custom-{}-{}", property_clone, index)) set_items.update(|items| {
focused_cell=focused_cell for item in items {
set_focused_cell=set_focused_cell.clone() item.custom_properties.remove(&property_clone_for_button);
on_focus=Some(Callback::new(move |_| { }
log!("Custom property input focused"); });
})) }>{ "Delete" }</button>
on_blur=Some(Callback::new(move |_| { </td>
log!("Custom property input blurred"); {items.get().iter().enumerate().map(move |(index, item)| {
})) let property_clone_for_closure = property_clone_for_cells.clone();
input_type=InputType::TextArea view! {
/> <td>
</td> <EditableCell
} value=item.custom_properties.get(&property_clone_for_closure).cloned().unwrap_or_default()
}).collect::<Vec<_>>() on_input=move |value| update_item(index, &property_clone_for_closure, value)
}} key=Arc::new(format!("custom-{}-{}", property_clone_for_cells, index))
focused_cell=focused_cell
set_focused_cell=set_focused_cell.clone()
on_focus=Some(Callback::new(move |_| {
log!("Custom property input focused");
}))
on_blur=Some(Callback::new(move |_| {
log!("Custom property input blurred");
}))
input_type=InputType::TextArea
/>
</td>
}
}).collect::<Vec<_>>()}
</tr> </tr>
} }
}).collect::<Vec<_>>() }).collect::<Vec<_>>()