Class: Bootstrap::Component::Carousel

Inherits:
Bootstrap::Component show all
Defined in:
mod/bootstrap/lib/bootstrap/component/carousel.rb

Instance Method Summary collapse

Methods inherited from Bootstrap::Component

#append, def_div_method, def_simple_tag_method, def_tag_method, #initialize, #insert, #prepend, #render, render, #wrap

Methods included from Delegate

#method_missing, #respond_to_missing?

Methods included from BasicTags

#html

Constructor Details

This class inherits a constructor from Bootstrap::Component

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Bootstrap::Delegate

Instance Method Details



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 8

def carousel id, active_index, &block
  @id = id
  @active_item_index = active_index
  @items = []
  instance_exec &block

  @html.div class: "carousel slide", id: id, "data-ride" => "carousel" do
    indicators
    items
    control_prev
    control_next
  end
end

#control_nextObject



47
48
49
50
51
52
53
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 47

def control_next
  @html.a class: "carousel-control-next", href: "##{@id}", role: "button",
          "data-slide": "next"  do
    @html.span class: "carousel-control-next-icon", "aria-hidden" => "true"
    @html.span "Next", class: "sr-only"
  end
end

#control_prevObject



39
40
41
42
43
44
45
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 39

def control_prev
  @html.a class: "carousel-control-prev", href: "##{@id}", role: "button",
          "data-slide" => "prev" do
    @html.span class: "carousel-control-prev-icon", "aria-hidden" => "true"
    @html.span "Previous", class: "sr-only"
  end
end

#indicator(index) ⇒ Object



61
62
63
64
65
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 61

def indicator index
  html_opts = { "data-slide-to" => index, "data-target": "##{@id}" }
  add_class html_opts, "active" if index == @active_item_index
  @html.li html_opts
end

#indicatorsObject



55
56
57
58
59
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 55

def indicators
  @html.ol class: "carousel-indicators" do
    @items.size.times { |i| indicator i }
  end
end

#item(content = nil, &block) ⇒ Object



22
23
24
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 22

def item content=nil, &block
  @items << (content || block)
end

#itemsObject



26
27
28
29
30
31
32
33
34
35
36
37
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 26

def items
  @html.div class: "carousel-inner", role: "listbox" do
    @items.each_with_index do |item, index|
      html_opts = { class: "carousel-item" }
      add_class html_opts, "active" if index == @active_item_index
      @html.div html_opts do
        item = item.call if item.respond_to?(:call)
        @html << item if item.is_a?(String)
      end
    end
  end
end

#render_contentObject



4
5
6
# File 'mod/bootstrap/lib/bootstrap/component/carousel.rb', line 4

def render_content
  carousel *@args, &@build_block
end