Merge pull request #1668 from basecamp/pinned-stale

Several fixes for pinned cards
This commit is contained in:
Jorge Manrubia
2025-11-21 10:03:32 +01:00
committed by GitHub
11 changed files with 89 additions and 82 deletions
+1 -1
View File
@@ -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
+6 -3
View File
@@ -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)
@@ -15,4 +15,8 @@ export default class extends Controller {
this.element.reload()
}
}
reload() {
this.element.reload()
}
}
+9
View File
@@ -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 %>
+12
View File
@@ -0,0 +1,12 @@
<%= collapsible_nav_section "Boards" do %>
<li class="popup__item" data-filter-target="item" data-navigable-list-target="item">
<%= icon_tag "add", class: "popup__icon" %>
<%= link_to new_board_path, class: "popup__btn btn" do %>
<span class="overflow-ellipsis">Add a board</span>
<% end %>
</li>
<% boards.each do |board| %>
<%= my_menu_board_item(board) %>
<% end %>
<% end %>
+14
View File
@@ -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| %>
<li class="popup__item overflow-ellipsis" data-navigable-list-target="item" data-filter-target="item" id="filter-custom-create">
<%= icon_tag "bookmark", class: "popup__icon" %>
<%= link_to cards_path(expand_all: true), class: "popup__btn btn" do %>
<span>Create a custom view</span>
<% end %>
</li>
<% filters.each do |filter| %>
<%= my_menu_filter_item(filter) %>
<% end %>
<% end %>
<% end %>
+12
View File
@@ -0,0 +1,12 @@
<%= collapsible_nav_section "People" do %>
<li class="popup__item" data-filter-target="item" data-navigable-list-target="item">
<%= icon_tag "add", class: "popup__icon" %>
<%= link_to account_join_code_path, class: "popup__btn btn" do %>
<span class="overflow-ellipsis">Invite people</span>
<% end %>
</li>
<% users.each do |user| %>
<%= my_menu_user_item(user) %>
<% end %>
<% end %>
+13
View File
@@ -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 %>
<span>Sign out</span>
<% end %>
<% end %>
<% end %>
+5
View File
@@ -0,0 +1,5 @@
<%= collapsible_nav_section "Tags" do %>
<% tags.each do |tag| %>
<%= my_menu_tag_item(tag) %>
<% end %>
<% end %>
+6 -71
View File
@@ -1,76 +1,11 @@
<%= turbo_frame_tag "my_menu", target: "_top" do %>
<%= render "my/menus/jump" do %>
<%= collapsible_nav_section "Boards" do %>
<li class="popup__item" data-filter-target="item" data-navigable-list-target="item">
<%= icon_tag "add", class: "popup__icon" %>
<%= link_to new_board_path, class: "popup__btn btn" do %>
<span class="overflow-ellipsis">Add a board</span>
<% end %>
</li>
<% @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| %>
<li class="popup__item overflow-ellipsis" data-navigable-list-target="item" data-filter-target="item" id="filter-custom-create">
<%= icon_tag "bookmark", class: "popup__icon" %>
<%= link_to cards_path(expand_all: true), class: "popup__btn btn" do %>
<span>Create a custom view</span>
<% end %>
</li>
<% @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 %>
<li class="popup__item" data-filter-target="item" data-navigable-list-target="item">
<%= icon_tag "add", class: "popup__icon" %>
<%= link_to account_join_code_path, class: "popup__btn btn" do %>
<span class="overflow-ellipsis">Invite people</span>
<% end %>
</li>
<% @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 %>
<span>Sign out</span>
<% 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 %>
<footer class="nav__footer">
+7 -7
View File
@@ -2,13 +2,13 @@
<section class="tray tray--pins" data-controller="dialog">
<%= tag.dialog id: "pin-tray", class: "tray__dialog", data: {
action: "keydown->navigable-list#navigate dialog:show@document->navigable-list#reset keydown.esc->dialog#close:stop click@document->dialog#closeOnClickOutside",
controller: "navigable-list",
dialog_target: "dialog",
navigable_list_actionable_items_value: "true",
navigable_list_reverse_navigation_value: "true" },
turbo_permanent: true do %>
<%= turbo_frame_tag "pins", src: my_pins_path %>
action: "keydown->navigable-list#navigate dialog:show@document->navigable-list#reset keydown.esc->dialog#close:stop click@document->dialog#closeOnClickOutside",
controller: "navigable-list",
dialog_target: "dialog",
navigable_list_actionable_items_value: "true",
navigable_list_reverse_navigation_value: "true" },
turbo_permanent: true do %>
<%= turbo_frame_tag "pins", src: my_pins_path, data: { controller: "frame", action: "turbo:morph@document->frame#reload" } %>
<% end %>
<button class="tray__toggle" data-action="dialog#toggle keydown.p@document->hotkey#click" data-controller="hotkey" aria-label="Toggle pins stack" aria-haspopup="true">