pg_rails 7.6.38 → 7.6.40

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: 20a3fea092d9387189d95280d69b7019af848c240e1c8a7a93eab799c9e76b17
4
- data.tar.gz: 454055be44d495543b4dfa061e279661859c323ad61b9f2a5fd5961fe968348f
3
+ metadata.gz: cf260a16e98842bebe950a0d4c3253d6c63f2690a922ec767c04d8a99ae7a0f7
4
+ data.tar.gz: 57dfdff6f3042539d11089edccf7fa32df6c38f86d151256a1536f5efe6d073b
5
5
  SHA512:
6
- metadata.gz: 0ae918536ff74a313ae01832b3836b3df23cf6012c1d9b77fbc9ad148b50cd1d3cfcbdd9a89db89e607ae6eeb60c2b032714e4fd26cec649b0f4ec5347b8bc7e
7
- data.tar.gz: 6cb6ccdc9c247047d2b8a0001387efa332dcd353027d49273176e8d51e13c1f01aa206883cf20409f8cbc449a70818ce25646dd43ac208e6002904654ff99e31
6
+ metadata.gz: e6fa99a2c8881e8f615839ce690c7cb9bf1d3c3ed3cf31f5490641bc253bd2de7b8826ee7c9c2374716dc8b85653db0d066d5bf5dcd4739d41bac81ff2938fbc
7
+ data.tar.gz: 65c53c5d31a893c6700347d16f9e3b2146a82b21ca2b5905fc214ab551ff844c9b9880118f59a1adc030cd8636fffd44908c5032482e28e3c1501dc14041af9e
@@ -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
@@ -1,4 +1,5 @@
1
1
  - content_for(:container_class) { 'container border p-0 my-3' }
2
2
  - content_for(:container_style) { 'max-width: 50em; xborder-left: 1px solid grey' }
3
+ - content_for(:padding_top_class) { 'pt-0' }
3
4
 
4
5
  = render template: 'pg_engine/base/index'
@@ -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,25 @@ $chevron-color: 200,200,200,.5;
47
47
  // background-color: #d2f4ea;
48
48
  }
49
49
 
50
- .pg--nav-button.active {
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
+ background-color: tint-color($primary, 5%);
58
+ }
59
+
60
+ // Child entries
61
+ #sidebar, .offcanvas {
62
+ .collapse-inner {
63
+ background-color: tint-color($primary, 5%);
64
+ padding-bottom: 0.1em;
65
+ padding-top: 0.1em;
66
+ }
67
+ }
68
+
54
69
  // Los small-items están deprecados
55
70
  #sidebar {
56
71
  &.opened {
@@ -100,7 +115,7 @@ $chevron-color: 200,200,200,.5;
100
115
  }
101
116
  }
102
117
 
103
- .pg--nav-button {
118
+ .navbar__nav-button {
104
119
  padding: 0.4em 1.7em;
105
120
  width: 100%;
106
121
  text-align: right;
@@ -109,11 +124,11 @@ $chevron-color: 200,200,200,.5;
109
124
  .offcanvas-body {
110
125
  padding: 0!important;
111
126
  }
112
- .pg--nav-button:hover {
127
+ .navbar__nav-button:hover {
113
128
  background-color: tint-color($primary, 20%);
114
129
  }
115
130
 
116
- .offcanvas .pg--nav-button {
131
+ .offcanvas .navbar__nav-button {
117
132
  padding: 0.7em 1.7em;
118
133
  text-align: right;
119
134
  }
@@ -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
 
@@ -1,6 +1,8 @@
1
1
  - content_for :content do
2
2
  - klass = modal_targeted? ? '' : (yield(:container_class).presence || 'container-fluid')
3
- div class="pt-3 #{klass}" style=yield(:container_style)
3
+ - padding_top_class = yield(:padding_top_class).presence || 'pt-3'
4
+
5
+ div class="#{padding_top_class} #{klass}" style=yield(:container_style)
4
6
  = content_for?(:containerized_content) ? yield(:containerized_content) : yield
5
7
 
6
8
  = render template: 'layouts/pg_layout/base'
@@ -5,6 +5,24 @@ div id="sidebar" class="#{@navbar_opened_class} flex-shrink-0 d-none d-#{@breakp
5
5
  ul.list-unstyled.ps-0.mt-5
6
6
  - @navbar.sidebar.each do |entry|
7
7
  - next if @navbar.hide_entry?(entry)
8
+ - active = @navbar.active_entry?(entry, request)
8
9
  li.mb-1
9
- a href=entry[:path] class="d-inline-flex text-decoration-none pg--nav-button #{@navbar.active_entry?(entry, request) ? 'active' : ''} #{entry[:attributes]}"
10
- = entry[:title]
10
+ - if entry[:children].present?
11
+ - entry_id = "nav-entry-#{entry[:orig_idx]}"
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.align-text-bottom style="font-size: 0.7em"
16
+ - else
17
+ span.bi.bi-chevron-right.ms-1.align-text-bottom style="font-size: 0.7em"
18
+
19
+ .collapse data-turbo-temporary=('true' unless active) class="#{ 'show' if active}" 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 #{active ? 'active' : ''} #{entry[:attributes]}"
28
+ = entry[:title]
@@ -9,9 +9,28 @@
9
9
  ul.list-unstyled.mt-4
10
10
  - @navbar.sidebar.each do |entry|
11
11
  - next if @navbar.hide_entry?(entry)
12
+ - active = @navbar.active_entry?(entry, request)
12
13
  li
13
- a href=entry[:path] class="pg--nav-button pe-4 text-light #{@navbar.active_entry?(entry, request) ? 'active' : ''} #{entry[:attributes]}"
14
- = entry[:title]
14
+ - if entry[:children].present?
15
+ - entry_id = "nav-entry-#{entry[:orig_idx]}"
16
+
17
+ a class="d-inline-flex text-decoration-none navbar__nav-button text-light #{ active ? '' : 'collapsed'} #{entry[:attributes]}" data-bs-toggle="collapse" href="##{entry_id}" role="button" aria-expanded="#{ active ? 'true' : 'false'}" aria-controls=entry_id
18
+ = entry[:title]
19
+ - if active
20
+ span.bi.bi-chevron-down.ms-1.align-text-bottom style="font-size: 0.7em"
21
+ - else
22
+ span.bi.bi-chevron-right.ms-1.align-text-bottom style="font-size: 0.7em"
23
+
24
+ .collapse data-turbo-temporary=('true' unless active) class="#{ 'show' if active}" id=entry_id
25
+ .collapse-inner
26
+ - entry[:children].each do |child|
27
+ - next if @navbar.hide_entry?(child)
28
+ .mb-1
29
+ a href=child[:path] class="d-inline-flex text-decoration-none navbar__nav-button text-light #{@navbar.active_entry?(child, request) ? 'active' : ''} #{child[:attributes]}"
30
+ = child[:title]
31
+ - else
32
+ a href=entry[:path] class="navbar__nav-button pe-4 text-light #{active ? 'active' : ''} #{entry[:attributes]}"
33
+ = entry[:title]
15
34
  css:
16
35
  .offcanvas a { text-decoration: none; }
17
36
  .offcanvas li { xmargin-top: 0.75em; }
@@ -2,6 +2,6 @@
2
2
 
3
3
  # :nocov:
4
4
  module PgRails
5
- VERSION = '7.6.38'
5
+ VERSION = '7.6.40'
6
6
  end
7
7
  # :nocov:
@@ -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
- visit 'some url'
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.38
4
+ version: 7.6.40
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-03 00:00:00.000000000 Z
11
+ date: 2025-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails