From ad5a86f8e945fd167fae7db4efbbb30ebb0f7b2f Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Wed, 24 Sep 2025 15:23:17 +0200 Subject: [PATCH] Fine tune members widget and remove doubled body class which caused additional spacing --- app/models/member.rb | 2 +- app/models/news.rb | 3 +-- .../grids/widgets/news/news.component.html | 4 +--- .../project-status-beta.component.html | 4 +--- .../subprojects/subprojects.component.html | 4 +--- .../widgets/members_component.html.erb | 22 +++++++++++-------- .../overviews/widgets/members_component.rb | 20 +++++++---------- .../overviews/widgets/news_component.rb | 12 +++------- .../news_component/item_component.html.erb | 2 +- .../widgets/members_component_spec.rb | 4 ++-- .../widgets/members_controller_spec.rb | 4 ++-- .../spec/permissions/widgets/members_spec.rb | 2 +- 12 files changed, 35 insertions(+), 48 deletions(-) diff --git a/app/models/member.rb b/app/models/member.rb index 92e1228d446..5e5c5b39857 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -126,7 +126,7 @@ class Member < ApplicationRecord end def self.newest_first - order "#{table_name}.created_at DESC" + order(created_at: :desc) end protected diff --git a/app/models/news.rb b/app/models/news.rb index 5ae5b9a067e..ad65e03028a 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -89,9 +89,8 @@ class News < ApplicationRecord end end - # table_name shouldn't be needed :( def self.newest_first - order "#{table_name}.created_at DESC" + order(created_at: :desc) end def new_comment(attributes = {}) diff --git a/frontend/src/app/shared/components/grids/widgets/news/news.component.html b/frontend/src/app/shared/components/grids/widgets/news/news.component.html index d82ef9f8717..4c2dd0b5ea7 100644 --- a/frontend/src/app/shared/components/grids/widgets/news/news.component.html +++ b/frontend/src/app/shared/components/grids/widgets/news/news.component.html @@ -6,6 +6,4 @@ [resource]="resource" /> -
- -
+ diff --git a/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.html b/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.html index 578f40e907e..1d0e28d6a65 100644 --- a/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.html +++ b/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.html @@ -10,6 +10,4 @@ [resource]="resource" /> -
- -
+ diff --git a/frontend/src/app/shared/components/grids/widgets/subprojects/subprojects.component.html b/frontend/src/app/shared/components/grids/widgets/subprojects/subprojects.component.html index d82ef9f8717..4c2dd0b5ea7 100644 --- a/frontend/src/app/shared/components/grids/widgets/subprojects/subprojects.component.html +++ b/frontend/src/app/shared/components/grids/widgets/subprojects/subprojects.component.html @@ -6,6 +6,4 @@ [resource]="resource" /> -
- -
+ diff --git a/modules/overviews/app/components/overviews/widgets/members_component.html.erb b/modules/overviews/app/components/overviews/widgets/members_component.html.erb index e19ca7b58d2..825f7b87d23 100644 --- a/modules/overviews/app/components/overviews/widgets/members_component.html.erb +++ b/modules/overviews/app/components/overviews/widgets/members_component.html.erb @@ -29,17 +29,21 @@ See COPYRIGHT and LICENSE files for more details. <%= widget_wrapper do - flex_layout do |flex| - @newest_members.each do |item| - flex.with_row(mb: 3) do - render Users::AvatarComponent.new(user: item.principal, size: :mini, link: false, show_name: true) - end - end - flex.with_row do - render Primer::Beta::Link.new(href: project_members_path(@project)) do - I18n.t(:"overviews.widgets.members.view_all_members") + if @newest_members.present? + flex_layout do |flex| + @newest_members.each do |item| + flex.with_row(mb: 3) do + render Users::AvatarComponent.new(user: item.principal, size: :mini, link: false, show_name: true) + end + end + flex.with_row do + render Primer::Beta::Link.new(href: project_members_path(@project)) do + I18n.t(:"overviews.widgets.members.view_all_members") + end end end + else + render(Primer::Beta::Text.new(color: :subtle)) { t(:"js.grid.widgets.members.no_results") } end end %> diff --git a/modules/overviews/app/components/overviews/widgets/members_component.rb b/modules/overviews/app/components/overviews/widgets/members_component.rb index 9b41bfaa1d6..9e3ac0edf61 100644 --- a/modules/overviews/app/components/overviews/widgets/members_component.rb +++ b/modules/overviews/app/components/overviews/widgets/members_component.rb @@ -33,19 +33,15 @@ module Overviews class MembersComponent < Grids::WidgetComponent MEMBERS_LIMIT = 5 - attr_reader :project, :current_user + param :project - def initialize(project) - super() + def initialize(*) + super - @project = project - @current_user = current_user - @members = - if project - project.members.visible(current_user).newest_first - end - - @newest_members = @members.limit(MEMBERS_LIMIT).to_a + if project + @members = project.members.visible(current_user).newest_first + @newest_members = @members.limit(MEMBERS_LIMIT).to_a + end end def title @@ -53,7 +49,7 @@ module Overviews end def render? - current_user.allowed_in_project?(:view_members, project) && @newest_members.present? + current_user.allowed_in_project?(:view_members, project) end end end diff --git a/modules/overviews/app/components/overviews/widgets/news_component.rb b/modules/overviews/app/components/overviews/widgets/news_component.rb index c434f564d9e..d477cb021bf 100644 --- a/modules/overviews/app/components/overviews/widgets/news_component.rb +++ b/modules/overviews/app/components/overviews/widgets/news_component.rb @@ -33,17 +33,11 @@ module Overviews class NewsComponent < Grids::WidgetComponent NEWS_LIMIT = 5 - include ApplicationHelper - include OpPrimer::ComponentHelpers - include OpTurbo::Streamable + param :project, optional: true - attr_reader :project, :current_user + def initialize(*) + super - def initialize(project) - super() - - @project = project - @current_user = current_user @news = if project project.news.visible(current_user).newest_first diff --git a/modules/overviews/app/components/overviews/widgets/news_component/item_component.html.erb b/modules/overviews/app/components/overviews/widgets/news_component/item_component.html.erb index ed0be9a0b55..fa9055dbe23 100644 --- a/modules/overviews/app/components/overviews/widgets/news_component/item_component.html.erb +++ b/modules/overviews/app/components/overviews/widgets/news_component/item_component.html.erb @@ -45,7 +45,7 @@ See COPYRIGHT and LICENSE files for more details. end layout.with_column do - render(Primer::Beta::Link.new(ml: 1, font_weight: :bold, href: news_path(item))) { item.title } + render(Primer::Beta::Link.new(font_weight: :bold, href: news_path(item))) { item.title } end end ) diff --git a/modules/overviews/spec/components/overviews/widgets/members_component_spec.rb b/modules/overviews/spec/components/overviews/widgets/members_component_spec.rb index 34905ad9469..1bc94a7e234 100644 --- a/modules/overviews/spec/components/overviews/widgets/members_component_spec.rb +++ b/modules/overviews/spec/components/overviews/widgets/members_component_spec.rb @@ -51,8 +51,8 @@ RSpec.describe Overviews::Widgets::MembersComponent, type: :component do let(:user) { create(:admin) } context "with no members" do - it "does not render" do - expect(rendered_component).not_to have_element "#overviews-widgets-members-component-box" + it "does render" do + expect(rendered_component).to have_content I18n.t(:"js.grid.widgets.members.no_results") end end diff --git a/modules/overviews/spec/controllers/overviews/widgets/members_controller_spec.rb b/modules/overviews/spec/controllers/overviews/widgets/members_controller_spec.rb index 9047d3fb32e..6af21db724f 100644 --- a/modules/overviews/spec/controllers/overviews/widgets/members_controller_spec.rb +++ b/modules/overviews/spec/controllers/overviews/widgets/members_controller_spec.rb @@ -30,9 +30,9 @@ require "rails_helper" -RSpec.describe Overviews::Widgets::Members do +RSpec.describe Overviews::Widgets::MembersController do shared_let(:project) { create(:project) } - shared_let(:user) { create(:user, member_with_permissions: { project => %i[view_member] }) } + shared_let(:user) { create(:user, member_with_permissions: { project => %i[view_members] }) } current_user { user } describe "GET #show" do diff --git a/modules/overviews/spec/permissions/widgets/members_spec.rb b/modules/overviews/spec/permissions/widgets/members_spec.rb index e201bfae510..311d651b34b 100644 --- a/modules/overviews/spec/permissions/widgets/members_spec.rb +++ b/modules/overviews/spec/permissions/widgets/members_spec.rb @@ -34,5 +34,5 @@ require "support/permission_specs" RSpec.describe Overviews::Widgets::MembersController, "permissions", type: :controller do # rubocop:disable RSpec/EmptyExampleGroup,RSpec/SpecFilePathFormat include PermissionSpecs - check_permission_required_for("overviews/widgets/members#show", :view_member) + check_permission_required_for("overviews/widgets/members#show", :view_members) end