Card
The Bootstrap
card
component, implemented in Ruby. Use it like any other matestack component in your apps, pages and components. It offers customizable options to simply achieve what is possible in bootstrap with this component. See below for more information about the possible options.Returns a bootstrap card containing text or content specified by a block. Also the card is customizable with the following options.
Optional options
header
- Expects a string or a hash withclass
andtext
as possible keys, that should go inside the header componentfooter
- Expects a string or a hash withclass
andtext
as possible keys, that should go inside the footer componentbody
- Expects a string or a hash withclass
andtext
as possible keys, with the text that should go inside the card-body componenttitle
- additional to the body text, you can add a string as title with pre-defined heading size (h5
)subtitle
- additional to the body text, you can add a string as subtitle with pre-defined heading size (h6
)img_path
- Insert an image component into the card body by giving the image pathimg_pos
- Expects:bottom
or:top
. This parameter will set the placement of the image in the bottom of the card component. By default it's set as top imagealt_text
- Expects a string for image's alt-textslots
- Using slots to yield custom components in card components forheader
,footer
orbody
- Html attributes - all w3c confirm html attributes for div's can be set via options and will be added to the surrounding card div.
bs_card img_path: image_url("...png"),
title: "Card title", body: "Some quick example text",
header: "Card Header", footer: "Card Footer"
returns
<div class="card">
<div class="card-header">
Card Header
</div>
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text</p>
</div>
<div class="card-footer">
Card Footer
</div>
</div>
bs_card body: "Some quick example text",
header: { text: "Card header hash", class: "text-center h3" }
returns
<div class="card">
<div class="card-header text-center h3">
Card header hash
</div>
<div class="card-body">
<p class="card-text">Some quick example text</p>
</div>
</div>
bs_card slots: { body: method(:my_card_body) }
def my_card_body
ul class: 'list-group list-group-flush' do
li class: "list-group-item" do plain "Item 1" end
li class: "list-group-item" do plain "Item 2" end
li class: "list-group-item" do plain "Item 3" end
end
a "Card link", class: 'btn btn-link', path: "#"
a "Another link", class: 'btn btn-link', path: "#"
end
returns
<div class="card">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text</p>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Item 1</li>
<li class="list-group-item">Item 2</li>
<li class="list-group-item">Item 3</li>
</ul>
<div class="card-body">
<a href="#" class="card-link">Card link</a>
<a href="#" class="card-link">Another link</a>
</div>
</div>
bs_card body: "With supporting text below.", title: "Special title treatment",
slots: { header: method(:my_card_header), footer: method(:my_card_footer) }, class: "text-center"
def my_card_header
ul class: "nav nav-tabs card-header-tabs" do
li class: "nav-item" do
a "Tab 1", class: "nav-link", path: "#"
end
li class: "nav-item" do
a "Tab 2", class: "nav-link", path: "#"
end
end
end
def my_card_footer
plain "2 days ago"
end
returns
<div class="card text-center">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<a class="nav-link" href="#">Tab 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Tab 2</a>
</li>
</ul>
</div>
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
</div>
<div class="card-footer">
2 days ago
</div>
</div>
Point of attention: Custom Component will be yield outside of the
card-body
tag.bs_card title: "Card title", body: "Some quick example text" do
div class: "p-3" do
bs_btn "Card Button"
bs_btn "Another Button"
end
end
returns
<div class="card">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text</p>
</div>
<div class="p-3">
<button type="button" class="btn btn-primary">Card Button</button>
<button type="button" class="btn btn-primary">Another Button</button>
</div>
</div>
Last modified 1yr ago