use hydroxy_leptos::inline_edit::InlineEdit;
use leptos::prelude::*;
pub fn demo() -> AnyView {
let (name, set_name) = signal(String::from("Q3 customer interviews"));
view! {
<div style="display: grid; gap: var(--space-6); max-width: 420px;">
// Controlled: the owner keeps the committed value.
<div style="display: grid; gap: var(--space-2);">
<InlineEdit label="Project name" value=name on_change=move |v| set_name.set(v) />
<p style="margin: 0; font: var(--text-xs); color: var(--text-3);">"Saved as: " {name}</p>
</div>
// Uncontrolled, with a placeholder for the empty state.
<InlineEdit label="Description" placeholder="Add a description" />
// A textarea. Enter adds a line; Ctrl or ⌘ + Enter commits.
<InlineEdit
label="Notes"
multiline=true
default_value="Interviews run Monday to Thursday.\nSynthesis on Friday."
/>
<InlineEdit label="Locked title" default_value="Archived project" disabled=true />
</div>
}
.into_any()
}
use dioxus::prelude::*;
use hydroxy_dioxus::inline_edit::InlineEdit;
#[component]
pub fn InlineEditDemo() -> Element {
let mut name = use_signal(|| String::from("Q3 customer interviews"));
rsx! {
div { style: "display: grid; gap: var(--space-6); max-width: 420px;",
div { style: "display: grid; gap: var(--space-2);",
InlineEdit {
label: "Project name",
value: Some(name()),
on_change: move |v| name.set(v),
}
p { style: "margin: 0; font: var(--text-xs); color: var(--text-3);", "Saved as: {name}" }
}
InlineEdit { label: "Description", placeholder: "Add a description" }
InlineEdit {
label: "Notes",
multiline: true,
default_value: "Interviews run Monday to Thursday.\nSynthesis on Friday.",
}
InlineEdit { label: "Locked title", default_value: "Archived project", disabled: true }
}
}
}