card-mod-bootstrap 0.11.0 → 0.11.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/db/migrate_core_cards/20170719163733_update_bootswatch_themes_to_4_beta.rb +1 -2
- data/db/migrate_core_cards/20170726111053_add_bootstrap_mixins.rb +2 -2
- data/db/migrate_core_cards/20170726145012_select2.rb +2 -2
- data/db/migrate_core_cards/20180423160231_migrate_customized_bootstrap_skin.rb +1 -0
- data/db/migrate_core_cards/20180423170283_add_type_bootswatch_skin.rb +1 -0
- data/db/migrate_core_cards/20180425174433_delete_deprecated_skin_cards.rb +1 -0
- data/db/migrate_core_cards/20181129140917_fix_skin_images.rb +0 -1
- data/db/migrate_core_cards/data/20181108181219_migrate_classic_skins_to_bootstrap.rb +1 -0
- data/db/migrate_core_cards/lib/skin.rb +1 -1
- data/lib/bootstrap.rb +3 -1
- data/lib/bootstrap/component.rb +39 -128
- data/lib/bootstrap/component/carousel.rb +16 -8
- data/lib/bootstrap/component/component_class.rb +36 -0
- data/lib/bootstrap/component/form.rb +4 -4
- data/lib/bootstrap/component/horizontal_form.rb +2 -2
- data/lib/bootstrap/component/layout.rb +20 -10
- data/lib/bootstrap/component_loader.rb +1 -1
- data/lib/bootstrap/content.rb +40 -0
- data/lib/bootstrap/old_component.rb +6 -85
- data/lib/bootstrap/tag_method.rb +54 -0
- data/lib/bootstrapper.rb +1 -1
- data/lib/stylesheets/style_bootstrap_cards.scss +2 -2
- data/public/assets/fonts/MaterialIcons-Regular.svg +1 -2373
- data/public/assets/fonts/fa-brands-400.svg +1 -3717
- data/public/assets/fonts/fa-regular-400.svg +1 -801
- data/public/assets/fonts/fa-solid-900.svg +1 -5028
- data/public/assets/fonts/glyphicons-halflings-regular.svg +1 -288
- data/set/abstract/bootstrap_code_file.rb +0 -1
- data/set/abstract/bootswatch_theme.rb +1 -0
- data/set/abstract/bs_badge/tab_badge.haml +1 -1
- data/set/all/bootstrap/downdown_button.haml +9 -0
- data/set/all/bootstrap/dropdown.rb +13 -15
- data/set/all/bootstrap/helper.rb +23 -12
- data/set/all/bootstrap/icon.rb +16 -11
- data/set/all/bootstrap/navbar.rb +8 -28
- data/set/all/bootstrap/navbar/navbar_responsive.haml +17 -0
- data/set/all/bootstrap/table.rb +9 -7
- data/set/all/bootstrap/wrapper.rb +2 -4
- data/set/self/bootstrap_core.rb +7 -8
- data/set/type/customized_bootswatch_skin.rb +11 -7
- data/set/type_plus_right/customized_bootswatch_skin/colors.rb +3 -2
- metadata +24 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cec84d4d107eb10c36b89dcdcf027d3c5dd2f6fd3a0f37409099cee8fe037b9
|
4
|
+
data.tar.gz: 641ae7a1c7480deac8d098899b3188d8e0b0e55579ebdc430d393f423b4e7754
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1ddfdf005e2cc00e919f50f6e39c5395eaae0de0c713ecb44bb8dc9a66a7a5390d89fb12f99a21f0d681eef7aa8abf97a86e188d670ebbcb355058ba9c03f84
|
7
|
+
data.tar.gz: 748a9964081887d8b5a9123197db0e5278e03d55201302c7b3b5843f9fa2c8273fd0770ee7d8d749dd1061c7c2694745bef2b65656f30718394159a659ed2e1b
|
@@ -3,9 +3,9 @@
|
|
3
3
|
class AddBootstrapMixins < Cardio::Migration::Core
|
4
4
|
def up
|
5
5
|
ensure_card "style: bootstrap mixins", type_id: Card::ScssID,
|
6
|
-
|
6
|
+
codename: "style_bootstrap_mixins"
|
7
7
|
|
8
8
|
ensure_card "style: bootstrap breakpoints", type_id: Card::ScssID,
|
9
|
-
|
9
|
+
codename: "style_bootstrap_breakpoints"
|
10
10
|
end
|
11
11
|
end
|
@@ -51,6 +51,7 @@ class MigrateCustomizedBootstrapSkin < Cardio::Migration::Core
|
|
51
51
|
def migrate_customizable_bootstrap_skin
|
52
52
|
referers = Card.search refer_to: { codename: OLD_SKIN.to_s }
|
53
53
|
return unless referers.present?
|
54
|
+
|
54
55
|
replace_old_skin referers
|
55
56
|
build_new_skin
|
56
57
|
delete_code_card OLD_SKIN
|
data/lib/bootstrap.rb
CHANGED
@@ -6,11 +6,13 @@ class Bootstrap
|
|
6
6
|
extend ComponentLoader
|
7
7
|
load_components
|
8
8
|
|
9
|
+
attr_reader :context
|
10
|
+
|
9
11
|
def initialize context=nil
|
10
12
|
@context = context
|
11
13
|
end
|
12
14
|
|
13
15
|
def render *args, &block
|
14
|
-
instance_exec
|
16
|
+
instance_exec(*args, &block)
|
15
17
|
end
|
16
18
|
end
|
data/lib/bootstrap/component.rb
CHANGED
@@ -1,68 +1,8 @@
|
|
1
|
-
#! no set module
|
2
1
|
class Bootstrap
|
3
|
-
|
4
|
-
def initialize component, name, html_class, tag_opts={}, &tag_block
|
5
|
-
@component = component
|
6
|
-
@name = name
|
7
|
-
@html_class = html_class
|
8
|
-
@tag_opts = tag_opts
|
9
|
-
@tag_block = tag_block
|
10
|
-
@append = []
|
11
|
-
@wrap = []
|
12
|
-
@xm = Builder::XmlMarkup.new
|
13
|
-
end
|
14
|
-
|
15
|
-
def call *args, &content_block
|
16
|
-
component.content.push "".html_safe
|
17
|
-
|
18
|
-
content, opts = content_block.call
|
19
|
-
wrappers = @wrap.pop
|
20
|
-
if wrappers.present?
|
21
|
-
while wrappers.present? do
|
22
|
-
wrapper = wrappers.shift
|
23
|
-
if wrapper.is_a? Symbol
|
24
|
-
send wrapper, &content_block
|
25
|
-
else
|
26
|
-
instance_exec(content, &wrappers.shift)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
else
|
30
|
-
add_content content
|
31
|
-
end
|
32
|
-
|
33
|
-
collected_content = @content.pop
|
34
|
-
tag_name = opts.delete(:tag) if tag_name == :yield
|
35
|
-
add_content content_tag(tag_name, collected_content, opts, false)
|
36
|
-
@append.pop.each do |block|
|
37
|
-
add_content instance_exec(&block)
|
38
|
-
end
|
39
|
-
""
|
40
|
-
end
|
41
|
-
|
42
|
-
def method_missing method, *args, &block
|
43
|
-
@component.send method, *args, &block
|
44
|
-
end
|
45
|
-
|
46
|
-
def prepend &block
|
47
|
-
tmp = @content.pop
|
48
|
-
instance_exec &block
|
49
|
-
@content << tmp
|
50
|
-
end
|
51
|
-
|
52
|
-
def wrap &block
|
53
|
-
instance_exec &block
|
54
|
-
end
|
55
|
-
|
56
|
-
def append &block
|
57
|
-
@append[-1] << block
|
58
|
-
end
|
59
|
-
|
60
|
-
def wrapInner tag=nil, &block
|
61
|
-
@wrap[-1] << (block_given? ? block : tag)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
2
|
+
# render components of bootstrap library
|
65
3
|
class Component
|
4
|
+
extend ComponentClass
|
5
|
+
|
66
6
|
def initialize context, *args, &block
|
67
7
|
@context = context
|
68
8
|
@content = ["".html_safe]
|
@@ -74,64 +14,18 @@ class Bootstrap
|
|
74
14
|
@html = Builder::XmlMarkup.new
|
75
15
|
end
|
76
16
|
|
77
|
-
class << self
|
78
|
-
def render format, *args, &block
|
79
|
-
new(format, *args, &block).render
|
80
|
-
end
|
81
|
-
|
82
|
-
# Like def_tag_method but always generates a div tag
|
83
|
-
# The tag option is not available
|
84
|
-
def def_div_method name, html_class, opts={}, &tag_block
|
85
|
-
def_tag_method name, html_class, opts.merge(tag: :div), &tag_block
|
86
|
-
end
|
87
|
-
|
88
|
-
# Defines a method that generates a html tag
|
89
|
-
# @param method_name [Symbol, String] the name of the method. If no :tag option in tag_opts is defined then the name is also the name of the tag that the method generates
|
90
|
-
# @param html_class [String] a html class that is added to tag. Use nil if you don't want a html_class
|
91
|
-
# @param tag_opts [Hash] additional argument that will be added to the tag
|
92
|
-
# @option tag_opts [Symbol, String] tag the name of the tag
|
93
|
-
# @example
|
94
|
-
# def_tag_method :link, "known-link", tag: :a, id: "uniq-link"
|
95
|
-
# link # => <a class="known-link" id="uniq-link"></a>
|
96
|
-
def def_tag_method method_name, html_class, tag_opts={}, &tag_opts_block
|
97
|
-
tag = tag_opts.delete(:tag) || method_name
|
98
|
-
return def_simple_tag_method method_name, tag, html_class, tag_opts unless block_given?
|
99
|
-
|
100
|
-
define_method method_name do |*args, &content_block|
|
101
|
-
content, opts, new_child_args = standardize_args args, &tag_opts_block
|
102
|
-
add_classes opts, html_class, tag_opts.delete(:optional_classes)
|
103
|
-
|
104
|
-
@html.tag! tag, opts do
|
105
|
-
instance_exec &content_block
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def def_simple_tag_method method_name, tag, html_class, tag_opts={}
|
111
|
-
define_method method_name do |*args, &content_block|
|
112
|
-
@html.tag! tag, class: html_class do
|
113
|
-
instance_exec &content_block
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
|
120
17
|
def render
|
121
|
-
@rendered =
|
122
|
-
render_content
|
123
|
-
# @content[-1]
|
124
|
-
end
|
18
|
+
@rendered = render_content
|
125
19
|
end
|
126
20
|
|
127
21
|
def prepend &block
|
128
22
|
tmp = @content.pop
|
129
|
-
instance_exec
|
23
|
+
instance_exec(&block)
|
130
24
|
@content << tmp
|
131
25
|
end
|
132
26
|
|
133
27
|
def insert &block
|
134
|
-
instance_exec
|
28
|
+
instance_exec(&block)
|
135
29
|
end
|
136
30
|
|
137
31
|
def append &block
|
@@ -142,46 +36,63 @@ class Bootstrap
|
|
142
36
|
@wrap[-1] << (block_given? ? block : tag)
|
143
37
|
end
|
144
38
|
|
39
|
+
def card
|
40
|
+
@context.context.card
|
41
|
+
end
|
42
|
+
|
145
43
|
private
|
146
44
|
|
45
|
+
def tag_method_opts args, html_class, tag_opts, &tag_opts_block
|
46
|
+
opts = {}
|
47
|
+
_blah, opts, _blah = standardize_args args, &tag_opts_block if block_given?
|
48
|
+
add_classes opts, html_class, tag_opts.delete(:optional_classes)
|
49
|
+
opts
|
50
|
+
end
|
51
|
+
|
147
52
|
def render_content
|
148
53
|
# if @build_block.arity > 0
|
149
|
-
instance_exec
|
54
|
+
instance_exec(*@args, &@build_block)
|
150
55
|
end
|
151
56
|
|
152
57
|
def generate_content content, processor, &block
|
153
|
-
content = instance_exec
|
58
|
+
content = instance_exec(&block) if block.present?
|
154
59
|
return content if !processor || !content.is_a?(Array)
|
155
|
-
|
60
|
+
|
61
|
+
content.each { |item| send processor, item }
|
156
62
|
""
|
157
63
|
end
|
158
64
|
|
159
65
|
def with_child_args args
|
160
66
|
@child_args << args if args.present?
|
161
|
-
|
162
|
-
@child_args.pop if args.present?
|
163
|
-
res
|
67
|
+
yield.tap { @child_args.pop if args.present? }
|
164
68
|
end
|
165
69
|
|
166
70
|
def add_content content
|
167
71
|
@content[-1] << "\n#{content}".html_safe if content.present?
|
168
72
|
end
|
169
73
|
|
170
|
-
def
|
74
|
+
def standardize_args args, &block
|
75
|
+
opts = standardize_opts args
|
76
|
+
items = items_from_args args
|
77
|
+
opts, args = standardize_block_args opts, args, &block if block.present?
|
78
|
+
|
79
|
+
[items, opts, args]
|
171
80
|
end
|
172
81
|
|
173
|
-
def
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
82
|
+
def standardize_opts args
|
83
|
+
args.last.is_a?(Hash) ? args.pop : {}
|
84
|
+
end
|
85
|
+
|
86
|
+
def items_from_args args
|
87
|
+
((args.one? && args.last.is_a?(String)) || args.last.is_a?(Array)) && args.pop
|
88
|
+
end
|
89
|
+
|
90
|
+
def standardize_block_args opts, args, &block
|
91
|
+
instance_exec(opts, args, &block).tap do |s_opts, _s_args|
|
92
|
+
unless s_opts.is_a? Hash
|
180
93
|
raise Card::Error, "first return value of a tag block has to be a hash"
|
181
94
|
end
|
182
95
|
end
|
183
|
-
|
184
|
-
[items, opts, args]
|
185
96
|
end
|
186
97
|
|
187
98
|
def add_classes opts, html_class, optional_classes
|
@@ -2,14 +2,14 @@ class Bootstrap
|
|
2
2
|
class Component
|
3
3
|
class Carousel < Component
|
4
4
|
def render_content
|
5
|
-
carousel
|
5
|
+
carousel(*@args, &@build_block)
|
6
6
|
end
|
7
7
|
|
8
8
|
def carousel id, active_index, &block
|
9
9
|
@id = id
|
10
10
|
@active_item_index = active_index
|
11
11
|
@items = []
|
12
|
-
instance_exec
|
12
|
+
instance_exec(&block)
|
13
13
|
|
14
14
|
@html.div class: "carousel slide", id: id, "data-ride" => "carousel" do
|
15
15
|
indicators
|
@@ -26,16 +26,24 @@ class Bootstrap
|
|
26
26
|
def items
|
27
27
|
@html.div class: "carousel-inner", role: "listbox" do
|
28
28
|
@items.each_with_index do |item, index|
|
29
|
-
|
30
|
-
add_class html_opts, "active" if index == @active_item_index
|
31
|
-
@html.div html_opts do
|
32
|
-
item = item.call if item.respond_to?(:call)
|
33
|
-
@html << item if item.is_a?(String)
|
34
|
-
end
|
29
|
+
carousel_item item, carousel_item_opts(index)
|
35
30
|
end
|
36
31
|
end
|
37
32
|
end
|
38
33
|
|
34
|
+
def carousel_item_opts index
|
35
|
+
{ class: "carousel-item" }.tap do |opts|
|
36
|
+
add_class opts, "active" if index == @active_item_index
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def carousel_item item, html_opts
|
41
|
+
@html.div html_opts do
|
42
|
+
item = item.call if item.respond_to?(:call)
|
43
|
+
@html << item if item.is_a?(String)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
39
47
|
def control_prev
|
40
48
|
@html.a class: "carousel-control-prev", href: "##{@id}", role: "button",
|
41
49
|
"data-slide" => "prev" do
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class Bootstrap
|
2
|
+
class Component
|
3
|
+
# class methods for Bootstrap::Component
|
4
|
+
module ComponentClass
|
5
|
+
def render format, *args, &block
|
6
|
+
new(format, *args, &block).render
|
7
|
+
end
|
8
|
+
|
9
|
+
# Like def_tag_method but always generates a div tag
|
10
|
+
# The tag option is not available
|
11
|
+
def def_div_method name, html_class, opts={}, &tag_block
|
12
|
+
def_tag_method name, html_class, opts.merge(tag: :div), &tag_block
|
13
|
+
end
|
14
|
+
|
15
|
+
# Defines a method that generates a html tag
|
16
|
+
# @param method_name [Symbol, String] the name of the method. If no :tag option
|
17
|
+
# in tag_opts is defined then the name is also the name of the tag that the
|
18
|
+
# method generates
|
19
|
+
# @param html_class [String] a html class that is added to tag. Use nil if you
|
20
|
+
# don't want a html_class
|
21
|
+
# @param tag_opts [Hash] additional argument that will be added to the tag
|
22
|
+
# @option tag_opts [Symbol, String] tag the name of the tag
|
23
|
+
# @example
|
24
|
+
# def_tag_method :link, "known-link", tag: :a, id: "uniq-link"
|
25
|
+
# link # => <a class="known-link" id="uniq-link"></a>
|
26
|
+
def def_tag_method method_name, html_class, tag_opts={}, &tag_opts_block
|
27
|
+
tag = tag_opts.delete(:tag) || method_name
|
28
|
+
define_method method_name do |*args, &content_block|
|
29
|
+
@html.tag! tag, tag_method_opts(args, html_class, tag_opts, &tag_opts_block) do
|
30
|
+
instance_exec(&content_block)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -2,7 +2,7 @@ class Bootstrap
|
|
2
2
|
class Component
|
3
3
|
class Form < Component
|
4
4
|
def render_content *args
|
5
|
-
form
|
5
|
+
form(*args, &@build_block)
|
6
6
|
end
|
7
7
|
|
8
8
|
#
|
@@ -23,13 +23,13 @@ class Bootstrap
|
|
23
23
|
add_class opts, "form-horizontal" if opts.delete(:horizontal)
|
24
24
|
add_class opts, "form-inline" if opts.delete(:inline)
|
25
25
|
@html.form opts do
|
26
|
-
instance_exec
|
26
|
+
instance_exec(&block)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
def group text=nil, &block
|
31
31
|
@html.div text, class: "form-group" do
|
32
|
-
instance_exec
|
32
|
+
instance_exec(&block)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -53,7 +53,7 @@ class Bootstrap
|
|
53
53
|
# opts
|
54
54
|
# end
|
55
55
|
|
56
|
-
define_method tag do |
|
56
|
+
define_method tag do |id:, label:, text: nil|
|
57
57
|
@html.input id: id, class: "form-control", type: tag do
|
58
58
|
@html.label label, for: id if label
|
59
59
|
@html << text
|