views: fix deprecated calls to ViewComponent#with_variant.

This commit is contained in:
evazion
2022-04-13 00:00:25 -05:00
parent f69847fc59
commit 363cf2014b
20 changed files with 71 additions and 53 deletions

View File

@@ -7,12 +7,4 @@ class ApplicationComponent < ViewComponent::Base
def policy(subject)
Pundit.policy!(current_user, subject)
end
# XXX Silence warnings about `with_variant` being deprecated until we can fix it.
# DEPRECATION WARNING: `with_variant` is deprecated and will be removed in ViewComponent v3.0.0
def with_variant(...)
ActiveSupport::Deprecation.silence do
super(...)
end
end
end

View File

@@ -0,0 +1,5 @@
# frozen_string_literal: true
# A vertical tag list, with tags split into categories. Used in app/views/posts/show.html.erb.
class CategorizedTagListComponent < TagListComponent
end

View File

@@ -0,0 +1,6 @@
# frozen_string_literal: true
# A horizontal tag list, with tags grouped by category. Used in post tooltips,
# on the comments index, and in the modqueue.
class InlineTagListComponent < TagListComponent
end

View File

@@ -0,0 +1,5 @@
# frozen_string_literal: true
# The <link rel="next"> / <link rel="prev"> links in the <meta> element of the <head>.
class MetaLinksComponent < PaginatorComponent
end

View File

@@ -0,0 +1,4 @@
# frozen_string_literal: true
class NumberedPaginatorComponent < PaginatorComponent
end

View File

@@ -13,10 +13,6 @@ class PaginatorComponent < ApplicationComponent
@params = params
end
def use_sequential_paginator?
paginator_mode != :numbered
end
def pages
last_page = total_pages.clamp(1..)
left = (current_page - window).clamp(2..)

View File

@@ -0,0 +1,5 @@
# frozen_string_literal: true
# A simple vertical tag list with no post counts. Used in related tags.
class RelatedTagListComponent < TagListComponent
end

View File

@@ -0,0 +1,5 @@
# frozen_string_literal: true
# A vertical tag list, used in the post index sidebar.
class SearchTagListComponent < TagListComponent
end

View File

@@ -0,0 +1,4 @@
# frozen_string_literal: true
class SequentialPaginatorComponent < PaginatorComponent
end

View File

@@ -56,47 +56,45 @@ module ComponentsHelper
end
# A simple vertical tag list with no post counts. Used in related tags.
def render_simple_tag_list(tag_names, **options)
tags = TagListComponent.tags_from_names(tag_names)
render TagListComponent.new(tags: tags, **options).with_variant(:simple)
def render_related_tag_list(tag_names, **options)
tags = RelatedTagListComponent.tags_from_names(tag_names)
render RelatedTagListComponent.new(tags: tags, **options)
end
# A horizontal tag list, with tags grouped by category. Used in post
# tooltips, on the comments index, and in the modqueue.
def render_inline_tag_list(post, **options)
render TagListComponent.new(tags: post.tags, **options).with_variant(:inline)
render InlineTagListComponent.new(tags: post.tags, **options)
end
def render_inline_tag_list_from_names(tag_names, **options)
tags = TagListComponent.tags_from_names(tag_names)
render TagListComponent.new(tags: tags, **options).with_variant(:inline)
tags = InlineTagListComponent.tags_from_names(tag_names)
render InlineTagListComponent.new(tags: tags, **options)
end
# A vertical tag list, with tags split into categories. Used on post show pages.
def render_categorized_tag_list(post, **options)
render TagListComponent.new(tags: post.tags, **options).with_variant(:categorized)
render CategorizedTagListComponent.new(tags: post.tags, **options)
end
# A vertical tag list, used in the post index sidebar.
def render_search_tag_list(tag_names, **options)
tags = TagListComponent.tags_from_names(tag_names)
render TagListComponent.new(tags: tags, **options).with_variant(:search)
tags = SearchTagListComponent.tags_from_names(tag_names)
render SearchTagListComponent.new(tags: tags, **options)
end
# The <link rel="next"> / <link rel="prev"> links in the <meta> element of the <head>.
def render_meta_links(records)
render PaginatorComponent.new(records: records, params: params).with_variant(:meta_links)
render MetaLinksComponent.new(records: records, params: params)
rescue ActiveRecord::StatementInvalid
# Swallow any exceptions when loading records so that the page load doesn't fail.
end
def numbered_paginator(records)
paginator = PaginatorComponent.new(records: records, params: params)
if paginator.use_sequential_paginator?
render paginator.with_variant(:sequential)
if records.paginator_mode == :numbered
render NumberedPaginatorComponent.new(records: records, params: params)
else
render paginator.with_variant(:numbered)
render SequentialPaginatorComponent.new(records: records, params: params)
end
end
end

View File

@@ -6,6 +6,6 @@
<input type="checkbox" class="invisible">
<span><%= title %></span>
</h3>
<%= render_simple_tag_list(tags) %>
<%= render_related_tag_list(tags) %>
<% end %>
<% end %>