Add additional cursors to gpui2
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
This commit is contained in:
parent
0af0c5549c
commit
80ae640060
6 changed files with 276 additions and 8 deletions
|
@ -1,4 +1,5 @@
|
|||
mod auto_height_editor;
|
||||
mod cursor;
|
||||
mod focus;
|
||||
mod kitchen_sink;
|
||||
mod picker;
|
||||
|
@ -7,6 +8,7 @@ mod text;
|
|||
mod z_index;
|
||||
|
||||
pub use auto_height_editor::*;
|
||||
pub use cursor::*;
|
||||
pub use focus::*;
|
||||
pub use kitchen_sink::*;
|
||||
pub use picker::*;
|
||||
|
|
112
crates/storybook2/src/stories/cursor.rs
Normal file
112
crates/storybook2/src/stories/cursor.rs
Normal file
|
@ -0,0 +1,112 @@
|
|||
use gpui::{Div, Render, Stateful};
|
||||
use story::Story;
|
||||
use ui::prelude::*;
|
||||
|
||||
pub struct CursorStory;
|
||||
|
||||
impl Render for CursorStory {
|
||||
type Element = Div;
|
||||
|
||||
fn render(&mut self, _cx: &mut ViewContext<Self>) -> Self::Element {
|
||||
let all_cursors: [(&str, Box<dyn Fn(Stateful<Div>) -> Stateful<Div>>); 19] = [
|
||||
(
|
||||
"cursor_default",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_default()),
|
||||
),
|
||||
(
|
||||
"cursor_pointer",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_pointer()),
|
||||
),
|
||||
(
|
||||
"cursor_text",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_text()),
|
||||
),
|
||||
(
|
||||
"cursor_move",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_move()),
|
||||
),
|
||||
(
|
||||
"cursor_not_allowed",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_not_allowed()),
|
||||
),
|
||||
(
|
||||
"cursor_context_menu",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_context_menu()),
|
||||
),
|
||||
(
|
||||
"cursor_crosshair",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_crosshair()),
|
||||
),
|
||||
(
|
||||
"cursor_vertical_text",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_vertical_text()),
|
||||
),
|
||||
(
|
||||
"cursor_alias",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_alias()),
|
||||
),
|
||||
(
|
||||
"cursor_copy",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_copy()),
|
||||
),
|
||||
(
|
||||
"cursor_no_drop",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_no_drop()),
|
||||
),
|
||||
(
|
||||
"cursor_grab",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_grab()),
|
||||
),
|
||||
(
|
||||
"cursor_grabbing",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_grabbing()),
|
||||
),
|
||||
(
|
||||
"cursor_col_resize",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_col_resize()),
|
||||
),
|
||||
(
|
||||
"cursor_row_resize",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_row_resize()),
|
||||
),
|
||||
(
|
||||
"cursor_n_resize",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_n_resize()),
|
||||
),
|
||||
(
|
||||
"cursor_e_resize",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_e_resize()),
|
||||
),
|
||||
(
|
||||
"cursor_s_resize",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_s_resize()),
|
||||
),
|
||||
(
|
||||
"cursor_w_resize",
|
||||
Box::new(|el: Stateful<Div>| el.cursor_w_resize()),
|
||||
),
|
||||
];
|
||||
|
||||
Story::container()
|
||||
.flex()
|
||||
.gap_1()
|
||||
.child(Story::title("cursor"))
|
||||
.children(all_cursors.map(|(name, apply_cursor)| {
|
||||
div().gap_1().flex().text_color(gpui::white()).child(
|
||||
div()
|
||||
.flex()
|
||||
.items_center()
|
||||
.justify_center()
|
||||
.id(name)
|
||||
.map(apply_cursor)
|
||||
.w_64()
|
||||
.h_8()
|
||||
.bg(gpui::red())
|
||||
.hover(|style| style.bg(gpui::blue()))
|
||||
.active(|style| style.bg(gpui::green()))
|
||||
.text_sm()
|
||||
.child(Story::label(name)),
|
||||
)
|
||||
}))
|
||||
}
|
||||
}
|
|
@ -17,6 +17,7 @@ pub enum ComponentStory {
|
|||
Button,
|
||||
Checkbox,
|
||||
ContextMenu,
|
||||
Cursor,
|
||||
Disclosure,
|
||||
Focus,
|
||||
Icon,
|
||||
|
@ -40,6 +41,7 @@ impl ComponentStory {
|
|||
Self::Button => cx.build_view(|_| ui::ButtonStory).into(),
|
||||
Self::Checkbox => cx.build_view(|_| ui::CheckboxStory).into(),
|
||||
Self::ContextMenu => cx.build_view(|_| ui::ContextMenuStory).into(),
|
||||
Self::Cursor => cx.build_view(|_| crate::stories::CursorStory).into(),
|
||||
Self::Disclosure => cx.build_view(|_| ui::DisclosureStory).into(),
|
||||
Self::Focus => FocusStory::view(cx).into(),
|
||||
Self::Icon => cx.build_view(|_| ui::IconStory).into(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue