class TTY::Prompt::MultiList
A class responsible for rendering multi select list menu. Used by {Prompt} to display interactive choice menu.
@api private
Constants
- HELP
Public Class Methods
new(prompt, options)
click to toggle source
Create instance of TTY::Prompt::MultiList
menu.
@param [Prompt] :prompt @param [Hash] options
@api public
Calls superclass method
TTY::Prompt::List::new
# File lib/tty/prompt/multi_list.rb, line 20 def initialize(prompt, options) super @selected = [] @help = options[:help] @default = Array(options[:default]) @echo = options.fetch(:echo, true) end
Public Instance Methods
keyspace(*)
click to toggle source
Callback fired when space key is pressed
@api private
# File lib/tty/prompt/multi_list.rb, line 31 def keyspace(*) active_choice = @choices[@active - 1] if @selected.include?(active_choice) @selected.delete(active_choice) else @selected << active_choice end end
Private Instance Methods
answer()
click to toggle source
All values for the choices selected
@return [Array]
@api private
# File lib/tty/prompt/multi_list.rb, line 79 def answer @selected.map(&:value) end
render_header()
click to toggle source
Render initial help text and then currently selected choices
@api private
# File lib/tty/prompt/multi_list.rb, line 63 def render_header instructions = @prompt.decorate(help, :bright_black) if @done && @echo @prompt.decorate(selected_names, @active_color) elsif @selected.size.nonzero? && @echo selected_names + (@first_render ? " #{instructions}" : '') elsif @first_render instructions end end
selected_names()
click to toggle source
Generate selected items names
@return [String]
@api private
# File lib/tty/prompt/multi_list.rb, line 56 def selected_names @selected.map(&:name).join(', ') end
setup_defaults()
click to toggle source
Setup default options and active selection
@api private
# File lib/tty/prompt/multi_list.rb, line 45 def setup_defaults validate_defaults @selected = @choices.values_at(*@default.map { |d| d - 1 }) @active = @default.last unless @selected.empty? end