pg_rails 7.6.38 → 7.6.39
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/pg_associable/app/javascript/modal_controller.js +3 -0
- data/pg_engine/app/views/pg_engine/base/index.html.slim +3 -0
- data/pg_engine/lib/pg_engine/utils/pg_logger.rb +1 -1
- data/pg_layout/app/assets/stylesheets/sidebar.scss +16 -4
- data/pg_layout/app/lib/navbar.rb +20 -11
- data/pg_layout/app/views/pg_layout/_sidebar.html.slim +20 -2
- data/pg_layout/app/views/pg_layout/_sidebar_mobile.html.slim +1 -1
- data/pg_rails/lib/version.rb +1 -1
- data/pg_scaffold/lib/generators/pg_rails/system_spec/templates/system_spec.rb +6 -3
- 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: 2de59469aa32c2ef73f030ea848179b8941f67a1eb948b72b018cf2d9e7b1b95
|
4
|
+
data.tar.gz: 4311903fb7f15aa7b070e2ac36ff530bc6e4a7750ac011a7843d34a85921483e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37288f9d151624cb72e6c7567e6fdb875d91b5945baf3d66e045c640fa500d3ff3f1a90cbd6bd76aa898562c0c6b8f9d09aceddd287975f456af068b3310cee3
|
7
|
+
data.tar.gz: 63d8f3e1d03d521db97cae73cde5908342bbcd9dc44913289f516ee0c932b63fcdb6e626ed6a575556f04b651315293f7315b5d0e1ed69471f750dfa14fc2375
|
@@ -39,14 +39,17 @@ export default class extends Controller {
|
|
39
39
|
|
40
40
|
this.element.addEventListener('pg:record-updated', (ev) => {
|
41
41
|
if (ev.data.dataset.inline) {
|
42
|
+
// Is an inline edit submit
|
42
43
|
this.reloadTop()
|
43
44
|
ev.stopPropagation()
|
44
45
|
} else {
|
45
46
|
if (ev.data.dataset.reload) {
|
47
|
+
// Must reload modal. Ie: on discard/undiscard
|
46
48
|
this.reload()
|
47
49
|
this.reloadTop()
|
48
50
|
ev.stopPropagation()
|
49
51
|
} else {
|
52
|
+
// Is a traditional form submit
|
50
53
|
this.back(ev)
|
51
54
|
}
|
52
55
|
}
|
@@ -30,6 +30,9 @@
|
|
30
30
|
i.bi.bi-pencil.lh-1
|
31
31
|
= t('pg_engine.base.index.bulk_edit.link', model: clase_modelo)
|
32
32
|
|
33
|
+
/ if turbo stream? && Current.account.present?
|
34
|
+
/ = turbo_stream_from Current.account, @clase_modelo.model_name.plural
|
35
|
+
|
33
36
|
- if action_name == 'archived'
|
34
37
|
.text-center.p-3.text-warning-emphasis.border-bottom
|
35
38
|
div
|
@@ -55,7 +55,7 @@ module PgEngine
|
|
55
55
|
def notify_all(mensaje, type)
|
56
56
|
send_to_logger(mensaje, type)
|
57
57
|
send_to_rollbar(mensaje, type)
|
58
|
-
send_to_stdout(mensaje, type) if ENV.fetch('LOG_TO_STDOUT', nil)
|
58
|
+
send_to_stdout(mensaje, type) if ENV.fetch('LOG_TO_STDOUT', nil) || (Rails.env.test? && type == :debug)
|
59
59
|
save_internal(mensaje, type) if Rails.env.test?
|
60
60
|
nil
|
61
61
|
end
|
@@ -47,10 +47,22 @@ $chevron-color: 200,200,200,.5;
|
|
47
47
|
// background-color: #d2f4ea;
|
48
48
|
}
|
49
49
|
|
50
|
-
.
|
50
|
+
.navbar__nav-button.active {
|
51
51
|
--bs-link-color-rgb: white!important;
|
52
52
|
background-color: tint-color($primary, 17%);
|
53
53
|
}
|
54
|
+
|
55
|
+
.navbar__nav-button[aria-expanded=true] {
|
56
|
+
font-weight: bold;
|
57
|
+
}
|
58
|
+
|
59
|
+
// Child entries
|
60
|
+
#sidebar .collapse-inner {
|
61
|
+
background-color: tint-color($primary, 5%);
|
62
|
+
padding-bottom: 0.1em;
|
63
|
+
padding-top: 0.1em;
|
64
|
+
}
|
65
|
+
|
54
66
|
// Los small-items están deprecados
|
55
67
|
#sidebar {
|
56
68
|
&.opened {
|
@@ -100,7 +112,7 @@ $chevron-color: 200,200,200,.5;
|
|
100
112
|
}
|
101
113
|
}
|
102
114
|
|
103
|
-
.
|
115
|
+
.navbar__nav-button {
|
104
116
|
padding: 0.4em 1.7em;
|
105
117
|
width: 100%;
|
106
118
|
text-align: right;
|
@@ -109,11 +121,11 @@ $chevron-color: 200,200,200,.5;
|
|
109
121
|
.offcanvas-body {
|
110
122
|
padding: 0!important;
|
111
123
|
}
|
112
|
-
.
|
124
|
+
.navbar__nav-button:hover {
|
113
125
|
background-color: tint-color($primary, 20%);
|
114
126
|
}
|
115
127
|
|
116
|
-
.offcanvas .
|
128
|
+
.offcanvas .navbar__nav-button {
|
117
129
|
padding: 0.7em 1.7em;
|
118
130
|
text-align: right;
|
119
131
|
}
|
data/pg_layout/app/lib/navbar.rb
CHANGED
@@ -43,31 +43,40 @@ class Navbar
|
|
43
43
|
bar_data = @yaml_data[key]
|
44
44
|
return [] if bar_data.blank?
|
45
45
|
|
46
|
-
# rubocop:disable Security/Eval
|
47
46
|
# rubocop:disable Style/MultilineBlockChain:
|
48
47
|
orig_idx = 0
|
49
48
|
bar_data.map do |item|
|
50
49
|
orig_idx += 1
|
51
|
-
|
52
|
-
title: item['name'],
|
53
|
-
attributes: item['attributes']&.html_safe,
|
54
|
-
path: eval(item['path']),
|
55
|
-
show: item['policy'] ? eval(item['policy']) : true,
|
56
|
-
priority: item['priority'] || 999_999,
|
57
|
-
orig_idx:
|
58
|
-
}
|
50
|
+
evaluate_node(item, orig_idx)
|
59
51
|
end.sort_by { |a| [a[:priority], a[:orig_idx]] }
|
60
|
-
# rubocop:enable Security/Eval
|
61
52
|
# rubocop:enable Style/MultilineBlockChain:
|
62
53
|
end
|
63
54
|
|
55
|
+
def evaluate_node(item, orig_idx = nil)
|
56
|
+
# rubocop:disable Security/Eval
|
57
|
+
aux = {
|
58
|
+
title: item['name'],
|
59
|
+
attributes: item['attributes']&.html_safe,
|
60
|
+
path: item['path'].present? ? eval(item['path']) : nil,
|
61
|
+
show: item['policy'] ? eval(item['policy']) : true,
|
62
|
+
priority: item['priority'] || 999_999,
|
63
|
+
orig_idx:
|
64
|
+
}
|
65
|
+
# rubocop:enable Security/Eval
|
66
|
+
|
67
|
+
if item[:children].present?
|
68
|
+
aux[:children] = item[:children].map { |it| evaluate_node(it) }
|
69
|
+
end
|
70
|
+
|
71
|
+
aux
|
72
|
+
end
|
73
|
+
|
64
74
|
def all_children_hidden?(entry)
|
65
75
|
entry[:children].all? { |child| child[:show] == false }
|
66
76
|
end
|
67
77
|
|
68
78
|
def any_children_active?(entry, request)
|
69
79
|
entry[:children].any? { |child| active_entry?(child, request) }
|
70
|
-
true
|
71
80
|
# TODO: quitar
|
72
81
|
end
|
73
82
|
|
@@ -6,5 +6,23 @@ div id="sidebar" class="#{@navbar_opened_class} flex-shrink-0 d-none d-#{@breakp
|
|
6
6
|
- @navbar.sidebar.each do |entry|
|
7
7
|
- next if @navbar.hide_entry?(entry)
|
8
8
|
li.mb-1
|
9
|
-
|
10
|
-
= entry[:
|
9
|
+
- if entry[:children].present?
|
10
|
+
- entry_id = "nav-entry-#{entry[:orig_idx]}"
|
11
|
+
- active = @navbar.active_entry?(entry, request)
|
12
|
+
a class="d-inline-flex text-decoration-none navbar__nav-button #{ active ? '' : 'collapsed'} #{entry[:attributes]}" data-bs-toggle="collapse" href="##{entry_id}" role="button" aria-expanded="#{ active ? 'true' : 'false'}" aria-controls=entry_id
|
13
|
+
= entry[:title]
|
14
|
+
- if active
|
15
|
+
span.bi.bi-chevron-down.ms-1 style="font-size: 0.7em"
|
16
|
+
- else
|
17
|
+
span.bi.bi-chevron-right.ms-1 style="font-size: 0.7em"
|
18
|
+
|
19
|
+
.collapse data-turbo-temporary=('true' unless @navbar.active_entry?(entry, request)) class="#{ 'show' if @navbar.active_entry?(entry, request)}" id=entry_id
|
20
|
+
.collapse-inner
|
21
|
+
- entry[:children].each do |child|
|
22
|
+
- next if @navbar.hide_entry?(child)
|
23
|
+
.mb-1
|
24
|
+
a href=child[:path] class="d-inline-flex text-decoration-none navbar__nav-button #{@navbar.active_entry?(child, request) ? 'active' : ''} #{child[:attributes]}"
|
25
|
+
= child[:title]
|
26
|
+
- else
|
27
|
+
a href=entry[:path] class="d-inline-flex text-decoration-none navbar__nav-button #{@navbar.active_entry?(entry, request) ? 'active' : ''} #{entry[:attributes]}"
|
28
|
+
= entry[:title]
|
@@ -10,7 +10,7 @@
|
|
10
10
|
- @navbar.sidebar.each do |entry|
|
11
11
|
- next if @navbar.hide_entry?(entry)
|
12
12
|
li
|
13
|
-
a href=entry[:path] class="
|
13
|
+
a href=entry[:path] class="navbar__nav-button pe-4 text-light #{@navbar.active_entry?(entry, request) ? 'active' : ''} #{entry[:attributes]}"
|
14
14
|
= entry[:title]
|
15
15
|
css:
|
16
16
|
.offcanvas a { text-decoration: none; }
|
data/pg_rails/lib/version.rb
CHANGED
@@ -8,12 +8,15 @@ require 'rails_helper'
|
|
8
8
|
#
|
9
9
|
# DRIVER=selenium BROWSER=firefox rspec
|
10
10
|
describe '<%= name %>' do
|
11
|
+
# include ActionView::RecordIdentifier
|
12
|
+
|
11
13
|
subject(:visitar) do
|
12
|
-
|
14
|
+
path = tpath("/u/t/some_tenanted_path", query_string: false)
|
15
|
+
visit path
|
13
16
|
end
|
14
17
|
|
15
|
-
let(:logged_user) { create :user }
|
16
|
-
let(:account) { ActsAsTenant.current_tenant }
|
18
|
+
let(:logged_user) { create :user, :owner }
|
19
|
+
# let(:account) { ActsAsTenant.current_tenant }
|
17
20
|
|
18
21
|
before do
|
19
22
|
login_as logged_user
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.6.
|
4
|
+
version: 7.6.39
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martín Rosso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-04-
|
11
|
+
date: 2025-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|