adminterface 0.2.1 → 0.2.2
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/README.md +1 -1
- data/Rakefile +1 -1
- data/lib/adminterface/extensions/base_controller.rb +16 -12
- data/lib/adminterface/extensions/view_helpers/alert_helper.rb +3 -1
- data/lib/adminterface/extensions/views/components/dropdown_menu.rb +4 -1
- data/lib/adminterface/extensions/views/components/menu_item.rb +8 -3
- data/lib/adminterface/extensions/views/components/tabs.rb +38 -13
- data/lib/adminterface/extensions/views/header.rb +2 -1
- data/lib/adminterface/extensions/views/pages/base.rb +2 -1
- data/lib/adminterface/initializers/configurations.rb +1 -1
- data/lib/adminterface/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b30a8aff4bfb6cf7d7b27a339506303115d5405b0469235a8bc30b742dfc83d
|
4
|
+
data.tar.gz: fb9a449e608873ef279011a2aa28842c0ea58ebffe536c2e5dd5ea86073554bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa068e11984acb0479d6cf5b91b9af4ca200da51fd5eca97db028350cf5aac3069c5f1d31fd02232e0b0a8f2cb265e9f93ce87d24bb9c86b8dbbd8daec7362e8
|
7
|
+
data.tar.gz: 38bd9d91f3748df7c4e81482eccf9262e8426aaf02be1a7014be6ef9a4074432608688dabd3ae0b4b37cd3fa8e9ffb68b22fb96e26e7322539cc1cbfcd408e82
|
data/README.md
CHANGED
@@ -50,7 +50,7 @@ Check our [website](https://adminterface.io) to find in-depth documentation for
|
|
50
50
|
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
51
51
|
|
52
52
|
## License
|
53
|
-
Adminterface is free for personal and non-commercial use and with a yearly subscription for commercial purposes. See
|
53
|
+
Adminterface is free for personal and non-commercial use and with a yearly subscription for commercial purposes. See our [Terms of Service in full text](LICENSE.md) for more information.
|
54
54
|
|
55
55
|
### For Commerical License
|
56
56
|
Get a license at https://adminterface.io/pricing, then create and add the `license_key` into the following file in your project:
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ task :prepare_assets do
|
|
18
18
|
system "rm -rf test/dummy/public/packs"
|
19
19
|
system "rm -rf test/dummy/public/packs-test"
|
20
20
|
system "yarn install --frozen-lockfile"
|
21
|
-
system "
|
21
|
+
system "cd test/dummy && yarn install --frozen-lockfile"
|
22
22
|
end
|
23
23
|
|
24
24
|
# Generate dependency licenses
|
@@ -9,11 +9,19 @@ module Adminterface
|
|
9
9
|
|
10
10
|
def set_resource_scope
|
11
11
|
session[:resource_scope] = {
|
12
|
-
controller:
|
13
|
-
action: action_name
|
12
|
+
controller: controller_path,
|
13
|
+
action: action_name_pairing(action_name)
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
17
|
+
def action_name_pairing(name)
|
18
|
+
case name
|
19
|
+
when "create" then "new"
|
20
|
+
when "update" then "edit"
|
21
|
+
else name
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
17
25
|
def reset_tab
|
18
26
|
params.delete(:tab)
|
19
27
|
params.delete(:anchor_id)
|
@@ -26,30 +34,26 @@ module Adminterface
|
|
26
34
|
def same_controller?
|
27
35
|
return true if resource_scope[:controller].blank?
|
28
36
|
|
29
|
-
resource_scope[:controller] ==
|
37
|
+
resource_scope[:controller] == controller_path
|
30
38
|
end
|
31
39
|
|
32
40
|
def same_action?
|
33
|
-
|
34
|
-
|
35
|
-
case resource_scope[:action]
|
36
|
-
when "edit", "update" then %w[edit update].include? action_name
|
37
|
-
else action_name == resource_scope[:action]
|
38
|
-
end
|
41
|
+
resource_scope[:action].presence &&
|
42
|
+
action_name_pairing(action_name).eql?(resource_scope[:action])
|
39
43
|
end
|
40
44
|
|
41
45
|
def resource_scope
|
42
|
-
session.fetch(:resource_scope, {})
|
46
|
+
session.fetch(:resource_scope, {}).with_indifferent_access
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
48
52
|
# Overwrite activeadmin/lib/active_admin/base_controller.rb
|
49
|
-
|
53
|
+
ActiveAdmin.after_load do
|
50
54
|
ActiveAdmin::BaseController.class_eval do
|
51
55
|
prepend Adminterface::Extensions::BaseController
|
52
56
|
before_action :reset_tab, if: :should_reset_tab?
|
53
|
-
|
57
|
+
before_action :set_resource_scope
|
54
58
|
end
|
55
59
|
end
|
@@ -4,7 +4,9 @@ module Adminterface
|
|
4
4
|
module AlertHelper
|
5
5
|
def flashes_html
|
6
6
|
flash.each do |type, msg|
|
7
|
-
concat(content_tag(:div, msg,
|
7
|
+
concat(content_tag(:div, msg,
|
8
|
+
class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]}".squish,
|
9
|
+
role: "alert"))
|
8
10
|
end
|
9
11
|
nil
|
10
12
|
end
|
@@ -47,7 +47,10 @@ ActiveAdmin::Views::DropdownMenu.class_eval do
|
|
47
47
|
button_options[:class] = "#{button_options[:class]} dropdown-toggle".squish
|
48
48
|
options[:class] = "#{options[:class]} dropdown".squish
|
49
49
|
|
50
|
-
@button = build_button(
|
50
|
+
@button = build_button(
|
51
|
+
name,
|
52
|
+
button_options.merge("data-bs-toggle": "dropdown", role: "button", "aria-expanded": "false")
|
53
|
+
)
|
51
54
|
@menu = build_menu(menu_options)
|
52
55
|
|
53
56
|
super(options)
|
@@ -15,8 +15,13 @@ module Adminterface
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
|
18
|
+
def current_item_options(item)
|
19
|
+
return {} unless item.current?(assigns[:current_tab])
|
20
|
+
|
21
|
+
{
|
22
|
+
class: "#{item.html_options[:class]} active".squish,
|
23
|
+
"aria-current": "page"
|
24
|
+
}
|
20
25
|
end
|
21
26
|
end
|
22
27
|
end
|
@@ -51,7 +56,7 @@ ActiveAdmin::Views::MenuItem.class_eval do
|
|
51
56
|
end
|
52
57
|
|
53
58
|
if url
|
54
|
-
item_options = item.html_options.merge(
|
59
|
+
item_options = item.html_options.merge(current_item_options(item)).delete_if { |_k, v| v.blank? }
|
55
60
|
text_node link_to(menu_label, url, **item_options)
|
56
61
|
else
|
57
62
|
span menu_label, item.html_options.merge(class: "navbar-text")
|
@@ -6,20 +6,16 @@ module Adminterface
|
|
6
6
|
def build_menu_item(title, options, &_block)
|
7
7
|
fragment = options.fetch(:id, fragmentize(title))
|
8
8
|
html_options = options.fetch(:html_options, {})
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
link_to title, url_for(tab: fragment, anchor: id, anchor_id: id), class: toggler_class(fragment)
|
13
|
-
else
|
14
|
-
link_to title, "##{fragment}", class: toggler_class(fragment), data: {"bs-toggle": "tab", "bs-target": "##{fragment}"}
|
15
|
-
end
|
9
|
+
|
10
|
+
li html_options.merge(class: "nav-item", role: "presentation") do
|
11
|
+
@http ? link_to_http(title, fragment) : link_to_js(title, fragment)
|
16
12
|
end
|
17
13
|
end
|
18
14
|
|
19
15
|
def build_content_item(title, options, &block)
|
20
16
|
fragment = options.fetch(:id, fragmentize(title))
|
21
|
-
options = options.reverse_merge(id:
|
22
|
-
div(options.merge(
|
17
|
+
options = options.reverse_merge(id: fragment, "aria-labelledby": "#{fragment}-tab")
|
18
|
+
div(options.merge(tab_pane_options(fragment)), &block)
|
23
19
|
end
|
24
20
|
|
25
21
|
def default_css_class
|
@@ -39,12 +35,41 @@ module Adminterface
|
|
39
35
|
|
40
36
|
private
|
41
37
|
|
42
|
-
def
|
43
|
-
|
38
|
+
def link_to_js(title, fragment)
|
39
|
+
options = toggler_options(fragment).merge(data: {"bs-toggle": "tab", "bs-target": "##{fragment}"})
|
40
|
+
link_to(title, "##{fragment}", **options)
|
41
|
+
end
|
42
|
+
|
43
|
+
def link_to_http(title, fragment)
|
44
|
+
params[:tab] ||= @default_tab || fragment
|
45
|
+
|
46
|
+
link_to(title,
|
47
|
+
url_for(controller: resource_scope[:controller],
|
48
|
+
action: resource_scope[:action], tab: fragment, anchor: id, anchor_id: id),
|
49
|
+
**toggler_options(fragment))
|
50
|
+
end
|
51
|
+
|
52
|
+
def resource_scope
|
53
|
+
session.fetch(:resource_scope, {}).with_indifferent_access
|
54
|
+
end
|
55
|
+
|
56
|
+
def toggler_options(fragment)
|
57
|
+
defaults = {id: "#{fragment}-tab", "aria-controls": fragment}
|
58
|
+
options =
|
59
|
+
if current_tab?(fragment)
|
60
|
+
{class: "nav-link active", "aria-selected": "true"}
|
61
|
+
else
|
62
|
+
{class: "nav-link", "aria-selected": "false"}
|
63
|
+
end
|
64
|
+
|
65
|
+
defaults.merge(options)
|
44
66
|
end
|
45
67
|
|
46
|
-
def
|
47
|
-
|
68
|
+
def tab_pane_options(fragment)
|
69
|
+
{
|
70
|
+
class: "tab-pane #{current_tab?(fragment) ? "active" : nil}".squish,
|
71
|
+
role: "tabpanel"
|
72
|
+
}
|
48
73
|
end
|
49
74
|
|
50
75
|
def current_tab?(fragment)
|
@@ -26,7 +26,8 @@ module Adminterface
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def navbar_toggler
|
29
|
-
button(class: "navbar-toggler", 'data-bs-target': "##{ID}",
|
29
|
+
button(class: "navbar-toggler", 'data-bs-target': "##{ID}",
|
30
|
+
'data-bs-toggle': "collapse", "aria-expanded": "false") do
|
30
31
|
span class: "navbar-toggler-icon"
|
31
32
|
end
|
32
33
|
end
|
@@ -102,7 +102,8 @@ module Adminterface
|
|
102
102
|
div class: "flashes" do
|
103
103
|
flash_messages.each do |type, messages|
|
104
104
|
[*messages].each do |message|
|
105
|
-
div class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]} #{flash_dismissible_class}".squish
|
105
|
+
div class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]} #{flash_dismissible_class}".squish,
|
106
|
+
role: "alert" do
|
106
107
|
text_node(message)
|
107
108
|
button(class: "btn-close", "data-bs-dismiss": "alert", "aria-label": "Close") if flash_dismissible?
|
108
109
|
end
|
@@ -25,7 +25,7 @@ module Adminterface
|
|
25
25
|
|
26
26
|
meta_tags = {
|
27
27
|
version: Adminterface::VERSION,
|
28
|
-
viewport: "width=device-width, height=device-height, initial-scale=1.0
|
28
|
+
viewport: "width=device-width, height=device-height, initial-scale=1.0"
|
29
29
|
}
|
30
30
|
|
31
31
|
config.meta_tags_for_logged_out_pages = meta_tags
|
data/lib/adminterface/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adminterface
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- I-Lung Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeadmin
|