effective_bootstrap 0.12.7 → 0.13.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18aa82bffaabfcab3bd340de2d1125a8a6111e5a09d9ddb921abf06fac1bc99e
|
4
|
+
data.tar.gz: 95f1b53bfa7e32dcd5c49a769b5e58c824becf5ce098a50ce61c874e37e7a31c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0750f84d089f5c28d599ba92ab2c9b957c83d3e28abc02b5bc727317954152278b303581597e0b2ba1f1b9284ec0b0b840b67854485c58dc8e3354119be5fa69
|
7
|
+
data.tar.gz: 1849f908e4a40614cc24f27465b12185d49584d982fa243cf1e9e681ac19df68b88ec67b3d8cf5271a203a6f50c6c43ebeb6108d26d6bfb661119dc60f9449e9
|
@@ -1,18 +1,37 @@
|
|
1
|
+
// Set the document hash to the tab href
|
2
|
+
$(document).on('show.bs.tab', function (e) {
|
3
|
+
history.replaceState(null, null, '#' + e.target.getAttribute('id'));
|
4
|
+
});
|
5
|
+
|
6
|
+
// Display the tab based on form errors, the document hash, or ?tab= params
|
1
7
|
$(document).ready(function() {
|
2
|
-
var
|
8
|
+
var href = '';
|
3
9
|
|
4
|
-
|
5
|
-
$(".nav.nav-tabs").find("a[href^='#" + $tab_with_error.attr('id') + "']").tab('show');
|
6
|
-
return true;
|
10
|
+
var $tab_with_error = $(".form-control.is-invalid").first().closest('.tab-pane')
|
7
11
|
|
12
|
+
if ($tab_with_error.length > 0) {
|
13
|
+
href = $tab_with_error.attr('id')
|
14
|
+
} else if (document.location.hash.length > 0) {
|
15
|
+
var hash = document.location.hash
|
16
|
+
if(hash.startsWith('#tab-')) { href = hash.replace('#tab-', '') }
|
8
17
|
} else if (document.location.search.length > 0) {
|
9
|
-
var
|
10
|
-
if(
|
18
|
+
var param = new URLSearchParams(document.location.search).get('tab') || ''
|
19
|
+
if(param.length > 0) { href = param }
|
20
|
+
}
|
21
|
+
|
22
|
+
if (href.length > 0) {
|
23
|
+
var $tab = $(".nav.nav-tabs").find("a[href^='#" + href + "']")
|
11
24
|
|
12
|
-
$('.
|
25
|
+
$tab.parents('.tab-pane').each (function() {
|
26
|
+
$('.nav.nav-tabs').find("a[href^='#" + $(this).attr('id') + "']").tab('show')
|
27
|
+
})
|
28
|
+
|
29
|
+
$tab.tab('show')
|
13
30
|
}
|
14
31
|
});
|
15
32
|
|
33
|
+
|
34
|
+
// Click tab button
|
16
35
|
$(document).on('click', '[data-click-tab]', function(event) {
|
17
36
|
event.preventDefault();
|
18
37
|
|
@@ -64,15 +64,17 @@ module EffectiveBootstrapHelper
|
|
64
64
|
# = card('title do')
|
65
65
|
# %p Stuff
|
66
66
|
# = card('Stuff', header: 'header title')
|
67
|
-
def card(
|
67
|
+
def card(resource = nil, opts = {}, &block)
|
68
68
|
raise('expected a block') unless block_given?
|
69
69
|
|
70
|
-
if
|
71
|
-
opts =
|
70
|
+
if resource.kind_of?(Hash)
|
71
|
+
opts = resource; resource = nil
|
72
72
|
end
|
73
73
|
|
74
|
+
return if resource.kind_of?(Class) && !EffectiveResources.authorized?(self, :index, resource)
|
75
|
+
|
74
76
|
header = opts.delete(:header)
|
75
|
-
title = opts.delete(:title) || effective_bootstrap_human_name(
|
77
|
+
title = opts.delete(:title) || opts.delete(:label) || effective_bootstrap_human_name(resource, plural: (opts.key?(:plural) ? opts.delete(:plural) : true))
|
76
78
|
|
77
79
|
content_tag(:div, merge_class_key(opts, 'card mb-4')) do
|
78
80
|
header = content_tag(:div, header, class: 'card-header') if header.present?
|
@@ -316,7 +318,7 @@ module EffectiveBootstrapHelper
|
|
316
318
|
def nav_link_to(resource, path, opts = {})
|
317
319
|
return if resource.kind_of?(Class) && !EffectiveResources.authorized?(self, :index, resource)
|
318
320
|
|
319
|
-
label = opts.delete(:label) || effective_bootstrap_human_name(resource, plural: true, prefer_model_name: true)
|
321
|
+
label = opts.delete(:label) || effective_bootstrap_human_name(resource, plural: (opts.key?(:plural) ? opts.delete(:plural) : true), prefer_model_name: true)
|
320
322
|
|
321
323
|
if @_nav_mode == :dropdown # We insert dropdown-items
|
322
324
|
return link_to(label, path, merge_class_key(opts, 'dropdown-item'))
|
@@ -596,12 +598,13 @@ module EffectiveBootstrapHelper
|
|
596
598
|
|
597
599
|
NUMBERS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
|
598
600
|
|
599
|
-
def tab(
|
600
|
-
|
601
|
+
def tab(resource, opts = {}, &block)
|
602
|
+
return if resource.kind_of?(Class) && !EffectiveResources.authorized?(self, :index, resource)
|
603
|
+
label = opts.delete(:label) || effective_bootstrap_human_name(resource, plural: (opts.key?(:plural) ? opts.delete(:plural) : true), prefer_model_name: true)
|
601
604
|
|
602
605
|
(@_tab_labels.push(label) and return) if @_tab_mode == :validate
|
603
606
|
|
604
|
-
controls =
|
607
|
+
controls = opts.delete(:controls) || label.to_s.parameterize.gsub('_', '-')
|
605
608
|
controls = "item-#{controls}" if NUMBERS.include?(controls[0]) # Can't start with a number
|
606
609
|
controls = controls[1..-1] if controls[0] == '#'
|
607
610
|
controls = "#{controls}-#{@_tab_unique}" if @_tab_unique
|
@@ -617,7 +620,7 @@ module EffectiveBootstrapHelper
|
|
617
620
|
content_tag(:a, label, id: ('tab-' + controls), class: ['nav-link', ('active' if active)].compact.join(' '), href: '#' + controls, 'aria-controls': controls, 'aria-selected': active.to_s, 'data-toggle': 'tab', role: 'tab')
|
618
621
|
end
|
619
622
|
else # Inserting the content into the tab itself
|
620
|
-
classes = ['tab-pane', 'fade', ('show active' if active),
|
623
|
+
classes = ['tab-pane', 'fade', ('show active' if active), opts[:class].presence].compact.join(' ')
|
621
624
|
content_tag(:div, id: controls, class: classes, role: 'tabpanel', 'aria-labelledby': ('tab-' + controls), 'data-tab-label': label) do
|
622
625
|
yield
|
623
626
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_bootstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03
|
11
|
+
date: 2023-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|