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,103 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Nav Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/navs/
|
|
8
|
+
class NavItem < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap::Utilities::Wrappable
|
|
10
|
+
|
|
11
|
+
# For passing through to nav_link
|
|
12
|
+
# bypass module since active / disabled is applied
|
|
13
|
+
# on the nav_link
|
|
14
|
+
def active
|
|
15
|
+
options.fetch(:active, false)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def button
|
|
19
|
+
options.fetch(:button, nil)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def component_family
|
|
23
|
+
:nav
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def remote
|
|
27
|
+
options.fetch(:remote, nil)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# For passing through to nav_link
|
|
31
|
+
def disabled
|
|
32
|
+
options.fetch(:disabled, false)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def dropdown
|
|
36
|
+
options.fetch(:dropdown, false)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def include_nav_link?
|
|
40
|
+
href.present? || dropdown || tab
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def tab
|
|
44
|
+
options.fetch(:tab, nil)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# href gets passed to the nav_link when present.
|
|
48
|
+
# Removes :href from nav_item's html_options so we don't end up with
|
|
49
|
+
# <li class='nav-item' href='#href'><a class='nav-link' href='#href'...
|
|
50
|
+
def html_options
|
|
51
|
+
super.except!(:href)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def render
|
|
55
|
+
super do
|
|
56
|
+
capture do
|
|
57
|
+
if include_nav_link?
|
|
58
|
+
concat(Bootstrap4RailsComponents::Bootstrap::Components::NavLink.new({ body: (button ? button : (block_given? ? yield : body)), active: active, disabled: disabled, dropdown: dropdown, tab: tab, remote: remote, href: (tab || href) }, view_context).render)
|
|
59
|
+
concat(block_given? ? yield : body) if dropdown
|
|
60
|
+
else
|
|
61
|
+
(block_given? ? yield : body)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def base_element
|
|
70
|
+
as
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def component_css_class
|
|
74
|
+
'nav-item'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def automatic_as
|
|
78
|
+
include_nav_link? ? :li : super
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def css_classes
|
|
82
|
+
[
|
|
83
|
+
super,
|
|
84
|
+
('dropdown' if dropdown)
|
|
85
|
+
].join(' ').squish
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def default_html_wrapper_element
|
|
89
|
+
:li
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def non_html_attribute_options
|
|
93
|
+
super.push(:active,
|
|
94
|
+
:disabled,
|
|
95
|
+
:dropdown,
|
|
96
|
+
:button,
|
|
97
|
+
:tab,
|
|
98
|
+
:remote)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Nav Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/navs/
|
|
8
|
+
class NavLink < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap::Utilities::Activatable
|
|
10
|
+
include Bootstrap::Utilities::Disableable
|
|
11
|
+
include Bootstrap::Utilities::Remotable
|
|
12
|
+
|
|
13
|
+
def component_family
|
|
14
|
+
:nav
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def dropdown
|
|
18
|
+
options.fetch(:dropdown, false)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def href
|
|
22
|
+
options.fetch(:href, nil)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def tab
|
|
26
|
+
options.fetch(:tab, nil)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def data
|
|
30
|
+
tab ? super.merge!(toggle: 'tab') : super
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def render
|
|
34
|
+
if dropdown
|
|
35
|
+
Bootstrap4RailsComponents::Bootstrap::Components::DropdownToggle.new({ body: (block_given? ? yield : body), as: :a, **html_options, theme: nil, nav_link: true }, view_context).render
|
|
36
|
+
else
|
|
37
|
+
super
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
def base_element
|
|
44
|
+
:a
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def component_css_class
|
|
48
|
+
'nav-link'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def non_html_attribute_options
|
|
52
|
+
super.push(:tab, :dropdown)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def assistive_html_attributes
|
|
56
|
+
return super unless tab
|
|
57
|
+
{ role: 'tab', aria: { controls: tab.tr('#', ''), selected: active } }
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Navbar Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/navbar/
|
|
8
|
+
class Navbar < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap::Utilities::Wrappable
|
|
10
|
+
include Bootstrap::Utilities::Themeable
|
|
11
|
+
|
|
12
|
+
def component_family
|
|
13
|
+
:navbar
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def expand
|
|
17
|
+
options.fetch(:expand, :lg)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def light
|
|
21
|
+
options.fetch(:light, nil)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def dark
|
|
25
|
+
options.fetch(:dark, nil)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def sticky
|
|
29
|
+
options.fetch(:sticky, nil)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def fixed
|
|
33
|
+
options.fetch(:fixed, nil)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def base_element
|
|
39
|
+
as
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def css_classes
|
|
43
|
+
[
|
|
44
|
+
super,
|
|
45
|
+
("#{component_css_class}-expand-#{expand}" unless expand.nil?),
|
|
46
|
+
dark_or_light_navbar_css_class,
|
|
47
|
+
('sticky-top' if sticky == :top),
|
|
48
|
+
('fixed-bottom' if fixed == :bottom),
|
|
49
|
+
('fixed-top' if fixed == :top),
|
|
50
|
+
].join(' ').squish
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def assistive_html_attributes
|
|
54
|
+
as == :nav ? super : super.merge!(role: 'navigation')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def default_html_wrapper_element
|
|
58
|
+
:nav
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def theme_css_class_prefix
|
|
62
|
+
'bg-'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def dark_or_light_navbar_css_class
|
|
66
|
+
if dark
|
|
67
|
+
'navbar-dark'
|
|
68
|
+
elsif light
|
|
69
|
+
'navbar-light'
|
|
70
|
+
else
|
|
71
|
+
dark_themes.include?(theme) ? 'navbar-dark' : 'navbar-light'
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def default_theme
|
|
76
|
+
:light
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def non_html_attribute_options
|
|
80
|
+
super.push(:dark,
|
|
81
|
+
:expand,
|
|
82
|
+
:right,
|
|
83
|
+
:left,
|
|
84
|
+
:light)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def dark_themes
|
|
88
|
+
%i[primary secondary success danger warning info dark]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def outlineable?
|
|
92
|
+
false
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Navbar Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/navbar/
|
|
8
|
+
class NavbarBrand < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:navbar
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def href
|
|
14
|
+
options.fetch(:href, '#')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def base_element
|
|
20
|
+
:a
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Navbar Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/navbar/
|
|
8
|
+
class NavbarNav < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap::Utilities::Wrappable
|
|
10
|
+
|
|
11
|
+
def component_family
|
|
12
|
+
:navbar
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def right
|
|
16
|
+
options.fetch(:right, false)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Left by default
|
|
20
|
+
def left
|
|
21
|
+
options.fetch(:left, default_left)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def base_element
|
|
27
|
+
as
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def css_classes
|
|
31
|
+
[
|
|
32
|
+
super,
|
|
33
|
+
('ml-auto' if right),
|
|
34
|
+
('mr-auto' if left)
|
|
35
|
+
].join(' ').squish
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def default_html_wrapper_element
|
|
39
|
+
:ul
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def default_left
|
|
43
|
+
right ? false : true
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Navbar Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/navbar/
|
|
8
|
+
class NavbarText < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
def component_family
|
|
10
|
+
:navbar
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def base_element
|
|
16
|
+
:span
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Navbar Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/navbar/
|
|
8
|
+
class NavbarToggler < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
include Bootstrap::Utilities::CollapseToggleable
|
|
10
|
+
|
|
11
|
+
# Pass through to collapse component
|
|
12
|
+
# def collapse
|
|
13
|
+
# options.fetch(:collapse, nil)
|
|
14
|
+
# end
|
|
15
|
+
|
|
16
|
+
def component_family
|
|
17
|
+
:navbar
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def render
|
|
21
|
+
super do
|
|
22
|
+
if body
|
|
23
|
+
(block_given? ? yield : body)
|
|
24
|
+
else
|
|
25
|
+
content_tag(:span, nil, class: 'navbar-toggler-icon')
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def base_element
|
|
33
|
+
:button
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bootstrap4RailsComponents
|
|
4
|
+
module Bootstrap
|
|
5
|
+
module Components
|
|
6
|
+
# Bootstrap Pagination - Page Item Component
|
|
7
|
+
# https://getbootstrap.com/docs/4.1/components/pagination/
|
|
8
|
+
class PageItem < Bootstrap4RailsComponents::Bootstrap::Components::Base
|
|
9
|
+
# include Bootstrap::Utilities::Disableable
|
|
10
|
+
include Bootstrap::Utilities::Activatable
|
|
11
|
+
|
|
12
|
+
def component_family
|
|
13
|
+
:pagination
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def disabled
|
|
17
|
+
options.fetch(:disabled, false)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def href
|
|
21
|
+
options[:href] || '#' # return # when nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Send href through to the "page link" that's embedded within
|
|
25
|
+
# the page item component
|
|
26
|
+
def html_options
|
|
27
|
+
super.except!(:href)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def page_link_html_options
|
|
31
|
+
{ class: 'page-link',
|
|
32
|
+
**(disabled ? { tabindex: '-1' } : {}),
|
|
33
|
+
href: href }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def render
|
|
37
|
+
super do
|
|
38
|
+
content_tag(:a, page_link_html_options) do
|
|
39
|
+
capture do
|
|
40
|
+
concat(block_given? ? yield : body)
|
|
41
|
+
concat(content_tag(:span, '(current)', class: 'sr-only')) if active
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def base_element
|
|
50
|
+
:li
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def css_classes
|
|
54
|
+
[
|
|
55
|
+
super,
|
|
56
|
+
('disabled' if disabled)
|
|
57
|
+
].join(' ').squish
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def non_html_attribute_options
|
|
61
|
+
super.push(:disabled)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|