avo 3.4.2 → 3.4.4

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: cb42ab88f48186d0bb1c3f058e0ef460bbe8adfa928b6de1dc7b44709a0cc3b2
4
- data.tar.gz: b7538d63d82cccf98f9f225487df2030d6a423c2e2297d49443f869f2b0fed41
3
+ metadata.gz: 0b5aec5e488a238db9609baec7aa5f7b069b9eae298c2fded106bb949eb37591
4
+ data.tar.gz: 7be1a8be6b426ca7fe3a5c388fe962b2e23c11b1a2217700d31999e0dc8adbd2
5
5
  SHA512:
6
- metadata.gz: c6d2389378b306156b20cea6983509f1eca9f6923b026b4d66f8736524b129b59570286d463bcdb64105911e195920bed8b8576066623f91153062c27170d12f
7
- data.tar.gz: 5fd227e9d5eefc30bbaf66ffccde8d00acebe300854d4ad971f34b49fb95cccb6b4ea42e8fd0de59cc61e193f270892428939a8978268414a15c2a50f5a4ab3b
6
+ metadata.gz: 355ca408da59a84b86d8db8f1e1324a9e6d77743d7dc5cea1e65b5c96b1eace78fd30e1f43136530c4fc8e9aac674cf55c7c41ea9cd2ada112b89f986a4b068c
7
+ data.tar.gz: 6f51493ca463f171655ba3ff1b75e77ff141f37b717ab810d646363fe3a966ea4d62b4d71a9ae67ede9f43bd71f4e58808784fb065f0741a4b11947eeab3cca0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (3.4.2)
4
+ avo (3.4.4)
5
5
  actionview (>= 6.1)
6
6
  active_link_to
7
7
  activerecord (>= 6.1)
@@ -534,7 +534,7 @@ GEM
534
534
  websocket-extensions (0.1.5)
535
535
  xpath (3.2.0)
536
536
  nokogiri (~> 1.8)
537
- yard (0.9.34)
537
+ yard (0.9.35)
538
538
  zeitwerk (2.6.13)
539
539
 
540
540
  PLATFORMS
@@ -7102,10 +7102,6 @@ tag.tagify__tag{
7102
7102
  margin-left:2.5rem
7103
7103
  }
7104
7104
 
7105
- .ml-12{
7106
- margin-left:3rem
7107
- }
7108
-
7109
7105
  .ml-2{
7110
7106
  margin-left:0.5rem
7111
7107
  }
@@ -32,16 +32,16 @@
32
32
  >
33
33
  <div data-target="actions-list" class="w-full space divide-y">
34
34
  <% actions.each_with_index do |action, index| %>
35
- <% link, data = action.class.link_arguments(resource: @resource, arguments: action.arguments) %>
36
- <%= link_to link,
35
+ <%= link_to action_path(action),
37
36
  data: {
38
37
  action_name: action.action_name,
38
+ 'turbo-frame': Avo::ACTIONS_TURBO_FRAME_ID,
39
39
  'action': 'click->actions-picker#visitAction',
40
40
  'actions-picker-target': action.standalone ? 'standaloneAction' : 'resourceAction',
41
41
  'disabled': is_disabled?(action),
42
42
  # for some reason InstantClick fetches the URL even if it's prefetched.
43
43
  turbo_prefetch: false,
44
- }.merge(data),
44
+ },
45
45
  title: action.action_name,
46
46
  class: "flex items-center px-4 py-3 w-full font-semibold text-sm hover:bg-primary-100 #{is_disabled?(action) ? 'text-gray-500' : 'text-black'}" do %>
47
47
  <%= svg 'play', class: 'h-5 mr-1 inline pointer-events-none' %> <%= action.action_name %>
@@ -31,6 +31,19 @@ class Avo::ActionsComponent < ViewComponent::Base
31
31
  end
32
32
  end
33
33
 
34
+ # When running an action for one record we should do it on a special path.
35
+ # We do that so we get the `record` param inside the action so we can prefill fields.
36
+ def action_path(action)
37
+ return single_record_path(action) if as_row_control
38
+ return many_records_path(action) unless @resource.has_record_id?
39
+
40
+ if on_record_page?
41
+ single_record_path action
42
+ else
43
+ many_records_path action
44
+ end
45
+ end
46
+
34
47
  # How should the action be displayed by default
35
48
  def is_disabled?(action)
36
49
  return false if action.standalone || as_row_control
@@ -47,4 +60,23 @@ class Avo::ActionsComponent < ViewComponent::Base
47
60
  def on_index_page?
48
61
  !on_record_page?
49
62
  end
63
+
64
+ def single_record_path(action)
65
+ action_url(action, @resource.record_path)
66
+ end
67
+
68
+ def many_records_path(action)
69
+ action_url(action, @resource.records_path)
70
+ end
71
+
72
+ def action_url(action, path)
73
+ Avo::Services::URIService.parse(path)
74
+ .append_paths("actions")
75
+ .append_query(
76
+ {
77
+ action_id: action.to_param,
78
+ arguments: Avo::BaseAction.encode_arguments(action.arguments)
79
+ }.compact
80
+ ).to_s
81
+ end
50
82
  end
@@ -71,8 +71,11 @@
71
71
  <% create_href = create_path(Avo.resource_manager.get_resource_by_model_class(type.to_s)) %>
72
72
  <% if !disabled && create_href.present? %>
73
73
  <%= link_to t("avo.create_new_item", item: type.to_s.downcase),
74
- create_href,
75
- class: "text-sm"
74
+ create_href,
75
+ class: "text-sm",
76
+ data: {
77
+ turbo_prefetch: false
78
+ }
76
79
  %>
77
80
  <% end %>
78
81
  <% end %>
@@ -115,7 +118,13 @@
115
118
  <% end %>
116
119
  <% if field.can_create? %>
117
120
  <% if !disabled && create_path.present? %>
118
- <%= link_to t("avo.create_new_item", item: @field.name.downcase), create_path, class: "text-sm" %>
121
+ <%= link_to t("avo.create_new_item", item: @field.name.downcase),
122
+ create_path,
123
+ class: "text-sm",
124
+ data: {
125
+ turbo_prefetch: false
126
+ }
127
+ %>
119
128
  <% end %>
120
129
  <% end %>
121
130
  <% end %>
@@ -25,7 +25,7 @@
25
25
 
26
26
  <div class="w-full space-y-1">
27
27
  <% dashboards.sort_by { |r| r.navigation_label }.each do |dashboard| %>
28
- <%= render Avo::Sidebar::LinkComponent.new label: dashboard.navigation_label, path: helpers.avo_dashboards.dashboard_path(dashboard) %>
28
+ <%= render Avo::Sidebar::LinkComponent.new label: dashboard.navigation_label, path: Avo::Dashboards::Engine.routes.url_helpers.dashboard_path(dashboard) %>
29
29
  <% end %>
30
30
  </div>
31
31
  </div>
@@ -63,10 +63,16 @@ module Avo
63
63
 
64
64
  # Create resources for each record
65
65
  # Duplicate the @resource before hydration to avoid @resource keeping last record.
66
+ @resource.hydrate(params: params)
66
67
  @resources = @records.map do |record|
67
- @resource.dup.hydrate(record: record, params: params)
68
+ @resource.dup.hydrate(record: record)
68
69
  end
69
70
 
71
+ # Temporary fix for visible blocks when geting fields for header
72
+ # Hydrating with last record so resource.record != nil
73
+ # This is keeping same behavior from <= 3.4.1
74
+ @resource.hydrate(record: @records.last)
75
+
70
76
  set_component_for __method__
71
77
  end
72
78
 
@@ -13,7 +13,7 @@ module Avo
13
13
  def close_action_modal
14
14
  turbo_stream_action_tag :replace,
15
15
  target: Avo::ACTIONS_TURBO_FRAME_ID,
16
- html: @view_context.turbo_frame_tag(Avo::ACTIONS_TURBO_FRAME_ID)
16
+ template: @view_context.turbo_frame_tag(Avo::ACTIONS_TURBO_FRAME_ID, data: {turbo_temporary: 1})
17
17
  end
18
18
  end
19
19
  end
@@ -12,7 +12,6 @@
12
12
  data: {
13
13
  action_target: :form,
14
14
  **@action.class.form_data_attributes,
15
- turbo_frame: Avo::ACTIONS_TURBO_FRAME_ID,
16
15
  } do |form|
17
16
  %>
18
17
  <%= render Avo::ModalComponent.new do |c| %>
@@ -1,11 +1 @@
1
- <div class="flex">
2
- <%= link_to Avo.configuration.app_name, '/', class: 'text-primary-500 font-semibold', target: :_blank %>
3
-
4
- <% if false %>
5
- <div class="ml-12">
6
- <% current_user.accounts.each do |account| %>
7
- <%= link_to account.name, switch_account_path(account.id), class: class_names({"underline": session[:tenant_id].to_s == account.id.to_s}), data: {turbo_method: :put} %>
8
- <% end %>
9
- </div>
10
- <% end %>
11
- </div>
1
+ <%= link_to Avo.configuration.app_name, '/', class: 'text-primary-500 font-semibold', target: :_blank %>
@@ -3,7 +3,7 @@
3
3
  <html>
4
4
  <head>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <% if !Avo.configuration.turbo[:instantclick] %>
6
+ <% if !Avo.configuration.turbo[:instant_click] %>
7
7
  <meta name="turbo-prefetch" content="false">
8
8
  <% end %>
9
9
  <%= display_meta_tags site: Avo.configuration.app_name, reverse: true, separator: "—" %>
@@ -228,7 +228,7 @@ module Avo
228
228
  def default_turbo
229
229
  -> do
230
230
  {
231
- instantclick: true
231
+ instant_click: true
232
232
  }
233
233
  end
234
234
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "3.4.2" unless const_defined?(:VERSION)
2
+ VERSION = "3.4.4" unless const_defined?(:VERSION)
3
3
  end
data/lib/avo.rb CHANGED
@@ -40,7 +40,7 @@ module Avo
40
40
  private
41
41
 
42
42
  def missing_resource_message(resource_name)
43
- name = resource_name.to_s.downcase
43
+ name = resource_name.to_s.underscore
44
44
 
45
45
  "Failed to find a resource while rendering the :#{name} field.\n" \
46
46
  "You may generate a resource for it by running 'rails generate avo:resource #{name.singularize}'.\n" \
@@ -68,7 +68,7 @@ Avo.configure do |config|
68
68
  ## == Turbo options ==
69
69
  # config.turbo = -> do
70
70
  # {
71
- # instantclick: true
71
+ # instant_click: true
72
72
  # }
73
73
  # end
74
74
 
@@ -1,4 +1,4 @@
1
1
  # This controller has been generated to enable Rails' resource routes.
2
- # More information on https://docs.avohq.io/2.0/controllers.html
2
+ # More information on https://docs.avohq.io/3.0/controllers.html
3
3
  class <%= controller_class %> < <%= parent_controller %>
4
4
  end
@@ -7102,10 +7102,6 @@ tag.tagify__tag{
7102
7102
  margin-left:2.5rem
7103
7103
  }
7104
7104
 
7105
- .ml-12{
7106
- margin-left:3rem
7107
- }
7108
-
7109
7105
  .ml-2{
7110
7106
  margin-left:0.5rem
7111
7107
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avo
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.2
4
+ version: 3.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Marin
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-02-28 00:00:00.000000000 Z
13
+ date: 2024-03-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord