mirror of
https://github.com/we-promise/sure.git
synced 2026-05-07 21:04:12 +00:00
Merge pull request #1671 from bugbug11111/feat/search-highlight
feat(accounts): Highlight matching activity search text in entry names
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
module AccountsHelper
|
||||
ACTIVITY_HIGHLIGHT_MARKUP = '<span class="text-warning/80 font-medium underline decoration-warning/60 underline-offset-2">\1</span>'.freeze
|
||||
|
||||
def summary_card(title:, &block)
|
||||
content = capture(&block)
|
||||
render "accounts/summary_card", title: title, content: content
|
||||
@@ -8,4 +10,12 @@ module AccountsHelper
|
||||
# Always use the account sync path, which handles syncing all providers
|
||||
sync_account_path(account)
|
||||
end
|
||||
|
||||
def highlight_activity_entry_name(name, query = params.dig(:q, :search))
|
||||
search = query.to_s.strip
|
||||
return name if search.blank?
|
||||
|
||||
escaped_name = ERB::Util.html_escape(name.to_s)
|
||||
highlight(escaped_name, search, highlighter: ACTIVITY_HIGHLIGHT_MARKUP, sanitize: false)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -32,10 +32,10 @@
|
||||
</div>
|
||||
|
||||
<div class="truncate flex-shrink">
|
||||
<%= link_to entry.name,
|
||||
<%= link_to(highlight_activity_entry_name(entry.name),
|
||||
entry_path(entry),
|
||||
data: { turbo_frame: "drawer", turbo_prefetch: false },
|
||||
class: "hover:underline" %>
|
||||
class: "hover:underline") %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
<div class="space-y-0.5">
|
||||
<div class="flex items-center gap-1 min-w-0">
|
||||
<div class="truncate flex-shrink">
|
||||
<%= link_to entry.name,
|
||||
<%= link_to(highlight_activity_entry_name(entry.name),
|
||||
entry_path(entry),
|
||||
data: { turbo_frame: "drawer", turbo_prefetch: false },
|
||||
class: "hover:underline" %>
|
||||
class: "hover:underline") %>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-1 flex-shrink-0">
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<div class="truncate flex-shrink">
|
||||
<% if transaction.transfer? %>
|
||||
<%= link_to(
|
||||
entry.name,
|
||||
highlight_activity_entry_name(entry.name),
|
||||
transaction.transfer.present? ? transfer_path(transaction.transfer) : entry_path(entry),
|
||||
data: {
|
||||
turbo_frame: "drawer",
|
||||
@@ -69,7 +69,7 @@
|
||||
) %>
|
||||
<% else %>
|
||||
<%= link_to(
|
||||
entry.name,
|
||||
highlight_activity_entry_name(entry.name),
|
||||
entry_path(entry),
|
||||
data: {
|
||||
turbo_frame: "drawer",
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
<%= render DS::FilledIcon.new(icon: icon, size: "md", hex_color: color, rounded: true) %>
|
||||
|
||||
<div class="truncate text-primary">
|
||||
<%= link_to entry.name,
|
||||
<%= link_to(highlight_activity_entry_name(entry.name),
|
||||
entry_path(entry),
|
||||
data: { turbo_frame: "drawer", turbo_prefetch: false },
|
||||
class: "hover:underline" %>
|
||||
class: "hover:underline") %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user