lib/voom/presenters/dsl/components/list.rb in voom-presenters-0.1.7 vs lib/voom/presenters/dsl/components/list.rb in voom-presenters-0.1.8

- old
+ new

@@ -1,31 +1,45 @@ require_relative 'lists/line' require_relative 'lists/separator' +require_relative 'lists/header' require_relative 'mixins/content' require_relative 'mixins/append' +require_relative 'mixins/attaches' module Voom module Presenters module DSL module Components class List < Base include Mixins::Content include Mixins::Append + include Mixins::Attaches - attr_reader :lines, :lines_only + attr_reader :lines, :lines_only, :selectable, :total_lines attr_accessor :components def initialize(**attribs_, &block) super(type: :list, context: context, **attribs_, &block) - @lines_only = attribs.delete(:lines_only)||false + @lines_only = attribs.delete(:lines_only) { false } + @selectable = attribs.delete(:selectable) { false } @lines = [] @components = [] + @total_lines = attribs.delete(:total_lines) || 0 + add_select_control!( attribs.fetch(:select_control_label) { 'Select All' } ) expand! end - + + def add_select_control!(text) + return unless @selectable && !@lines_only + @lines << Lists::Header.new(parent: self, + context: context, + total_lines: @total_lines, + checkbox: {text: text}) + end + def line(text=nil, **attribs, &block) - @lines << Lists::Line.new(parent:self, context: context, text: text, **attribs, &block) + @lines << Lists::Line.new(parent:self, context: context, text: text, selectable: selectable, **attribs, &block) end def separator(**attribs, &block) @lines << Lists::Separator.new(parent:self, context: context, **attribs, &block) end