gpui-component/crates/ui/src/story/input_story.rs
2024-06-26 13:43:28 +08:00

59 lines
1.7 KiB
Rust

use gpui::{
div, ClickEvent, IntoElement, ParentElement as _, Render, Styled as _, View, ViewContext,
VisualContext, WindowContext,
};
use crate::text_field::TextField;
use super::story_case;
pub struct InputStory {
input1: View<TextField>,
input2: View<TextField>,
mash_input: View<TextField>,
disabled_input: View<TextField>,
}
impl InputStory {
pub(crate) fn new(cx: &mut WindowContext) -> Self {
let input1 = cx.new_view(|cx| TextField::new(cx).set_text("Hello 世界", cx));
let mask_input = cx.new_view(|cx| {
TextField::new(cx)
.set_masked(true, cx)
.set_text("this-is-password", cx)
});
Self {
input1,
input2: cx.new_view(|cx| TextField::new(cx).set_placeholder("Enter text here...", cx)),
mash_input: mask_input,
disabled_input: cx.new_view(|cx| {
TextField::new(cx)
.set_text("This is disabled input", cx)
.set_disabled(true, cx)
}),
}
}
#[allow(unused)]
fn on_change(ev: &ClickEvent, cx: &mut WindowContext) {
println!("Input changed: {:?}", ev);
}
}
impl Render for InputStory {
fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
story_case("Input", "A text input field.").child(
div()
.flex()
.flex_col()
.justify_start()
.gap_3()
.child(self.input1.clone())
.child(self.input2.clone())
.child(self.disabled_input.clone())
.child(self.mash_input.clone()),
)
}
}