orbital_base_components/collection/state/
keyboard.rs1use leptos::ev;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum CollectionKeyboardAction {
5 None,
6 Next,
7 Previous,
8 Expand,
9 Collapse,
10 Select,
11 Home,
12 End,
13 TypeAhead,
14}
15
16pub fn collection_keyboard_action(event: &ev::KeyboardEvent) -> CollectionKeyboardAction {
17 let key = event.key();
18 match key.as_str() {
19 "ArrowDown" => CollectionKeyboardAction::Next,
20 "ArrowUp" => CollectionKeyboardAction::Previous,
21 "ArrowRight" => CollectionKeyboardAction::Expand,
22 "ArrowLeft" => CollectionKeyboardAction::Collapse,
23 "Enter" | " " => CollectionKeyboardAction::Select,
24 "Home" => CollectionKeyboardAction::Home,
25 "End" => CollectionKeyboardAction::End,
26 text if text.len() == 1 && !event.ctrl_key() && !event.meta_key() && !event.alt_key() => {
27 CollectionKeyboardAction::TypeAhead
28 }
29 _ => CollectionKeyboardAction::None,
30 }
31}