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 %>