bootstrap4_rails_components 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +362 -0
- data/Rakefile +23 -0
- data/app/assets/config/bootstrap4_rails_components_manifest.js +3 -0
- data/app/assets/javascripts/bootstrap4_rails_components/application.js +8 -0
- data/app/assets/javascripts/bootstrap4_rails_components/vendor/tooltips.js +42 -0
- data/app/assets/stylesheets/bootstrap4_rails_components/bootstrap/application.scss +2 -0
- data/app/controllers/bootstrap4_rails_components/application_controller.rb +5 -0
- data/app/helpers/bootstrap4_rails_components/application_helper.rb +38 -0
- data/app/models/bootstrap4_rails_components/application_record.rb +5 -0
- data/config/initializers/web_app_manifest.rb +3 -0
- data/config/locales/en.yml +63 -0
- data/config/routes.rb +2 -0
- data/config/spring.rb +1 -0
- data/lib/bootstrap4_rails_components.rb +75 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/alert.rb +52 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/badge.rb +39 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/base.rb +151 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/breadcrumb.rb +23 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/breadcrumb_item.rb +28 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/button.rb +74 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/button_group.rb +36 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/button_toolbar.rb +21 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/card.rb +81 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/card_body.rb +15 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/card_footer.rb +15 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/card_header.rb +35 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/card_image.rb +33 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/card_image_overlay.rb +46 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/carousel.rb +57 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/carousel_caption.rb +34 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/carousel_control.rb +73 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/carousel_indicators.rb +54 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/carousel_item.rb +49 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/collapse.rb +32 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/dropdown.rb +51 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/dropdown_divider.rb +19 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/dropdown_header.rb +23 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/dropdown_item.rb +41 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/dropdown_menu.rb +32 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/dropdown_toggle.rb +82 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/embed.rb +80 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/form.rb +13 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/input_group.rb +13 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/jumbotron.rb +13 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/list_group.rb +39 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/list_group_item.rb +69 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/media.rb +15 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/media_body.rb +15 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/media_object.rb +23 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/modal.rb +66 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/modal_body.rb +16 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/modal_footer.rb +16 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/modal_header.rb +37 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/nav.rb +71 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/nav_item.rb +103 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/nav_link.rb +62 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/navbar.rb +97 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/navbar_brand.rb +25 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/navbar_nav.rb +48 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/navbar_text.rb +21 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/navbar_toggler.rb +38 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/page_item.rb +66 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/pagination.rb +30 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/popover.rb +12 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/progress.rb +44 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/progress_bar.rb +51 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/tab_content.rb +15 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/tab_pane.rb +49 -0
- data/lib/bootstrap4_rails_components/bootstrap/components/table.rb +17 -0
- data/lib/bootstrap4_rails_components/bootstrap/readme.md +1 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/activatable.rb +32 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/alignable.rb +33 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/collapse_toggleable.rb +35 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/collapsible.rb +42 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/disableable.rb +49 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/dismissible.rb +24 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/dropdown_directionable.rb +40 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/headable.rb +20 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/modalable.rb +104 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/progressable.rb +42 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/remotable.rb +24 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/sizable.rb +40 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/themeable.rb +51 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/titleable.rb +20 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/tooltipable.rb +95 -0
- data/lib/bootstrap4_rails_components/bootstrap/utilities/wrappable.rb +48 -0
- data/lib/bootstrap4_rails_components/engine.rb +38 -0
- data/lib/bootstrap4_rails_components/ui/base.rb +42 -0
- data/lib/bootstrap4_rails_components/ui/bootstrap.rb +44 -0
- data/lib/bootstrap4_rails_components/ui/utilities.rb +10 -0
- data/lib/bootstrap4_rails_components/ui/utilities/initializer.rb +88 -0
- data/lib/bootstrap4_rails_components/version.rb +5 -0
- metadata +372 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Breadcrumb Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/breadcrumb/
|
|
8
|
+
class Breadcrumb < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:breadcrumb
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def render
|
|
14
|
+
content_tag(:nav, aria: { label: 'breadcrumb' }) do
|
|
15
|
+
content_tag(:ol, html_options) do
|
|
16
|
+
(block_given? ? yield : body)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Breadcrumb Item
|
|
7
|
+
# Subcomponent of Breadcrumb
|
|
8
|
+
# https://getbootstrap.com/docs/4.1/components/breadcrumb/
|
|
9
|
+
class BreadcrumbItem < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
10
|
+
include Bootstrap::Utilities::Activatable
|
|
11
|
+
|
|
12
|
+
def component_family
|
|
13
|
+
:breadcrumb
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def base_element
|
|
19
|
+
:li
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def assistive_html_attributes
|
|
23
|
+
active ? super.merge!(aria: { current: 'page' }) : super
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Button Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/buttons/
|
|
8
|
+
class Button < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap::Utilities::Activatable
|
|
10
|
+
include Bootstrap::Utilities::CollapseToggleable
|
|
11
|
+
include Bootstrap::Utilities::Disableable
|
|
12
|
+
include Bootstrap::Utilities::Remotable
|
|
13
|
+
include Bootstrap::Utilities::Sizable
|
|
14
|
+
include Bootstrap::Utilities::Modalable
|
|
15
|
+
include Bootstrap::Utilities::Themeable
|
|
16
|
+
include Bootstrap::Utilities::Tooltipable
|
|
17
|
+
include Bootstrap::Utilities::Wrappable
|
|
18
|
+
|
|
19
|
+
def render
|
|
20
|
+
if tooltip && disabled
|
|
21
|
+
content_tag(:span, disabled_component_tooltip_wrapper_html_options) do
|
|
22
|
+
content_tag(as, html_options) do
|
|
23
|
+
(block_given? ? yield : body)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
else
|
|
27
|
+
content_tag(as, html_options) do
|
|
28
|
+
(block_given? ? yield : body)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def block
|
|
34
|
+
options.fetch(:block, false)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def href
|
|
38
|
+
return if as != :a
|
|
39
|
+
collapse ? collapse : (options[:href] || '#')
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def remove_component_css_classes
|
|
43
|
+
options.fetch(:remove_component_css_classes, false)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def assistive_html_attributes
|
|
49
|
+
active ? super.merge(aria: { pressed: true }) : super
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def css_classes
|
|
53
|
+
block ? super + " #{component_css_class}-block" : super
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def collapse_data_attributes
|
|
57
|
+
as == :a ? super.except!(:target) : super
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def component_css_class
|
|
61
|
+
remove_component_css_classes ? '' : 'btn'
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def default_html_wrapper_element
|
|
65
|
+
:a
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def non_html_attribute_options
|
|
69
|
+
super.push(:block, :remove_component_css_classes)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Button Group Component
|
|
7
|
+
# An optional parent of the Button component
|
|
8
|
+
# https://getbootstrap.com/docs/4.1/components/breadcrumb/
|
|
9
|
+
class ButtonGroup < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
10
|
+
include Bootstrap::Utilities::DropdownDirectionable
|
|
11
|
+
include Bootstrap::Utilities::Sizable
|
|
12
|
+
|
|
13
|
+
def vertical
|
|
14
|
+
options.fetch(:vertical, false)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def assistive_html_attributes
|
|
20
|
+
super.merge!(role: 'group', aria: { label: 'action buttons' })
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def component_css_class
|
|
24
|
+
'btn-group'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def css_classes
|
|
28
|
+
[
|
|
29
|
+
super,
|
|
30
|
+
("#{component_css_class}-vertical" if vertical)
|
|
31
|
+
].join(' ').squish
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Button Toolbar Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/button-group/#button-toolbar
|
|
8
|
+
class ButtonToolbar < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def component_css_class
|
|
12
|
+
'btn-toolbar'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def assistive_html_attributes
|
|
16
|
+
super.merge!(role: 'toolbar')
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Card Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/cards/
|
|
8
|
+
class Card < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap::Utilities::Themeable
|
|
10
|
+
|
|
11
|
+
def component_family
|
|
12
|
+
:card
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def footer
|
|
16
|
+
options.fetch(:footer, '')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def heading
|
|
20
|
+
options.fetch(:heading, '')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def subtitle
|
|
24
|
+
options.fetch(:subtitle, '')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def title
|
|
28
|
+
options.fetch(:title, '')
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def render
|
|
32
|
+
content_tag(:div, html_options) do
|
|
33
|
+
capture do
|
|
34
|
+
if heading.present?
|
|
35
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::CardHeader.new({ heading: heading }, view_context).render)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::CardBody.new({}, view_context).render {
|
|
39
|
+
capture do
|
|
40
|
+
concat(content_tag(:h5, title, class: 'card-title')) if title.present?
|
|
41
|
+
concat(content_tag(:h6, subtitle, class: 'card-subtitle')) if subtitle.present?
|
|
42
|
+
concat(block_given? ? yield : body)
|
|
43
|
+
end
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
if footer.present?
|
|
47
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::CardFooter.new({ body: footer }, view_context).render)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def css_classes
|
|
56
|
+
return super unless theme.presence && theme != :light
|
|
57
|
+
[
|
|
58
|
+
super,
|
|
59
|
+
(outlined ? "text-#{theme}" : 'text-white')
|
|
60
|
+
].join(' ').squish
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def default_theme
|
|
64
|
+
nil
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def non_html_attribute_options
|
|
68
|
+
super.push(:footer, :heading, :subtitle, :title)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def outlined_css_class_prefix
|
|
72
|
+
'border-'
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def theme_css_class_prefix
|
|
76
|
+
outlined ? '' : 'bg-'
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Card Header
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/card/#header-and-footer
|
|
8
|
+
class CardBody < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:card
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Card Header
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/card/#header-and-footer
|
|
8
|
+
class CardFooter < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:card
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Card Header
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/card/#header-and-footer
|
|
8
|
+
class CardHeader < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:card
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def heading
|
|
14
|
+
options.fetch(:heading, nil)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def render
|
|
18
|
+
super do
|
|
19
|
+
if heading.present?
|
|
20
|
+
heading
|
|
21
|
+
else
|
|
22
|
+
(block_given? ? yield : body)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def non_html_attribute_options
|
|
30
|
+
super.push(:heading)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Card Header
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/card/#header-and-footer
|
|
8
|
+
class CardImage < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:card
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def image
|
|
14
|
+
options.fetch(:image, '')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def render
|
|
18
|
+
image_tag image, **html_options
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def component_css_class
|
|
24
|
+
'card-img'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def non_html_attribute_options
|
|
28
|
+
super.push(:image)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Card Header
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/card/#header-and-footer
|
|
8
|
+
class CardImageOverlay < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap4RailsComponents::Bootstrap::Utilities::Titleable
|
|
10
|
+
|
|
11
|
+
def component_family
|
|
12
|
+
:card
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def image
|
|
16
|
+
options.fetch(:image, '')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def render
|
|
20
|
+
capture do
|
|
21
|
+
if image
|
|
22
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::CardImage.new({ image: image }, view_context).render)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
concat(content_tag(:div, html_options) {
|
|
26
|
+
capture do
|
|
27
|
+
concat(content_tag(:h5, title, class: 'card-title')) if title
|
|
28
|
+
concat(block_given? ? yield : body)
|
|
29
|
+
end
|
|
30
|
+
})
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def component_css_class
|
|
37
|
+
'card-img-overlay'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def non_html_attribute_options
|
|
41
|
+
super.push(:image)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Carousel Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/carousel/
|
|
8
|
+
class Carousel < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:carousel
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def controls
|
|
14
|
+
options.fetch(:controls, false)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def data
|
|
18
|
+
super.merge!(ride: 'carousel')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def indicators
|
|
22
|
+
options[:indicators] || 0 # return 0 on nil
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def render
|
|
26
|
+
super do
|
|
27
|
+
capture do
|
|
28
|
+
content_tag(:div, class: 'carousel-inner') do
|
|
29
|
+
if indicators > 0
|
|
30
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::CarouselIndicators.new({ count: indicators, carousel: "##{id}" }, view_context).render)
|
|
31
|
+
end
|
|
32
|
+
concat(block_given? ? yield : body)
|
|
33
|
+
if controls
|
|
34
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::CarouselControl.new({ control: :next, carousel: "##{id}" }, view_context).render)
|
|
35
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::CarouselControl.new({ control: :prev, carousel: "##{id}" }, view_context).render)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
def css_classes
|
|
45
|
+
[
|
|
46
|
+
super,
|
|
47
|
+
'slide'
|
|
48
|
+
].join(' ').squish
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def non_html_attribute_options
|
|
52
|
+
super.push(:indicators, :controls)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|