Commit graph

50 commits

Author SHA1 Message Date
Maas Lalani 44906e23b9
Use Huh for Gum Choose (#521)
* feat: use huh for gum choose (select + multiselect)

Uses Select for gum choose and MultiSelect for gum choose --no-limit.

* chore: bump to 1.21
2024-03-28 14:22:03 -04:00
snan a11d1ff648
fix: Make --select-if-one print to stdout (#463)
For some reason it wasn't printing to stdout (and I could repro that
bug even on versions before I added the newline). It was only showing
up on other streams in the shell (error stream probably), not getting
sent into pipes.

I changed it to fmt.Println.

As for the ansi-stripping that was in `filter`, LMK if that's what you
prefer and I'll add it to `choose` too. I just wanted them to match.
2023-12-10 13:52:11 -05:00
snan d1145b4163
Add newline printing to --select-if-one (#459)
* Add newline printing to --select-if-one

This matches how choose works normally when there are more than
one option.

* Add newline printing to filter --select-if-one

To match how it works without --select-if-one.
2023-12-07 10:29:40 -05:00
Maas Lalani 01a66511a1
Hide Style Flags consistently (#457)
* refactor: hide style flags on error to not clutter usage

* docs(style): add comment regarding dynamically hiding flags
2023-11-28 14:17:57 -05:00
Kenny Parnell fb6849ca16
Add --select-if-one flag to choose/filter. (#398)
* Add `--select-if-one` flag to `choose`/`filter`.

* Remove accidental commit of other changes.

* fix: use o.Options

---------

Co-authored-by: Maas Lalani <maas@lalani.dev>
2023-11-28 12:34:50 -05:00
Maas Lalani a61f3bdc3f
fix(choose): --no-limit when 1 option available should still allow selection 2023-07-25 12:38:55 -04:00
Maas Lalani 6763de12e8
fix(choose): set initial page for selected 2023-07-25 12:34:00 -04:00
Maas Lalani 4b998515fd
feat(choose): use home/end to go to first/last option 2023-07-25 12:28:02 -04:00
Dieter Eickstaedt d1ad453ce6
feat: Timeout for Choose Command (#384) 2023-06-30 09:28:46 -04:00
Maas Lalani 92c890e717
fix: use lipgloss.Width instead of runewidth.StringWidth 2023-05-11 22:21:09 -04:00
Maas Lalani 6dbadf30b4 fix: strip ansi when stdout is not a tty 2023-04-06 17:36:29 -04:00
Mikael Fangel 97feb1b4d0
feat: adds headers for choose and filter (#307)
* added header to choose

* corrected mistake in envvar

* added header for filter

* simplified return logic for filter

* Update choose/options.go

* render the header before calculating the height

---------

Co-authored-by: Maas Lalani <maas@lalani.dev>
2023-03-14 15:58:48 -04:00
Maas Lalani 99e6625a39
fix: don't use deprecated pager functions 2023-03-03 13:15:50 -05:00
Maas Lalani e6de7749b1
fix: require choice for multiselect 2023-02-27 19:05:50 -05:00
MuXiu1997 877c475aa6
feat: add ctrl+@(ctrl+space) keybinding for choose and filter (#276)
* feat(filter): add ctrl+@ keybinding

* feat(choose): add ctrl+@ keybinding
2023-02-27 18:59:40 -05:00
Dhruv Manilawala 08ed3e2519
feat(choose): keep order of selected items (#182)
* feat(choose): keep order of selected items

* fix: KeepOrder -> Ordered

Co-authored-by: Maas Lalani <maas@lalani.dev>
2023-01-12 13:36:11 -05:00
Maas Lalani c8e6b4a9d5
fix: trim only trailing newline, space may be intentional 2022-12-13 15:41:01 -05:00
Maas Lalani 2d54d5394e feat(choose): add ctrl+j / ctrl+k keybindings 2022-12-13 14:41:29 -05:00
Kevin Pham 57c8c90bfd feat(choose): use tab to toggle selection
Resolves #200
2022-10-18 16:31:21 -04:00
Maas Lalani 2e4ddce3f7
fix: use program.Start 2022-10-17 20:23:59 -04:00
Dhruv Manilawala 2c66222fd8 fix(choose): error if selected options > limit
Rationale: If the number of selected options in `--selected` flag is
greater than the limit, the last `n` options are selected where `n` is
the limit.
2022-10-13 11:01:21 -04:00
Maas Lalani db75c218de
fix(choose): selected bug when limit == 1 2022-10-07 18:57:26 -04:00
Matt Farstad fa533691c4
feat(choose): Preselect the Selected Option When Limit is One (#166)
* Add startingIndex variable to choose model

* refactor: simplify code branches

Co-authored-by: Matthew Farstad <matthewwilliamfarstad@gmail.com>
Co-authored-by: Maas Lalani <maas@lalani.dev>
2022-10-02 12:51:35 -04:00
Maas Lalani c71c918c86
fix(choose): fix spacing for limit == 1 gum choose 2022-09-07 21:01:42 -04:00
Maas Lalani 21332c833a
feat(choose): Change default icons to match gum filter 2022-09-07 15:43:15 -04:00
Vaniel 76fc2f3d91 feat(choose): improving selected option parse 2022-09-06 16:13:53 -04:00
Vaniel 6abc94c87a feat(choose): add --selected option to choose command 2022-09-06 16:13:53 -04:00
fedeztk c9fe558a44
feat(filter): Multi-select (#130)
* feat(filter): added multiple selections

* docs(filter): corrected comments about multiSelection print

* feat(filter): fix proposed changes on naming variables and map type

* feat(filter): actually fix map types

* feat(filter): use `○` / `◉` as unselected / selected multi-select options

Co-authored-by: Maas Lalani <maas@lalani.dev>
2022-09-02 21:21:31 -04:00
Maas Lalani 81602545a6
refactor: don't trim newline if we are going to Println anyway
Just use `Print` with the newline
2022-09-02 14:37:26 -04:00
fedeztk 6b7f5ef77b
fix(choose): wrong "a" behavior (#137) 2022-08-30 12:24:25 -04:00
Maas Lalani 08346909a9
feat(choose): Wrap around choose list and g/G keybindings (#122)
* `G` goes to last element / `g` goes to first element
* Wrap around on first and last elements
2022-08-18 17:12:00 -04:00
Maas Lalani 1479184f3f fix: satisfy all linters 2022-08-05 02:33:40 -04:00
Maas Lalani 46ce0e4761 feat: allow configuration via environment variables 2022-08-04 11:22:42 -04:00
Maas Lalani bba0f3b1e0
refactor: remove unneeded set:"name=" 2022-08-03 12:28:02 -04:00
Maas Lalani 197e52a362
feat: escape as abort option (like ctrl+c) 2022-08-02 21:00:42 -04:00
Dolev Hadar fb4a9e6320 fix: skip if limit is <= 1 2022-08-02 13:57:55 -04:00
Dolev Hadar 0e33ee95e1 feat: select/deselect all items in gum choose with a/A 2022-08-02 13:57:55 -04:00
Maas Lalani 7eb1e7e322 fix(choose): Fix paging up bug
Fixes https://github.com/charmbracelet/gum/issues/82
2022-08-02 11:21:12 -04:00
Maas Lalani 5c6453b07c
fix(choose): ctrl+c aborts with exit 130 2022-07-30 22:12:59 -04:00
Maas Lalani c17387b919
fix(choose): Ctrl+C should not return any items if selected 2022-07-30 17:00:07 -04:00
Christian Muehlhaeuser 66993d8ef1
Add soft & hard linter configs & workflows (#44)
* chore: add linter configs & workflows

* fix: ignore certain linter warnings

* fix: mark errors as intentionally ignored

* fix: avoid unnecessary conversion

* fix: handle template/renderer errors

* fix: mark intentionally unused code
2022-07-30 12:32:59 -04:00
Ayman Bagabas eaef49cdbe
feat: autocompletion 2022-07-25 13:03:18 -04:00
Maas Lalani 5a1195dda5
fix: choose prefixes and pink gum text 2022-07-14 10:37:22 -04:00
Maas Lalani 4d98a8fa6f
feat(choose): Add paginator to chooser
Display paginator only if number of options > height specified
2022-07-13 15:49:15 -04:00
Maas Lalani 54f85439fa
feat(choose): --no-limit flag alias
Adds a --no-limit flag as an alias to set the limit to the number of options available.
2022-07-13 12:10:38 -04:00
Maas Lalani 01404ef586
feat(choose): Ability to choose multiple choices --limit
This commit introduces the ability to choose multiple options from the list of choices in `gum choose` by adding a `--limit` flag.
2022-07-13 11:45:52 -04:00
Maas Lalani 5de4df66d2
refactor: add package comments describing behavior 2022-07-13 09:55:36 -04:00
Maas Lalani 7190822247
refactor(kong): Implement Run(...) error interface
Instead of needing to run the commands manually in main.go, we can implement the `Run(...) error` method to satisfy the command interface so that `kong` can Run our commands for us.
2022-07-12 22:33:52 -04:00
Maas Lalani 02e925ea57
refactor: use embedded style struct for all lipgloss styling
This commit uses the embedded style struct for styling in all components. The most notable example is `gum write` where there are many styles that are used and composed for each component of the command.
2022-07-12 16:08:33 -04:00
Maas Lalani 46ddc28ae5
feat: gum choose, pick from a list of choices
gum choose allows the user to be prompted for a choice from a list of choices.

For example, let's ask the user to pick a card from a deck.
gum choose --height 15 {Ace,King,Queen,Jack,Ten,Nine,Eight,Seven,Six,Five,Four,Three,Two}" of "{Spades,Hearts,Clubs,Diamonds}
2022-07-11 16:26:23 -04:00