matestack-ui-bootstrap 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +8 -0
- data/README.md +26 -0
- data/Rakefile +43 -0
- data/app/assets/images/avatar-placeholder.png +0 -0
- data/app/assets/images/icons/bootstrap-icons.svg +1 -0
- data/app/concepts/matestack/ui/bootstrap/apps/admin_template.rb +85 -0
- data/app/concepts/matestack/ui/bootstrap/components/accordion.rb +53 -0
- data/app/concepts/matestack/ui/bootstrap/components/alert.js +53 -0
- data/app/concepts/matestack/ui/bootstrap/components/alert.rb +34 -0
- data/app/concepts/matestack/ui/bootstrap/components/avatar.rb +27 -0
- data/app/concepts/matestack/ui/bootstrap/components/badge.rb +30 -0
- data/app/concepts/matestack/ui/bootstrap/components/breadcrumb.rb +46 -0
- data/app/concepts/matestack/ui/bootstrap/components/button.rb +54 -0
- data/app/concepts/matestack/ui/bootstrap/components/button_group.rb +36 -0
- data/app/concepts/matestack/ui/bootstrap/components/card.rb +100 -0
- data/app/concepts/matestack/ui/bootstrap/components/carousel.js +79 -0
- data/app/concepts/matestack/ui/bootstrap/components/carousel.rb +85 -0
- data/app/concepts/matestack/ui/bootstrap/components/chart.js +232 -0
- data/app/concepts/matestack/ui/bootstrap/components/chart.rb +71 -0
- data/app/concepts/matestack/ui/bootstrap/components/close.rb +30 -0
- data/app/concepts/matestack/ui/bootstrap/components/collapse.js +84 -0
- data/app/concepts/matestack/ui/bootstrap/components/collapse.rb +43 -0
- data/app/concepts/matestack/ui/bootstrap/components/dropdown.js +14 -0
- data/app/concepts/matestack/ui/bootstrap/components/dropdown.rb +116 -0
- data/app/concepts/matestack/ui/bootstrap/components/icon.rb +19 -0
- data/app/concepts/matestack/ui/bootstrap/components/list_group.rb +83 -0
- data/app/concepts/matestack/ui/bootstrap/components/modal.js +90 -0
- data/app/concepts/matestack/ui/bootstrap/components/modal.rb +106 -0
- data/app/concepts/matestack/ui/bootstrap/components/navbar.rb +120 -0
- data/app/concepts/matestack/ui/bootstrap/components/page_heading.rb +28 -0
- data/app/concepts/matestack/ui/bootstrap/components/pagination.rb +40 -0
- data/app/concepts/matestack/ui/bootstrap/components/popover.js +26 -0
- data/app/concepts/matestack/ui/bootstrap/components/popover.rb +92 -0
- data/app/concepts/matestack/ui/bootstrap/components/progress.rb +65 -0
- data/app/concepts/matestack/ui/bootstrap/components/scrollspy.rb +33 -0
- data/app/concepts/matestack/ui/bootstrap/components/section_card.rb +31 -0
- data/app/concepts/matestack/ui/bootstrap/components/spinner.rb +31 -0
- data/app/concepts/matestack/ui/bootstrap/components/tab_nav.rb +81 -0
- data/app/concepts/matestack/ui/bootstrap/components/tab_nav_content.rb +32 -0
- data/app/concepts/matestack/ui/bootstrap/components/toast.js +79 -0
- data/app/concepts/matestack/ui/bootstrap/components/toast.rb +99 -0
- data/app/concepts/matestack/ui/bootstrap/components/tooltip.js +26 -0
- data/app/concepts/matestack/ui/bootstrap/components/tooltip.rb +82 -0
- data/app/concepts/matestack/ui/bootstrap/content/collection/collection.rb +112 -0
- data/app/concepts/matestack/ui/bootstrap/content/collection/collection.scss +10 -0
- data/app/concepts/matestack/ui/bootstrap/content/collection/content.rb +101 -0
- data/app/concepts/matestack/ui/bootstrap/content/collection/filter.rb +33 -0
- data/app/concepts/matestack/ui/bootstrap/content/collection/paginate.rb +92 -0
- data/app/concepts/matestack/ui/bootstrap/content/figure.rb +7 -0
- data/app/concepts/matestack/ui/bootstrap/form/checkbox.rb +90 -0
- data/app/concepts/matestack/ui/bootstrap/form/date.js +38 -0
- data/app/concepts/matestack/ui/bootstrap/form/date.rb +98 -0
- data/app/concepts/matestack/ui/bootstrap/form/input.rb +123 -0
- data/app/concepts/matestack/ui/bootstrap/form/radio.rb +65 -0
- data/app/concepts/matestack/ui/bootstrap/form/select.haml +11 -0
- data/app/concepts/matestack/ui/bootstrap/form/select.rb +74 -0
- data/app/concepts/matestack/ui/bootstrap/form/submit.rb +20 -0
- data/app/concepts/matestack/ui/bootstrap/form/switch.rb +90 -0
- data/app/concepts/matestack/ui/bootstrap/layout/column.rb +47 -0
- data/app/concepts/matestack/ui/bootstrap/layout/container.rb +25 -0
- data/app/concepts/matestack/ui/bootstrap/layout/row.rb +15 -0
- data/app/concepts/matestack/ui/bootstrap/layout/sidebar.js +64 -0
- data/app/concepts/matestack/ui/bootstrap/layout/sidebar.rb +45 -0
- data/app/concepts/matestack/ui/bootstrap/layout/sidebar.scss +57 -0
- data/app/concepts/matestack/ui/bootstrap/pages/devise/sign_in.rb +40 -0
- data/app/concepts/matestack/ui/bootstrap/registry.rb +63 -0
- data/app/helpers/matestack/ui/bootstrap/application_helper.rb +13 -0
- data/app/javascript/matestack-ui-bootstrap/index.js +26 -0
- data/app/javascript/matestack-ui-bootstrap/stylesheets/matestack-ui-bootstrap.scss +65 -0
- data/app/javascript/packs/matestack-ui-bootstrap.js +2 -0
- data/config/routes.rb +2 -0
- data/config/webpack/development.js +5 -0
- data/config/webpack/environment.js +29 -0
- data/config/webpack/production.js +33 -0
- data/config/webpack/test.js +5 -0
- data/config/webpacker.yml +96 -0
- data/lib/matestack/ui/bootstrap.rb +27 -0
- data/lib/matestack/ui/bootstrap/engine.rb +26 -0
- data/lib/matestack/ui/bootstrap/version.rb +7 -0
- data/lib/tasks/matestack/ui/bootstrap_tasks.rake +66 -0
- metadata +137 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
class Matestack::Ui::Bootstrap::Form::Submit < Matestack::Ui::Component
|
2
|
+
|
3
|
+
optional :button_variant
|
4
|
+
optional :spinner_variant
|
5
|
+
optional :text
|
6
|
+
optional :loading_text
|
7
|
+
|
8
|
+
def response
|
9
|
+
form_submit do
|
10
|
+
bs_btn type: "submit", variant: button_variant || :primary, attributes: { "v-if": "!loading()" } do
|
11
|
+
plain text || "Submit"
|
12
|
+
end
|
13
|
+
bs_btn type: "submit", variant: button_variant || :primary, attributes: { disabled: true, "v-if": "loading()" } do
|
14
|
+
bs_spinner variant: spinner_variant || :light, size: :sm
|
15
|
+
plain loading_text || "Loading..."
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
class Matestack::Ui::Bootstrap::Form::Switch < Matestack::Ui::Core::Form::Checkbox::Checkbox
|
2
|
+
|
3
|
+
optional :form_text
|
4
|
+
optional :disabled
|
5
|
+
optional :variant
|
6
|
+
|
7
|
+
def response
|
8
|
+
if !checkbox_options.empty?
|
9
|
+
label for: attr_key, class: "form-label", text: input_label if input_label
|
10
|
+
end
|
11
|
+
if !checkbox_options.empty?
|
12
|
+
multiple_switches
|
13
|
+
else
|
14
|
+
true_false_switch
|
15
|
+
end
|
16
|
+
render_form_text
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def checkbox_wrapper(options = {}, &block)
|
22
|
+
div class: "form-check form-switch #{'form-check-inline' if variant == :inline}", attributes: options[:attributes] do
|
23
|
+
yield
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def bs_label(text:, for_input:)
|
28
|
+
label text: text, for: for_input, class: 'form-check-label'
|
29
|
+
end
|
30
|
+
|
31
|
+
def true_false_switch
|
32
|
+
checkbox_wrapper do
|
33
|
+
form_input type: :hidden, key: key, value: (false_value || 0), errors: false
|
34
|
+
input html_attributes.merge(
|
35
|
+
type: :checkbox,
|
36
|
+
id: "#{id_for_item(value)}",
|
37
|
+
name: item_name(key),
|
38
|
+
value: checked_value,
|
39
|
+
class: 'form-check-input',
|
40
|
+
disabled: disabled,
|
41
|
+
attributes: vue_attributes.merge(
|
42
|
+
ref: "input.#{attr_key}",
|
43
|
+
)
|
44
|
+
)
|
45
|
+
bs_label text: input_label, for_input: id_for_item(value)
|
46
|
+
render_errors
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def multiple_switches
|
51
|
+
checkbox_options.to_a.each do |item|
|
52
|
+
checkbox_wrapper do
|
53
|
+
input html_attributes.merge(
|
54
|
+
type: :checkbox,
|
55
|
+
id: "#{id_for_item(item_value(item))}",
|
56
|
+
name: item_name(item),
|
57
|
+
value: item_value(item),
|
58
|
+
class: 'form-check-input',
|
59
|
+
disabled: disabled,
|
60
|
+
attributes: vue_attributes
|
61
|
+
)
|
62
|
+
bs_label text: item_name(item), for_input: id_for_item(item_value(item))
|
63
|
+
render_errors if checkbox_options.to_a.last == item
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def render_errors
|
69
|
+
unless @included_config[:errors] == false && (errors == false || errors.nil?) || errors == false
|
70
|
+
div class: 'invalid-feedback', attributes: { 'v-for': "error in #{error_key}" } do
|
71
|
+
plain '{{ error }}'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def input_error_class
|
77
|
+
'is-invalid'
|
78
|
+
end
|
79
|
+
|
80
|
+
def checkbox_options
|
81
|
+
super || {}
|
82
|
+
end
|
83
|
+
|
84
|
+
def render_form_text
|
85
|
+
div id: "form_text_for_#{attr_key}", class: "form-text" do
|
86
|
+
plain form_text
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class Matestack::Ui::Bootstrap::Layout::Column < Matestack::Ui::Component
|
2
|
+
|
3
|
+
COL_ATTRIBUTES = %i[default sm md lg xl xxl]
|
4
|
+
optional *COL_ATTRIBUTES
|
5
|
+
|
6
|
+
ORDER_ATTRIBUTES = %i[order order_sm order_md order_lg order_xl order_xxl]
|
7
|
+
optional *ORDER_ATTRIBUTES
|
8
|
+
|
9
|
+
OFFSET_ATTRIBUTES = %i[offset offset_sm offset_md offset_lg offset_xl offset_xxl]
|
10
|
+
optional *OFFSET_ATTRIBUTES
|
11
|
+
|
12
|
+
optional class: { as: :bs_class }
|
13
|
+
optional :align_self
|
14
|
+
|
15
|
+
def response
|
16
|
+
div col_attributes do
|
17
|
+
yield_components
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def col_attributes
|
24
|
+
html_attributes.merge(
|
25
|
+
class: col_classes,
|
26
|
+
attributes: options[:attributes]
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
def col_classes
|
31
|
+
classes = []
|
32
|
+
COL_ATTRIBUTES.each do |attrs|
|
33
|
+
classes << "col-#{ self.send(:"#{attrs}") }" if attrs == :default and self.send(:"#{attrs}")
|
34
|
+
classes << "col-#{attrs}-#{ self.send(:"#{attrs}") }" if attrs != :default and self.send(:"#{attrs}")
|
35
|
+
end
|
36
|
+
ORDER_ATTRIBUTES.each do |attrs|
|
37
|
+
classes << "#{attrs}-#{ self.send(:"#{attrs}") }".gsub('_', '-') if self.send(:"#{attrs}")
|
38
|
+
end
|
39
|
+
OFFSET_ATTRIBUTES.each do |attrs|
|
40
|
+
classes << "#{attrs}-#{ self.send(:"#{attrs}") }".gsub('_', '-') if self.send(:"#{attrs}")
|
41
|
+
end
|
42
|
+
classes << "align-self-#{align_self}" if align_self.present?
|
43
|
+
classes << "col" if classes.blank?
|
44
|
+
classes << bs_class
|
45
|
+
classes.join(' ').strip
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Matestack::Ui::Bootstrap::Layout::Container < Matestack::Ui::Component
|
2
|
+
|
3
|
+
optional :size, class: { as: :bs_class }
|
4
|
+
|
5
|
+
def response
|
6
|
+
div container_attributes do
|
7
|
+
yield_components
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def container_attributes
|
14
|
+
html_attributes.merge(
|
15
|
+
class: container_classes
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def container_classes
|
20
|
+
[].tap do |classes|
|
21
|
+
classes << (size.present? ? "container-#{size}" : "container")
|
22
|
+
classes << bs_class
|
23
|
+
end.join(' ').strip
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Matestack::Ui::Bootstrap::Layout::Row < Matestack::Ui::Component
|
2
|
+
def prepare
|
3
|
+
@row_classes = []
|
4
|
+
|
5
|
+
@row_classes << "align-items-#{options[:vertical]}" if options[:vertical].present?
|
6
|
+
@row_classes << "justify-content-#{options[:horizontal]}" if options[:horizontal].present?
|
7
|
+
@row_classes << "#{options[:class]}" if options[:class].present?
|
8
|
+
end
|
9
|
+
|
10
|
+
def response
|
11
|
+
div id: "#{options[:id]}", class: "row #{@row_classes.join(' ')}" do
|
12
|
+
yield_components
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
const bootstrap = require('bootstrap')
|
2
|
+
|
3
|
+
MatestackUiCore.Vue.component('matestack-ui-bootstrap-sidebar', {
|
4
|
+
mixins: [MatestackUiCore.componentMixin],
|
5
|
+
|
6
|
+
data() {
|
7
|
+
return {
|
8
|
+
sidebarOpen: false,
|
9
|
+
};
|
10
|
+
},
|
11
|
+
|
12
|
+
methods: {
|
13
|
+
sidebarToggle: function() {
|
14
|
+
var sidebarElement = document.getElementById("sidebar");
|
15
|
+
if (sidebarElement.classList.contains("closed")) {
|
16
|
+
this.openSideBar();
|
17
|
+
} else {
|
18
|
+
this.closeSideBar();
|
19
|
+
}
|
20
|
+
},
|
21
|
+
openSideBar: function(){
|
22
|
+
var sidebarElement = document.getElementById("sidebar");
|
23
|
+
var contentElement = document.getElementById("content")
|
24
|
+
this.sidebarOpen = true;
|
25
|
+
sidebarElement.classList.remove("closed")
|
26
|
+
sidebarElement.classList.add("open")
|
27
|
+
contentElement.classList.add("sidebar-open")
|
28
|
+
},
|
29
|
+
closeSideBar: function(){
|
30
|
+
var sidebarElement = document.getElementById("sidebar");
|
31
|
+
var contentElement = document.getElementById("content")
|
32
|
+
this.sidebarOpen = false;
|
33
|
+
sidebarElement.classList.add("closed")
|
34
|
+
sidebarElement.classList.remove("open")
|
35
|
+
contentElement.classList.remove("sidebar-open")
|
36
|
+
},
|
37
|
+
resizeCallback: function(){
|
38
|
+
if (window.innerWidth <= 992){
|
39
|
+
this.closeSideBar();
|
40
|
+
} else {
|
41
|
+
this.openSideBar();
|
42
|
+
}
|
43
|
+
}
|
44
|
+
},
|
45
|
+
|
46
|
+
mounted: function(){
|
47
|
+
if (window.innerWidth <= 992){
|
48
|
+
this.sidebarOpen = true;
|
49
|
+
}
|
50
|
+
window.addEventListener('resize', this.resizeCallback);
|
51
|
+
var self = this;
|
52
|
+
MatestackUiCore.matestackEventHub.$on("page_loaded", function(){
|
53
|
+
if (window.innerWidth <= 992){
|
54
|
+
self.closeSideBar();
|
55
|
+
}
|
56
|
+
})
|
57
|
+
MatestackUiCore.matestackEventHub.$on("page_loading_triggered", function(){
|
58
|
+
if (window.innerWidth <= 992){
|
59
|
+
self.closeSideBar();
|
60
|
+
}
|
61
|
+
})
|
62
|
+
}
|
63
|
+
|
64
|
+
});
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Matestack::Ui::Bootstrap::Layout::Sidebar < Matestack::Ui::VueJsComponent
|
2
|
+
|
3
|
+
vue_js_component_name "matestack-ui-bootstrap-sidebar"
|
4
|
+
|
5
|
+
optional :slots
|
6
|
+
optional :sidebar_navigation_items
|
7
|
+
|
8
|
+
def response
|
9
|
+
div class: "sidebar-wrapper shadow-sm bg-white", id: "sidebar" do
|
10
|
+
nav class: 'sidebar pt-4 px-3' do
|
11
|
+
div class: "sidebar-toggler" do
|
12
|
+
bs_btn variant: :link, attributes: { "@click": "sidebarToggle" } do
|
13
|
+
bs_icon name: "list", size: 25, class: "text-muted"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
div class: "sidebar-top mb-3" do
|
17
|
+
slot slots[:sidebar_top] if slots[:sidebar_top].present?
|
18
|
+
end
|
19
|
+
div class: "sidebar-navigation my-3" do
|
20
|
+
sidebar_navigation_partial
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def sidebar_navigation_partial
|
27
|
+
div class: "list-group" do
|
28
|
+
sidebar_navigation_items.each do |item|
|
29
|
+
if item[:type] == :link
|
30
|
+
link class: "list-group-item list-group-item-action border-0 rounded", path: item[:path] do
|
31
|
+
bs_icon name: item[:icon], size: 20 if item[:icon]
|
32
|
+
span class: "ps-3", text: item[:text] if item[:text]
|
33
|
+
end
|
34
|
+
else
|
35
|
+
transition class: "list-group-item list-group-item-action border-0 rounded", path: item[:path], delay: item[:delay] || 300 do
|
36
|
+
bs_icon name: item[:icon], size: 20 if item[:icon]
|
37
|
+
span class: "ps-3", text: item[:text] if item[:text]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
// Sidebar
|
2
|
+
.sidebar-wrapper{
|
3
|
+
position: relative;
|
4
|
+
z-index: 10;
|
5
|
+
transition: 0.5s;
|
6
|
+
|
7
|
+
flex-grow: 0; /* do not grow - initial value: 0 */
|
8
|
+
flex-shrink: 0; /* do not shrink - initial value: 1 */
|
9
|
+
flex-basis: 300px; /* width/height - initial value: auto */
|
10
|
+
|
11
|
+
.sidebar-toggler{
|
12
|
+
transition: 0.5s;
|
13
|
+
position: relative;
|
14
|
+
left: 290px;
|
15
|
+
}
|
16
|
+
|
17
|
+
&.closed {
|
18
|
+
margin-left: -300px;
|
19
|
+
}
|
20
|
+
&.open {
|
21
|
+
margin-left: 0px;
|
22
|
+
}
|
23
|
+
|
24
|
+
// @include media-breakpoint-down(lg) {
|
25
|
+
@media (max-width: 992px) {
|
26
|
+
margin-left: -300px;
|
27
|
+
&.open {
|
28
|
+
margin-left: 0px;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
.sidebar{
|
33
|
+
min-height: 100vh;
|
34
|
+
height: 100%;
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
.sidebar-top{
|
39
|
+
margin-top: -35px;
|
40
|
+
a{
|
41
|
+
text-decoration: none;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
.list-group-item{
|
46
|
+
&.active{
|
47
|
+
margin-top: 0px!important;
|
48
|
+
}
|
49
|
+
&.active-child{
|
50
|
+
color: var(--bs-white);
|
51
|
+
background-color: var(--bs-primary);
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class Matestack::Ui::Bootstrap::Pages::Devise::SignIn < Matestack::Ui::Page
|
2
|
+
|
3
|
+
def response
|
4
|
+
bs_container class: "mt-5" do
|
5
|
+
bs_row class: "mt-5", vertical: :center, horizontal: :center do
|
6
|
+
bs_col md:4 do
|
7
|
+
login_form_partial
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def login_form_partial
|
16
|
+
section class: "mt-5 rounded shadow-sm p-4 mb-4" do
|
17
|
+
heading size: 2, text: 'Sign in'
|
18
|
+
form form_config do
|
19
|
+
div class: "mb-3 mt-4" do
|
20
|
+
bs_form_input label: 'Email', key: :email, type: :email
|
21
|
+
end
|
22
|
+
div class: "mb-3" do
|
23
|
+
bs_form_input label: 'Password', key: :password, type: :password
|
24
|
+
end
|
25
|
+
div class: "mb-3" do
|
26
|
+
bs_form_submit text: "Sign in"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
toggle show_on: 'sign_in_failure' do
|
30
|
+
plain 'Your email or password is not valid.'
|
31
|
+
end
|
32
|
+
br
|
33
|
+
small text: "Dummy user: admin@matestack.io"
|
34
|
+
br
|
35
|
+
small text: "Dummy password: password"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Matestack::Ui::Bootstrap::Registry
|
2
|
+
|
3
|
+
COMPONENTS = {
|
4
|
+
bs_accordion: Matestack::Ui::Bootstrap::Components::Accordion,
|
5
|
+
bs_alert: Matestack::Ui::Bootstrap::Components::Alert,
|
6
|
+
bs_avatar: Matestack::Ui::Bootstrap::Components::Avatar,
|
7
|
+
bs_badge: Matestack::Ui::Bootstrap::Components::Badge,
|
8
|
+
bs_breadcrumb: Matestack::Ui::Bootstrap::Components::Breadcrumb,
|
9
|
+
bs_btn: Matestack::Ui::Bootstrap::Components::Button,
|
10
|
+
bs_btn_group: Matestack::Ui::Bootstrap::Components::ButtonGroup,
|
11
|
+
bs_card: Matestack::Ui::Bootstrap::Components::Card,
|
12
|
+
bs_carousel: Matestack::Ui::Bootstrap::Components::Carousel,
|
13
|
+
bs_chart: Matestack::Ui::Bootstrap::Components::Chart,
|
14
|
+
bs_close: Matestack::Ui::Bootstrap::Components::Close,
|
15
|
+
bs_collapse: Matestack::Ui::Bootstrap::Components::Collapse,
|
16
|
+
bs_dropdown: Matestack::Ui::Bootstrap::Components::Dropdown,
|
17
|
+
bs_icon: Matestack::Ui::Bootstrap::Components::Icon,
|
18
|
+
bs_list_group: Matestack::Ui::Bootstrap::Components::ListGroup,
|
19
|
+
bs_modal: Matestack::Ui::Bootstrap::Components::Modal,
|
20
|
+
bs_navbar: Matestack::Ui::Bootstrap::Components::Navbar,
|
21
|
+
bs_pagination: Matestack::Ui::Bootstrap::Components::Pagination,
|
22
|
+
bs_page_heading: Matestack::Ui::Bootstrap::Components::PageHeading,
|
23
|
+
bs_popover: Matestack::Ui::Bootstrap::Components::Popover,
|
24
|
+
bs_progress: Matestack::Ui::Bootstrap::Components::Progress,
|
25
|
+
bs_scrollspy: Matestack::Ui::Bootstrap::Components::Scrollspy,
|
26
|
+
bs_section_card: Matestack::Ui::Bootstrap::Components::SectionCard,
|
27
|
+
bs_spinner: Matestack::Ui::Bootstrap::Components::Spinner,
|
28
|
+
bs_tab_nav: Matestack::Ui::Bootstrap::Components::TabNav,
|
29
|
+
bs_tab_nav_content: Matestack::Ui::Bootstrap::Components::TabNavContent,
|
30
|
+
bs_toast: Matestack::Ui::Bootstrap::Components::Toast,
|
31
|
+
bs_tooltip: Matestack::Ui::Bootstrap::Components::Tooltip,
|
32
|
+
}
|
33
|
+
|
34
|
+
FORMS = {
|
35
|
+
bs_form_input: Matestack::Ui::Bootstrap::Form::Input,
|
36
|
+
bs_form_select: Matestack::Ui::Bootstrap::Form::Select,
|
37
|
+
bs_form_checkbox: Matestack::Ui::Bootstrap::Form::Checkbox,
|
38
|
+
bs_form_radio: Matestack::Ui::Bootstrap::Form::Radio,
|
39
|
+
bs_form_switch: Matestack::Ui::Bootstrap::Form::Switch,
|
40
|
+
bs_form_submit: Matestack::Ui::Bootstrap::Form::Submit,
|
41
|
+
bs_form_date: Matestack::Ui::Bootstrap::Form::Date,
|
42
|
+
}
|
43
|
+
|
44
|
+
CONTENT = {
|
45
|
+
bs_figure: Matestack::Ui::Bootstrap::Content::Figure,
|
46
|
+
bs_smart_collection: Matestack::Ui::Bootstrap::Content::Collection::Collection,
|
47
|
+
}
|
48
|
+
|
49
|
+
LAYOUTS = {
|
50
|
+
bs_col: Matestack::Ui::Bootstrap::Layout::Column,
|
51
|
+
bs_container: Matestack::Ui::Bootstrap::Layout::Container,
|
52
|
+
bs_row: Matestack::Ui::Bootstrap::Layout::Row,
|
53
|
+
bs_sidebar: Matestack::Ui::Bootstrap::Layout::Sidebar
|
54
|
+
}
|
55
|
+
|
56
|
+
Matestack::Ui::Core::Component::Registry.register_components(
|
57
|
+
**COMPONENTS,
|
58
|
+
**FORMS,
|
59
|
+
**CONTENT,
|
60
|
+
**LAYOUTS
|
61
|
+
)
|
62
|
+
|
63
|
+
end
|