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