diff --git a/app/controllers/my/pins_controller.rb b/app/controllers/my/pins_controller.rb
index 27e14535b..4468c75d5 100644
--- a/app/controllers/my/pins_controller.rb
+++ b/app/controllers/my/pins_controller.rb
@@ -1,6 +1,6 @@
class My::PinsController < ApplicationController
def index
@pins = Current.user.pins.includes(:card).ordered.limit(20)
- fresh_when @pins
+ fresh_when etag: [ @pins, @pins.collect(&:card) ]
end
end
diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb
index 0b04f6f44..6b8d20c04 100644
--- a/app/helpers/filters_helper.rb
+++ b/app/helpers/filters_helper.rb
@@ -15,11 +15,14 @@ module FiltersHelper
user_filtering.selected_board_titles.collect { tag.strong it }.to_sentence.html_safe
end
- def filter_place_menu_item(path, label, icon, new_window: false, current: false)
- link_to_params = new_window ? { target: "_blank" } : {}
+ def filter_place_menu_item(path, label, icon, new_window: false, current: false, turbo: true)
+ link_to_params = {}
+ link_to_params.merge!({ target: "_blank" }) if new_window
+ link_to_params.merge!({ data: { turbo: false } }) unless turbo
+
tag.li class: "popup__item", id: "filter-place-#{label.parameterize}", data: { filter_target: "item", navigable_list_target: "item" }, aria: { checked: current } do
concat icon_tag(icon, class: "popup__icon")
- concat(link_to(path, link_to_params.merge(class: "popup__btn btn")) do
+ concat(link_to(path, link_to_params.merge(class: "popup__btn btn"), data: { turbo: turbo }) do
concat tag.span(label, class: "overflow-ellipsis")
concat icon_tag("check", class: "checked flex-item-justify-end", "aria-hidden": true)
end)
diff --git a/app/javascript/controllers/frame_controller.js b/app/javascript/controllers/frame_controller.js
index 7684a43ed..c905576ba 100644
--- a/app/javascript/controllers/frame_controller.js
+++ b/app/javascript/controllers/frame_controller.js
@@ -15,4 +15,8 @@ export default class extends Controller {
this.element.reload()
}
}
+
+ reload() {
+ this.element.reload()
+ }
}
diff --git a/app/views/my/menus/_accounts.html.erb b/app/views/my/menus/_accounts.html.erb
new file mode 100644
index 000000000..a9895f158
--- /dev/null
+++ b/app/views/my/menus/_accounts.html.erb
@@ -0,0 +1,9 @@
+<% if accounts.many? %>
+ <% cache [ Current.identity, accounts, Current.account ] do %>
+ <%= collapsible_nav_section "Accounts" do %>
+ <% accounts.each do |account| %>
+ <%= filter_place_menu_item landing_url(script_name: account.slug), account.name, "marker", current: account == Current.account, turbo: false %>
+ <% end %>
+ <% end %>
+ <% end %>
+<% end %>
diff --git a/app/views/my/menus/_boards.html.erb b/app/views/my/menus/_boards.html.erb
new file mode 100644
index 000000000..bd0315d18
--- /dev/null
+++ b/app/views/my/menus/_boards.html.erb
@@ -0,0 +1,12 @@
+<%= collapsible_nav_section "Boards" do %>
+
+
+ <% boards.each do |board| %>
+ <%= my_menu_board_item(board) %>
+ <% end %>
+<% end %>
diff --git a/app/views/my/menus/_custom_views.html.erb b/app/views/my/menus/_custom_views.html.erb
new file mode 100644
index 000000000..c18dff872
--- /dev/null
+++ b/app/views/my/menus/_custom_views.html.erb
@@ -0,0 +1,14 @@
+<%= collapsible_nav_section "Custom views", id: "my-filters" do %>
+ <%= form_with url: cards_path, method: :get, data: { controller: "form" } do |form| %>
+
+
+ <% filters.each do |filter| %>
+ <%= my_menu_filter_item(filter) %>
+ <% end %>
+ <% end %>
+<% end %>
diff --git a/app/views/my/menus/_people.html.erb b/app/views/my/menus/_people.html.erb
new file mode 100644
index 000000000..9725c4ce0
--- /dev/null
+++ b/app/views/my/menus/_people.html.erb
@@ -0,0 +1,12 @@
+<%= collapsible_nav_section "People" do %>
+
+
+ <% users.each do |user| %>
+ <%= my_menu_user_item(user) %>
+ <% end %>
+<% end %>
diff --git a/app/views/my/menus/_settings.html.erb b/app/views/my/menus/_settings.html.erb
new file mode 100644
index 000000000..150b6794a
--- /dev/null
+++ b/app/views/my/menus/_settings.html.erb
@@ -0,0 +1,13 @@
+<%= collapsible_nav_section "Settings" do %>
+ <%= filter_place_menu_item account_settings_path, "Account Settings", "settings" %>
+ <%= filter_place_menu_item user_path(Current.user), "My Profile", "person" %>
+ <%= filter_place_menu_item notifications_path, "All notifications", "bell" %>
+ <%= filter_place_menu_item notifications_settings_path, "Notification Settings", "settings" %>
+
+ <%= tag.li class: "popup__item", data: { filter_target: "item", navigable_list_target: "item" } do %>
+ <%= icon_tag "logout", class: "popup__icon" %>
+ <%= button_to session_url(script_name: nil), method: :delete, class: "popup__btn btn", data: { turbo: false } do %>
+ Sign out
+ <% end %>
+ <% end %>
+<% end %>
diff --git a/app/views/my/menus/_tags.html.erb b/app/views/my/menus/_tags.html.erb
new file mode 100644
index 000000000..0a25e927f
--- /dev/null
+++ b/app/views/my/menus/_tags.html.erb
@@ -0,0 +1,5 @@
+<%= collapsible_nav_section "Tags" do %>
+ <% tags.each do |tag| %>
+ <%= my_menu_tag_item(tag) %>
+ <% end %>
+<% end %>
diff --git a/app/views/my/menus/show.html.erb b/app/views/my/menus/show.html.erb
index c8952c125..dede4d6c6 100644
--- a/app/views/my/menus/show.html.erb
+++ b/app/views/my/menus/show.html.erb
@@ -1,76 +1,11 @@
<%= turbo_frame_tag "my_menu", target: "_top" do %>
<%= render "my/menus/jump" do %>
- <%= collapsible_nav_section "Boards" do %>
-
-
- <% @boards.each do |board| %>
- <%= my_menu_board_item(board) %>
- <% end %>
- <% end %>
-
- <%= collapsible_nav_section "Custom views", id: "my-filters" do %>
- <%= form_with url: cards_path, method: :get, data: { controller: "form" } do |form| %>
-
-
- <% @filters.each do |filter| %>
- <%= my_menu_filter_item(filter) %>
- <% end %>
- <% end %>
- <% end %>
-
- <%= collapsible_nav_section "Tags" do %>
- <% @tags.each do |tag| %>
- <%= my_menu_tag_item(tag) %>
- <% end %>
- <% end %>
-
- <%= collapsible_nav_section "People" do %>
-
-
- <% @users.each do |user| %>
- <%= my_menu_user_item(user) %>
- <% end %>
- <% end %>
-
- <%= collapsible_nav_section "Settings" do %>
- <%= filter_place_menu_item account_settings_path, "Account Settings", "settings" %>
- <%= filter_place_menu_item user_path(Current.user), "My Profile", "person" %>
- <%= filter_place_menu_item notifications_path, "All notifications", "bell" %>
- <%= filter_place_menu_item notifications_settings_path, "Notification Settings", "settings" %>
-
- <%= tag.li class: "popup__item", data: { filter_target: "item", navigable_list_target: "item" } do %>
- <%= icon_tag "logout", class: "popup__icon" %>
- <%= button_to session_url(script_name: nil), method: :delete, class: "popup__btn btn", data: { turbo: false } do %>
- Sign out
- <% end %>
- <% end %>
- <% end %>
-
- <% accounts = Current.identity.accounts %>
- <% if accounts.many? %>
- <% cache [ Current.identity, accounts, Current.account ] do %>
- <%= collapsible_nav_section "Accounts" do %>
- <% accounts.each do |account| %>
- <%= filter_place_menu_item landing_url(script_name: account.slug), account.name, "marker", current: account == Current.account %>
- <% end %>
- <% end %>
- <% end %>
- <% end %>
+ <%= render "my/menus/boards", boards: @boards %>
+ <%= render "my/menus/custom_views", filters: @filters %>
+ <%= render "my/menus/tags", tags: @tags %>
+ <%= render "my/menus/people", users: @users %>
+ <%= render "my/menus/settings" %>
+ <%= render "my/menus/accounts", accounts: Current.identity.accounts %>
<% end %>