less/
less.rs

1use may_clack::{cancel, error::ClackError, intro, multi_select, outro, select};
2use owo_colors::OwoColorize;
3
4/// Activating "less" mode activates a pager.
5///
6/// With the value given to the `.less(val: i32)` function,
7/// you can decide the amount of options per page.
8fn main() -> Result<(), ClackError> {
9	println!();
10	intro!(" less ".reversed());
11
12	let select_less = select("less")
13		.option("val 1", "value 1")
14		.option("val 2", "value 2")
15		.option_hint("val 3", "value 3", "hint")
16		.option("val 4", "value 4")
17		.option("val 5", "value 5")
18		.less_amt(3)
19		.cancel(do_cancel)
20		.interact()?;
21
22	let multi_less_noop = multi_select("less")
23		.option("val 1", "value 1")
24		.option("val 2", "value 2")
25		.option_hint("val 3", "value 3", "hint")
26		.less_amt(5)
27		.cancel(do_cancel)
28		.interact()?;
29
30	let multi_less = multi_select("less")
31		.option("val 1", "value 1")
32		.option("val 2", "value 2")
33		.option_hint("val 3", "value 3", "hint")
34		.option("val 4", "value 4")
35		.option("val 5", "value 5")
36		.less()
37		.cancel(do_cancel)
38		.interact()?;
39
40	let mut page_up_down = select("page up / down");
41	page_up_down.less_max(25);
42	page_up_down.cancel(do_cancel);
43
44	for i in 0..100 {
45		page_up_down.option(i, i);
46	}
47
48	let page_up_down = page_up_down.interact()?;
49
50	outro!();
51
52	println!("page_up_down {:?}", page_up_down);
53	println!("select_less {:?}", select_less);
54	println!("multi_less_noop {:?}", multi_less_noop);
55	println!("multi_less {:?}", multi_less);
56
57	Ok(())
58}
59
60fn do_cancel() {
61	cancel!("demo cancelled");
62	panic!("demo cancelled");
63}