bootstrap4_helper 0.0.0 → 1.0.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 +4 -4
- data/lib/bootstrap4_helper.rb +522 -2
- data/lib/bootstrap4_helper/accordion.rb +106 -0
- data/lib/bootstrap4_helper/accordion_group.rb +54 -0
- data/lib/bootstrap4_helper/alert.rb +79 -0
- data/lib/bootstrap4_helper/badge.rb +46 -0
- data/lib/bootstrap4_helper/card.rb +129 -0
- data/lib/bootstrap4_helper/card_column.rb +18 -0
- data/lib/bootstrap4_helper/card_deck.rb +18 -0
- data/lib/bootstrap4_helper/card_group.rb +18 -0
- data/lib/bootstrap4_helper/card_grouping.rb +35 -0
- data/lib/bootstrap4_helper/component.rb +110 -0
- data/lib/bootstrap4_helper/configuration.rb +36 -0
- data/lib/bootstrap4_helper/constants.rb +30 -0
- data/lib/bootstrap4_helper/dropdown.rb +92 -0
- data/lib/bootstrap4_helper/dropdown/menu.rb +123 -0
- data/lib/bootstrap4_helper/initialize.rb +24 -0
- data/lib/bootstrap4_helper/modal.rb +150 -0
- data/lib/bootstrap4_helper/nav.rb +100 -0
- data/lib/bootstrap4_helper/railtie.rb +8 -0
- data/lib/bootstrap4_helper/spinner.rb +41 -0
- data/lib/bootstrap4_helper/tab.rb +66 -0
- data/lib/bootstrap4_helper/tab/content.rb +50 -0
- data/lib/bootstrap4_helper/version.rb +1 -1
- metadata +66 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0b8c171fc1cd2510c422ae2e359386eac13e14a11437674208960480d35167b
|
4
|
+
data.tar.gz: 7779d13c5a369aec5c1b15b10916e78a197cb3d7a3d31b1bc3284dedb1376563
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fccc06d01e6e46ee9e33d67d1842705a87567dab8d8ac6d6dbce18449e478d9353937cb14ab1887b3fce71e34528c1462014f5e22531b1e7e7ee8ea9c60def9a
|
7
|
+
data.tar.gz: b2574bbfd27950f1bec5234a09937f78570b9cd41a0a7cbab02c8e3f79c1d126b5140a5daf38897a684fd488bae7e5f9ca7ef5364d656d343d5b8269d6b79a6c
|
data/lib/bootstrap4_helper.rb
CHANGED
@@ -1,5 +1,525 @@
|
|
1
|
-
require
|
1
|
+
require 'bootstrap4_helper/version'
|
2
|
+
require 'bootstrap4_helper/railtie'
|
3
|
+
require 'bootstrap4_helper/constants'
|
2
4
|
|
5
|
+
Bootstrap4Helper::Constants::COMPONENTS.each do |component|
|
6
|
+
require "bootstrap4_helper/#{component}"
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'bootstrap4_helper/initialize'
|
10
|
+
|
11
|
+
# @todo
|
12
|
+
# - We need a configuration system so people can specify what DOM elements to
|
13
|
+
# use when building components. Like, so we want <h1> for Card Headers or just
|
14
|
+
# <div>'s.
|
15
|
+
#
|
3
16
|
module Bootstrap4Helper
|
4
|
-
#
|
17
|
+
# @description
|
18
|
+
# - Creates a single Accordion element. The header component
|
19
|
+
# already provides the DOM element to link the Collapse area.
|
20
|
+
# You just need to provide the text or additional markup, if
|
21
|
+
# you want it.
|
22
|
+
#
|
23
|
+
# <code>
|
24
|
+
# <%= accordion_helper do |a| %>
|
25
|
+
# <%= a.header do %>
|
26
|
+
# // Some HTML or Ruby
|
27
|
+
# <% end %>
|
28
|
+
# <%= a.body %>
|
29
|
+
# // Some HTML or Ruby
|
30
|
+
# <% end %>
|
31
|
+
# <% end %>
|
32
|
+
# </code>
|
33
|
+
#
|
34
|
+
# @param [Mixed] args
|
35
|
+
# @return [Accordion]
|
36
|
+
#
|
37
|
+
def accordion_helper(opts = {}, &block)
|
38
|
+
Accordion.new(self, opts, &block)
|
39
|
+
end
|
40
|
+
|
41
|
+
# @description
|
42
|
+
# - Creates a group of Accordions that stay in sync with each other.
|
43
|
+
# One opens, the other closes.
|
44
|
+
#
|
45
|
+
# <code>
|
46
|
+
# <%= accordion_group_helper do |grp| %>
|
47
|
+
# <%= grp.accordion do |a| %>
|
48
|
+
# <%= a.header class: 'text-white bg-primary' do %>
|
49
|
+
# // Some HTML or Ruby
|
50
|
+
# <% end %>
|
51
|
+
# <%= a.body %>
|
52
|
+
# // Some HTML or Ruby
|
53
|
+
# <% end %>
|
54
|
+
# <% end %>
|
55
|
+
#
|
56
|
+
# <%= grp.accordion do |a| %>
|
57
|
+
# <%= a.header class: 'text-white bg-danger' do %>
|
58
|
+
# // Some HTML or Ruby
|
59
|
+
# <% end %>
|
60
|
+
# <%= a.body %>
|
61
|
+
# // Some HTML or Ruby
|
62
|
+
# <% end %>
|
63
|
+
# <% end %>
|
64
|
+
# <% end $>
|
65
|
+
# </code>
|
66
|
+
#
|
67
|
+
# @param [Mixed] args
|
68
|
+
# @return [Accordion]
|
69
|
+
#
|
70
|
+
def accordion_group_helper(*args, &block)
|
71
|
+
AccordionGroup.new(self, *args, &block)
|
72
|
+
end
|
73
|
+
|
74
|
+
# @description
|
75
|
+
# - Creates an Alert component.
|
76
|
+
#
|
77
|
+
# <code>
|
78
|
+
# <%= alert_helper :danger, dismissble: true do %>
|
79
|
+
# Something went wrong with your model data...
|
80
|
+
# <% end %>
|
81
|
+
# </code>
|
82
|
+
#
|
83
|
+
# @params [Symbol|String|Hash|NilClass] *args
|
84
|
+
# @return [String]
|
85
|
+
#
|
86
|
+
def alert_helper(*args, &block)
|
87
|
+
Alert.new(self, *args, &block)
|
88
|
+
end
|
89
|
+
|
90
|
+
# @description
|
91
|
+
# - Creates a badge component. Bades have a context variable. Providing nothing
|
92
|
+
# will give you the `secondary` context.
|
93
|
+
#
|
94
|
+
# <code>
|
95
|
+
# <li>
|
96
|
+
# Messages: <%= badge_helper(:primary) { @messages.count } %>
|
97
|
+
# </li>
|
98
|
+
# <li>
|
99
|
+
# Notifications: <%= badge_healper { @notifications.count } %>
|
100
|
+
# </li>
|
101
|
+
# </code>
|
102
|
+
#
|
103
|
+
# @params [Symbol|String|Hash|NilClass] *args
|
104
|
+
# @return [String]
|
105
|
+
#
|
106
|
+
def badge_helper(*args, &block)
|
107
|
+
Badge.new(self, *args, &block)
|
108
|
+
end
|
109
|
+
|
110
|
+
# @description
|
111
|
+
# - Creates a Card component.
|
112
|
+
#
|
113
|
+
#
|
114
|
+
# <code>
|
115
|
+
#
|
116
|
+
# - Regular
|
117
|
+
#
|
118
|
+
# <%= card_helper do |c| %>
|
119
|
+
# <%= c.header class: 'text-white bg-primary' do %>
|
120
|
+
# <h4>This is the header...</h4>
|
121
|
+
# <% end %>
|
122
|
+
# <%= c.body do %>
|
123
|
+
# <%= c.title { 'This is the title' } %>
|
124
|
+
# <%= c.text { 'This card body' } %>
|
125
|
+
# <ul>
|
126
|
+
# <% [1, 2, 3].each do |x| %>
|
127
|
+
# <li>Item: <%= x %></li>
|
128
|
+
# <% end %>
|
129
|
+
# </ul>
|
130
|
+
# <% end %>
|
131
|
+
# <%= c.footer do %>
|
132
|
+
# This is the footer...
|
133
|
+
# <% end %>
|
134
|
+
# <% end %>
|
135
|
+
#
|
136
|
+
# - Horizontal
|
137
|
+
#
|
138
|
+
# <div class="row">
|
139
|
+
# <div class="col-sm mt-3 mb-3">
|
140
|
+
# <%= card_helper do |c| %>
|
141
|
+
# <div class="row no-gutters">
|
142
|
+
# <div class="col-md-4">
|
143
|
+
# <%= image_tag 'placeholder.svg', class: 'card-img' %>
|
144
|
+
# </div>
|
145
|
+
# <div class="col-md-8">
|
146
|
+
# <%= c.body do %>
|
147
|
+
# <%= c.title { "Card title" } %>
|
148
|
+
# <%= c.text { "This is a wider card with supporting text below as a natural lead-in to additional content." } %>
|
149
|
+
# <%= c.text do %>
|
150
|
+
# <small class="text-muted">Last updated 3 mins ago</small>
|
151
|
+
# <% end %>
|
152
|
+
# <% end %>
|
153
|
+
# </div>
|
154
|
+
# </div>
|
155
|
+
# <% end %>
|
156
|
+
# </div>
|
157
|
+
# </div>
|
158
|
+
# </code>
|
159
|
+
#
|
160
|
+
# @param [Hash] opts
|
161
|
+
# @return [String]
|
162
|
+
#
|
163
|
+
def card_helper(opts = {}, &block)
|
164
|
+
Card.new(self, opts, &block)
|
165
|
+
end
|
166
|
+
|
167
|
+
# @description
|
168
|
+
# - Builds a card group.
|
169
|
+
#
|
170
|
+
# <code>
|
171
|
+
# <%= card_group_helper do |group| %>
|
172
|
+
# <%= group.card do |c| %>
|
173
|
+
# <%= c.body do %>
|
174
|
+
# <%= c.title { 'This is the title one' } %>
|
175
|
+
# <%= c.text { 'This card body' } %>
|
176
|
+
# <ul>
|
177
|
+
# <% [1, 2, 3, 4, 5, 6, 7].each do |x| %>
|
178
|
+
# <li>Item: <%= x %></li>
|
179
|
+
# <% end %>
|
180
|
+
# </ul>
|
181
|
+
# <% end %>
|
182
|
+
# <%= c.footer do %>
|
183
|
+
# This is the footer...
|
184
|
+
# <% end %>
|
185
|
+
# <% end %>
|
186
|
+
#
|
187
|
+
# <%= group.card do |c| %>
|
188
|
+
# <%= c.body do %>
|
189
|
+
# <%= c.title { 'This is the title two' } %>
|
190
|
+
# <%= c.text { 'This card body' } %>
|
191
|
+
# <ul>
|
192
|
+
# <% [1, 2, 3].each do |x| %>
|
193
|
+
# <li>Item: <%= x %></li>
|
194
|
+
# <% end %>
|
195
|
+
# </ul>
|
196
|
+
# <% end %>
|
197
|
+
# <%= c.footer do %>
|
198
|
+
# This is the footer...
|
199
|
+
# <% end %>
|
200
|
+
# <% end %>
|
201
|
+
#
|
202
|
+
# <%= group.card do |c| %>
|
203
|
+
# <%= c.body do %>
|
204
|
+
# <%= c.title { 'This is the title three' } %>
|
205
|
+
# <%= c.text { 'This card body' } %>
|
206
|
+
# <ul>
|
207
|
+
# <% [1, 2, 3].each do |x| %>
|
208
|
+
# <li>Item: <%= x %></li>
|
209
|
+
# <% end %>
|
210
|
+
# </ul>
|
211
|
+
# <% end %>
|
212
|
+
# <%= c.footer do %>
|
213
|
+
# This is the footer...
|
214
|
+
# <% end %>
|
215
|
+
# <% end %>
|
216
|
+
# <% end %>
|
217
|
+
# </code>
|
218
|
+
#
|
219
|
+
# @param [Hash] opts
|
220
|
+
# @return [String]
|
221
|
+
#
|
222
|
+
def card_group_helper(opts = {}, &block)
|
223
|
+
CardGroup.new(self, opts, &block)
|
224
|
+
end
|
225
|
+
|
226
|
+
# @description
|
227
|
+
# - Builds a card deck.
|
228
|
+
#
|
229
|
+
# <code>
|
230
|
+
# <%= card_deck_helper do |deck| %>
|
231
|
+
# <%= deck.card do |c| %>
|
232
|
+
# <%= c.body do %>
|
233
|
+
# <%= c.title { 'This is the title one' } %>
|
234
|
+
# <%= c.text { 'This card body' } %>
|
235
|
+
# <ul>
|
236
|
+
# <% [1, 2, 3, 4, 5, 6, 7].each do |x| %>
|
237
|
+
# <li>Item: <%= x %></li>
|
238
|
+
# <% end %>
|
239
|
+
# </ul>
|
240
|
+
# <% end %>
|
241
|
+
# <%= c.footer do %>
|
242
|
+
# This is the footer...
|
243
|
+
# <% end %>
|
244
|
+
# <% end %>
|
245
|
+
#
|
246
|
+
# <%= deck.card do |c| %>
|
247
|
+
# <%= c.body do %>
|
248
|
+
# <%= c.title { 'This is the title two' } %>
|
249
|
+
# <%= c.text { 'This card body' } %>
|
250
|
+
# <ul>
|
251
|
+
# <% [1, 2, 3].each do |x| %>
|
252
|
+
# <li>Item: <%= x %></li>
|
253
|
+
# <% end %>
|
254
|
+
# </ul>
|
255
|
+
# <% end %>
|
256
|
+
# <%= c.footer do %>
|
257
|
+
# This is the footer...
|
258
|
+
# <% end %>
|
259
|
+
# <% end %>
|
260
|
+
#
|
261
|
+
# <%= deck.card do |c| %>
|
262
|
+
# <%= c.body do %>
|
263
|
+
# <%= c.title { 'This is the title three' } %>
|
264
|
+
# <%= c.text { 'This card body' } %>
|
265
|
+
# <ul>
|
266
|
+
# <% [1, 2, 3].each do |x| %>
|
267
|
+
# <li>Item: <%= x %></li>
|
268
|
+
# <% end %>
|
269
|
+
# </ul>
|
270
|
+
# <% end %>
|
271
|
+
# <%= c.footer do %>
|
272
|
+
# This is the footer...
|
273
|
+
# <% end %>
|
274
|
+
# <% end %>
|
275
|
+
# <% end %>
|
276
|
+
# </code>
|
277
|
+
#
|
278
|
+
# @param [Hash] opts
|
279
|
+
# @return [String]
|
280
|
+
#
|
281
|
+
def card_deck_helper(opts = {}, &block)
|
282
|
+
CardDeck.new(self, opts, &block)
|
283
|
+
end
|
284
|
+
|
285
|
+
# @description
|
286
|
+
# - Builds a card column.
|
287
|
+
#
|
288
|
+
# <code>
|
289
|
+
# <%= card_column_helper do |column| %>
|
290
|
+
# <%= column.card do |c| %>
|
291
|
+
# <%= c.body do %>
|
292
|
+
# <%= c.title { 'This is the title one' } %>
|
293
|
+
# <%= c.text { 'This card body' } %>
|
294
|
+
# <ul>
|
295
|
+
# <% [1, 2, 3, 4, 5, 6, 7].each do |x| %>
|
296
|
+
# <li>Item: <%= x %></li>
|
297
|
+
# <% end %>
|
298
|
+
# </ul>
|
299
|
+
# <% end %>
|
300
|
+
# <%= c.footer do %>
|
301
|
+
# This is the footer...
|
302
|
+
# <% end %>
|
303
|
+
# <% end %>
|
304
|
+
#
|
305
|
+
# <%= column.card do |c| %>
|
306
|
+
# <%= c.body do %>
|
307
|
+
# <%= c.title { 'This is the title two' } %>
|
308
|
+
# <%= c.text { 'This card body' } %>
|
309
|
+
# <ul>
|
310
|
+
# <% [1, 2, 3].each do |x| %>
|
311
|
+
# <li>Item: <%= x %></li>
|
312
|
+
# <% end %>
|
313
|
+
# </ul>
|
314
|
+
# <% end %>
|
315
|
+
# <%= c.footer do %>
|
316
|
+
# This is the footer...
|
317
|
+
# <% end %>
|
318
|
+
# <% end %>
|
319
|
+
#
|
320
|
+
# <%= column.card do |c| %>
|
321
|
+
# <%= c.body do %>
|
322
|
+
# <%= c.title { 'This is the title three' } %>
|
323
|
+
# <%= c.text { 'This card body' } %>
|
324
|
+
# <ul>
|
325
|
+
# <% [1, 2, 3].each do |x| %>
|
326
|
+
# <li>Item: <%= x %></li>
|
327
|
+
# <% end %>
|
328
|
+
# </ul>
|
329
|
+
# <% end %>
|
330
|
+
# <%= c.footer do %>
|
331
|
+
# This is the footer...
|
332
|
+
# <% end %>
|
333
|
+
# <% end %>
|
334
|
+
# <% end %>
|
335
|
+
# </code>
|
336
|
+
#
|
337
|
+
# @param [Hash] opts
|
338
|
+
# @return [String]
|
339
|
+
#
|
340
|
+
def card_column_helper(opts = {}, &block)
|
341
|
+
CardColumn.new(self, opts, &block)
|
342
|
+
end
|
343
|
+
|
344
|
+
# @description
|
345
|
+
# - Generates a Dropdown component. Default type `:dropdown`. For inline buttons, use
|
346
|
+
# `:group`.
|
347
|
+
#
|
348
|
+
# <code>
|
349
|
+
# <%= dropdown_helper do |dropdown| %>
|
350
|
+
# <%= dropdown.button(:primary) { "Action" } %>
|
351
|
+
# <%= dropdown.menu do |menu| %>
|
352
|
+
# <%= menu.link 'Edit', '#' %>
|
353
|
+
# <%= menu.link 'Delete', '#' %>
|
354
|
+
# <%= menu.text 'Static text' %>
|
355
|
+
# <% end %>
|
356
|
+
# <% end %>
|
357
|
+
#
|
358
|
+
# <%= dropdown_helper :group, class: 'dropright' do |dropdown| %>
|
359
|
+
# <button type="button" class="btn btn-danger">Action 2</button>
|
360
|
+
# <%= dropdown.button(:danger, split: true) %>
|
361
|
+
# <%= dropdown.menu do |menu| %>
|
362
|
+
# <%= menu.header "Crud operations" %>
|
363
|
+
# <%= menu.divider %>
|
364
|
+
# <%= menu.link 'Edit', '#' %>
|
365
|
+
# <%= menu.link 'Delete', '#' %>
|
366
|
+
# <% end %>
|
367
|
+
# <% end %>
|
368
|
+
#
|
369
|
+
# <%= dropdown_helper do |dropdown| %>
|
370
|
+
# <%= dropdown.button :primary do %>
|
371
|
+
# Login
|
372
|
+
# <% end %>
|
373
|
+
# <%= dropdown.menu do |menu| %>
|
374
|
+
# <form class="px-4 py-3">
|
375
|
+
# <div class="form-group">
|
376
|
+
# <label for="exampleDropdownFormEmail1">Email address</label>
|
377
|
+
# <input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com">
|
378
|
+
# </div>
|
379
|
+
# <div class="form-group">
|
380
|
+
# <label for="exampleDropdownFormPassword1">Password</label>
|
381
|
+
# <input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
|
382
|
+
# </div>
|
383
|
+
# <div class="form-group">
|
384
|
+
# <div class="form-check">
|
385
|
+
# <input type="checkbox" class="form-check-input" id="dropdownCheck">
|
386
|
+
# <label class="form-check-label" for="dropdownCheck">
|
387
|
+
# Remember me
|
388
|
+
# </label>
|
389
|
+
# </div>
|
390
|
+
# </div>
|
391
|
+
# <button type="submit" class="btn btn-primary">Sign in</button>
|
392
|
+
# </form>
|
393
|
+
# <%= menu.divider %>
|
394
|
+
# <%= menu.link "New around here? Sign up", "#" %>
|
395
|
+
# <%= menu.link "Forgot password", "#" %>
|
396
|
+
# <% end %>
|
397
|
+
# <% end %>
|
398
|
+
# </code>
|
399
|
+
#
|
400
|
+
# @param [Mixed] args
|
401
|
+
# @return [String]
|
402
|
+
#
|
403
|
+
def dropdown_helper(*args, &block)
|
404
|
+
Dropdown.new(self, *args, &block)
|
405
|
+
end
|
406
|
+
|
407
|
+
# @description
|
408
|
+
# - Generates Modal windows.
|
409
|
+
#
|
410
|
+
# <code>
|
411
|
+
# <%= modal_helper id: 'exampleModal' do |m| %>
|
412
|
+
# <%= m.header do %>
|
413
|
+
# <%= m.title { 'Example Modal' } %>
|
414
|
+
# <%= m.close_button %>
|
415
|
+
# <% end %>
|
416
|
+
# <%= m.body do %>
|
417
|
+
# Lorem ipsum dolor sit amet consectetur adipisicing elit. Vel nisi tempora, eius iste sit nobis
|
418
|
+
# earum in harum optio dolore explicabo. Eveniet reprehenderit harum itaque ad fuga beatae, quasi
|
419
|
+
# sequi! Laborum ea porro nihil ipsam repudiandae vel harum voluptates minima corrupti unde quas,
|
420
|
+
# dolore possimus doloribus voluptatem sint fuga dolores odio dignissimos at molestias earum.
|
421
|
+
# <% end %>
|
422
|
+
# <%= m.footer do %>
|
423
|
+
# <%= m.close_button class: 'btn btn-secondary' do %>
|
424
|
+
# Close
|
425
|
+
# <% end %>
|
426
|
+
# <% end %>
|
427
|
+
# <% end %>
|
428
|
+
# </code>
|
429
|
+
#
|
430
|
+
# @param [Hash] opts
|
431
|
+
# @return [String]
|
432
|
+
#
|
433
|
+
def modal_helper(opts = {}, &block)
|
434
|
+
Modal.new(self, opts, &block)
|
435
|
+
end
|
436
|
+
|
437
|
+
# @description
|
438
|
+
# - Generates Nav components.
|
439
|
+
#
|
440
|
+
# <code>
|
441
|
+
# <%= nav_helper do |nav| %>
|
442
|
+
# <%= nav.link "Item 1", "https://www.google.com" %>
|
443
|
+
# <%= nav.link "Item 2", "#" %>
|
444
|
+
# <%= nav.link "Item 3", "#" %>
|
445
|
+
# <%= nav.dropdown :more do |menu| %>
|
446
|
+
# <%= menu.link 'People', '#' %>
|
447
|
+
# <%= menu.link 'Records', '#' %>
|
448
|
+
# <% end %>
|
449
|
+
#
|
450
|
+
# <%= nav.dropdown "More 2" do |menu| %>
|
451
|
+
# <%= menu.link 'People', '#' %>
|
452
|
+
# <%= menu.link 'Records', '#' %>
|
453
|
+
# <% end %>
|
454
|
+
# <% end %>
|
455
|
+
# </code>
|
456
|
+
#
|
457
|
+
# @param [Hash] opts
|
458
|
+
# @return [String]
|
459
|
+
#
|
460
|
+
def nav_helper(opts = {}, &block)
|
461
|
+
Nav.new(self, opts, &block)
|
462
|
+
end
|
463
|
+
|
464
|
+
# @description
|
465
|
+
# - Generates a Tab component.
|
466
|
+
#
|
467
|
+
# <code>
|
468
|
+
# <%= tab_helper do |tab| %>
|
469
|
+
# <%= tab.nav do |nav| %>
|
470
|
+
# <%= nav.item :item1 do %>
|
471
|
+
# Item 1
|
472
|
+
# <% end %>
|
473
|
+
# <%= nav.item(:item2, class: 'active') { "Item 2" } %>
|
474
|
+
# <%= nav.item(:item3) { "Item 3" } %>
|
475
|
+
# <%= nav.item :item4 %>
|
476
|
+
# <%= nav.dropdown 'More' do |dropdown| %>
|
477
|
+
# <%= dropdown.item :item5 %>
|
478
|
+
# <%= dropdown.item(:item6) { 'Item 6' } %>
|
479
|
+
# <% end %>
|
480
|
+
# <% end %>
|
481
|
+
#
|
482
|
+
# <%= tab.content do |content| %>
|
483
|
+
# <%= content.pane :item1, class: 'mt-3' do %>
|
484
|
+
# Content 1
|
485
|
+
# <% end %>
|
486
|
+
#
|
487
|
+
# <%= content.pane :item2, class: 'active mt-3' do %>
|
488
|
+
# Content 2
|
489
|
+
# <% end %>
|
490
|
+
#
|
491
|
+
# <%= content.pane :item3, class: 'mt-3' do %>
|
492
|
+
# Content 3
|
493
|
+
# <% end %>
|
494
|
+
#
|
495
|
+
# <%= content.pane :item4, class: 'mt-3' do %>
|
496
|
+
# Content 4
|
497
|
+
# <% end %>
|
498
|
+
#
|
499
|
+
# <%= content.pane :item5, class: 'mt-3' do %>
|
500
|
+
# Content 5
|
501
|
+
# <% end %>
|
502
|
+
#
|
503
|
+
# <%= content.pane :item6, class: 'mt-3' do %>
|
504
|
+
# Content 6
|
505
|
+
# <% end %>
|
506
|
+
# <% end %>
|
507
|
+
# <% end %>
|
508
|
+
# </code>
|
509
|
+
#
|
510
|
+
def tab_helper(*args, &block)
|
511
|
+
Tab.new(self, *args, &block)
|
512
|
+
end
|
513
|
+
|
514
|
+
# @description
|
515
|
+
# - Generates spinner annimations.
|
516
|
+
#
|
517
|
+
# <code>
|
518
|
+
# <%= spinner_helper class: 'text-warning' %>
|
519
|
+
# <%= spinner_helper type: :grow, class: 'text-danger', id: 'loadingRecords' %>
|
520
|
+
# </code>
|
521
|
+
#
|
522
|
+
def spinner_helper(*args, &block)
|
523
|
+
Spinner.new(self, *args, &block)
|
524
|
+
end
|
5
525
|
end
|