From 333dfacdebdd2635f01764c6f4045dc51363c89e Mon Sep 17 00:00:00 2001 From: ncounter Date: Thu, 13 Apr 2023 12:02:25 +0200 Subject: [PATCH] Squash card wrapper elements to the inner level --- .../app/components/card_component.html.haml | 2 +- src/api/app/components/card_component.rb | 6 -- .../components/token_card_component.html.haml | 2 +- .../webui/groups/_group_members.html.haml | 58 ++++++----- .../repositories/_repository_entry.html.haml | 96 +++++++++---------- src/api/spec/features/webui/groups_spec.rb | 4 +- .../spec/features/webui/repositories_spec.rb | 24 ++--- 7 files changed, 92 insertions(+), 100 deletions(-) diff --git a/src/api/app/components/card_component.html.haml b/src/api/app/components/card_component.html.haml index fd6e48b05e0..cb8bb1532f1 100644 --- a/src/api/app/components/card_component.html.haml +++ b/src/api/app/components/card_component.html.haml @@ -5,7 +5,7 @@ - if delete_button? .ms-4 = delete_button - .card-body{ class: @extra_classes_for_body } + .card-body = content - if actions? %ul.nav.justify-content-end.mt-auto diff --git a/src/api/app/components/card_component.rb b/src/api/app/components/card_component.rb index a00c53a0510..279fc5f7a9f 100644 --- a/src/api/app/components/card_component.rb +++ b/src/api/app/components/card_component.rb @@ -5,10 +5,4 @@ class CardComponent < ApplicationComponent renders_one :header renders_one :delete_button renders_many :actions - - def initialize(extra_classes_for_body: []) - super - - @extra_classes_for_body = extra_classes_for_body - end end diff --git a/src/api/app/components/token_card_component.html.haml b/src/api/app/components/token_card_component.html.haml index 3472184c0bc..2dd0c1a98c9 100644 --- a/src/api/app/components/token_card_component.html.haml +++ b/src/api/app/components/token_card_component.html.haml @@ -1,4 +1,4 @@ -= render(CardComponent.new(extra_classes_for_body: ['d-flex', 'flex-column'])) do |component| += render(CardComponent.new) do |component| %p.card-text Id: #{@token.id} %p.card-text diff --git a/src/api/app/views/webui/groups/_group_members.html.haml b/src/api/app/views/webui/groups/_group_members.html.haml index 0a107faec31..062fea7ea55 100644 --- a/src/api/app/views/webui/groups/_group_members.html.haml +++ b/src/api/app/views/webui/groups/_group_members.html.haml @@ -5,37 +5,35 @@ %p This group does not have members. - else - #group-users - .d-flex.flex-wrap.gap-4.align-self-stretch - - group.users.each do |user| - .group-user - = render(CardComponent.new) do |component| - .row.g-0 - .col-md-3 - = image_tag_for(user, size: 80, custom_class: 'align-self-center') - .col-md-9 - .card-body.py-1 - .form-check.mt-2 - = check_box_tag("maintainer_#{user.login}", true, group.maintainer?(user), class: 'form-check-input group-maintainership', - name: :maintainer, disabled: !write_access, data: { method: :patch, - url: group_user_path(group_title: group.title, user_login: user.login), remote: true }) - %label.form-check-label{ for: "maintainer_#{user.login}" } - Maintainer - %i.fas.fa-spinner.fa-spin.d-none + .d-flex.flex-wrap.gap-4.align-self-stretch#group-users + - group.users.each do |user| + = render(CardComponent.new) do |component| + .row.g-0 + .col-md-3 + = image_tag_for(user, size: 80, custom_class: 'align-self-center') + .col-md-9 + .card-body.py-1 + .form-check.mt-2 + = check_box_tag("maintainer_#{user.login}", true, group.maintainer?(user), class: 'form-check-input group-maintainership', + name: :maintainer, disabled: !write_access, data: { method: :patch, + url: group_user_path(group_title: group.title, user_login: user.login), remote: true }) + %label.form-check-label{ for: "maintainer_#{user.login}" } + Maintainer + %i.fas.fa-spinner.fa-spin.d-none - - component.with_header do - = link_to(user_path(user)) do - = display_name(user) + - component.with_header do + = link_to(user_path(user)) do + = display_name(user) - - component.with_delete_button do - - if policy(GroupsUser.new(group: group, user: user)).destroy? - = link_to('#', - title: 'Remove member from group', - data: { 'bs-toggle': 'modal', - 'bs-target': '#delete-group-members-modal', - confirmation_text: "Please confirm deletion of '#{user}' from this group", - action: group_user_path(group_title: group.title, user_login: user.login) }) do - %i.fas.fa-sm.fa-times-circle.text-danger + - component.with_delete_button do + - if policy(GroupsUser.new(group: group, user: user)).destroy? + = link_to('#', + title: 'Remove member from group', + data: { 'bs-toggle': 'modal', + 'bs-target': '#delete-group-members-modal', + confirmation_text: "Please confirm deletion of '#{user}' from this group", + action: group_user_path(group_title: group.title, user_login: user.login) }) do + %i.fas.fa-sm.fa-times-circle.text-danger - if write_access || display_group_email .pt-4 @@ -64,5 +62,5 @@ $(this).siblings('i.fa-spinner').toggleClass('d-none'); }); $('#group-users').on('ajax:success', '.group-member-removal', function() { - $(this).parents('.group-user').remove(); + $(this).parents('.card').remove(); }); diff --git a/src/api/app/views/webui/repositories/_repository_entry.html.haml b/src/api/app/views/webui/repositories/_repository_entry.html.haml index e3c4349736d..6d680bead52 100644 --- a/src/api/app/views/webui/repositories/_repository_entry.html.haml +++ b/src/api/app/views/webui/repositories/_repository_entry.html.haml @@ -1,54 +1,54 @@ -.col-11.col-md-5.col-lg-3.flex-fill.repository-card - = render(CardComponent.new) do |component| - - if repository.is_dod_repository? - = render partial: 'dod_repository_card_content', locals: { project: project, repository: repository, - available_architectures: available_architectures } - - component.with_delete_button do - - if user_can_modify - = link_to('#', title: 'Delete Repository', data: { 'bs-toggle': 'modal', 'bs-target': '#delete-repository', - action: destroy_repository_path(project: project, target: repository.name), repository: repository.name }) do - %i.fas.fa-times-circle.text-danger - - elsif User.session - .col - = link_to('#', title: 'Request Delete Repository', data: { 'bs-toggle': 'modal', 'bs-target': '#request-delete-repository', - action: project_remove_target_request_path(project: project, target: repository), repository: repository.name }) do - %i.fas.fa-user-times.text-danger + += render(CardComponent.new) do |component| + - if repository.is_dod_repository? + = render partial: 'dod_repository_card_content', locals: { project: project, repository: repository, + available_architectures: available_architectures } + - component.with_delete_button do - if user_can_modify - - component.with_action do - = link_to('#', title: 'Add Download on Demand Source', class: 'nav-link p-1', data: { 'bs-toggle': 'modal', - 'bs-target': "#add-dod-source-modal-#{repository.id}" }) do - %i.fas.fa-plus-circle.text-primary - - else - = render partial: 'repository_card_content', locals: { project: project, repository: repository, - download_url: download_url, user_can_modify: user_can_modify, - available_architectures: available_architectures } - - component.with_delete_button do - - if user_can_modify - = link_to('#', title: 'Delete Repository', data: { 'bs-toggle': 'modal', 'bs-target': '#delete-repository', - action: destroy_repository_path(project: project, target: repository.name), repository: repository.name }) do - %i.fas.fa-times-circle.text-danger - - elsif User.session + = link_to('#', title: 'Delete Repository', data: { 'bs-toggle': 'modal', 'bs-target': '#delete-repository', + action: destroy_repository_path(project: project, target: repository.name), repository: repository.name }) do + %i.fas.fa-times-circle.text-danger + - elsif User.session + .col = link_to('#', title: 'Request Delete Repository', data: { 'bs-toggle': 'modal', 'bs-target': '#request-delete-repository', - action: project_remove_target_request_path(project: project, repository: repository.name), repository: repository.name }) do + action: project_remove_target_request_path(project: project, target: repository), repository: repository.name }) do %i.fas.fa-user-times.text-danger + - if user_can_modify + - component.with_action do + = link_to('#', title: 'Add Download on Demand Source', class: 'nav-link p-1', data: { 'bs-toggle': 'modal', + 'bs-target': "#add-dod-source-modal-#{repository.id}" }) do + %i.fas.fa-plus-circle.text-primary + - else + = render partial: 'repository_card_content', locals: { project: project, repository: repository, + download_url: download_url, user_can_modify: user_can_modify, + available_architectures: available_architectures } + - component.with_delete_button do - if user_can_modify - - component.with_action do - = link_to('#', title: 'Edit Repository', class: 'nav-link p-1', - data: { 'bs-toggle': 'modal', 'bs-target': "#edit-repository-#{repository.id}" }) do - %i.fas.fa-edit.text-secondary - - component.with_action do - = link_to('#', title: 'Add Repository Path', class: 'nav-link p-1', - data: { 'bs-toggle': 'modal', 'bs-target': "#add-repository-path-#{repository.id}" }) do - %i.fas.fa-plus-circle.text-primary + = link_to('#', title: 'Delete Repository', data: { 'bs-toggle': 'modal', 'bs-target': '#delete-repository', + action: destroy_repository_path(project: project, target: repository.name), repository: repository.name }) do + %i.fas.fa-times-circle.text-danger + - elsif User.session + = link_to('#', title: 'Request Delete Repository', data: { 'bs-toggle': 'modal', 'bs-target': '#request-delete-repository', + action: project_remove_target_request_path(project: project, repository: repository.name), repository: repository.name }) do + %i.fas.fa-user-times.text-danger + - if user_can_modify - component.with_action do - - url = "#{download_url}/#{project.to_s.gsub(/:/, ':/')}/#{repository}" - = link_to(url, title: 'Download Repository', class: 'nav-link p-1') do - %i.fas.fa-download.text-secondary + = link_to('#', title: 'Edit Repository', class: 'nav-link p-1', + data: { 'bs-toggle': 'modal', 'bs-target': "#edit-repository-#{repository.id}" }) do + %i.fas.fa-edit.text-secondary + - component.with_action do + = link_to('#', title: 'Add Repository Path', class: 'nav-link p-1', + data: { 'bs-toggle': 'modal', 'bs-target': "#add-repository-path-#{repository.id}" }) do + %i.fas.fa-plus-circle.text-primary + - component.with_action do + - url = "#{download_url}/#{project.to_s.gsub(/:/, ':/')}/#{repository}" + = link_to(url, title: 'Download Repository', class: 'nav-link p-1') do + %i.fas.fa-download.text-secondary - - component.with_header do - = link_to(repository, project_repository_state_path(project: project, repository: repository.name), class: 'fw-bold') - - if repository.architectures.empty? - %i No architecture selected - - else - - repository.architectures.pluck(:name).each do |architecture| - %span.badge.bg-primary= architecture + - component.with_header do + = link_to(repository, project_repository_state_path(project: project, repository: repository.name), class: 'fw-bold') + - if repository.architectures.empty? + %i No architecture selected + - else + - repository.architectures.pluck(:name).each do |architecture| + %span.badge.bg-primary= architecture diff --git a/src/api/spec/features/webui/groups_spec.rb b/src/api/spec/features/webui/groups_spec.rb index 721d85d6c05..07760061745 100644 --- a/src/api/spec/features/webui/groups_spec.rb +++ b/src/api/spec/features/webui/groups_spec.rb @@ -57,7 +57,7 @@ def group_in_datatable(page, group) it 'remove a member from a group' do visit group_path(group_1) - within(find('div.group-user', text: admin.login)) do + within(find('#group-users > .card', text: admin.login)) do click_link('Remove member from group') end @@ -69,7 +69,7 @@ def group_in_datatable(page, group) it 'give maintainer rights to a group member' do visit group_path(group_1) - within(find('div.group-user', text: admin.login)) do + within(find('#group-users > .card', text: admin.login)) do check('Maintainer') end diff --git a/src/api/spec/features/webui/repositories_spec.rb b/src/api/spec/features/webui/repositories_spec.rb index 70fe83735fb..f64003df383 100644 --- a/src/api/spec/features/webui/repositories_spec.rb +++ b/src/api/spec/features/webui/repositories_spec.rb @@ -29,9 +29,9 @@ fill_in('Public Key', with: 'JLKSDJFSJ83U4902RKLJSDFLJF2J9IJ23OJFKJFSDF') click_button('Accept') - expect(page).to have_css('.repository-card') + expect(page).to have_css('#repositories > .card') - within '.repository-card' do + within '#repositories > .card' do expect(page).to have_link('My DoD repository') expect(page).to have_link('Add Download on Demand Source') expect(page).to have_link('Delete Repository') @@ -47,7 +47,7 @@ it 'delete DoD repositories' do visit(project_repositories_path(project: project_with_dod_repo)) - within '.repository-card' do + within '#repositories > .card' do click_link(title: 'Delete Repository') end @@ -64,7 +64,7 @@ it 'edit download repositories' do visit(project_repositories_path(project: project_with_dod_repo)) - within '.repository-card' do + within '#repositories > .card' do find("[data-bs-target='#edit-dod-source-modal-#{download_repository_source}']").click end @@ -92,7 +92,7 @@ it 'delete download repository sources' do visit(project_repositories_path(project: project_with_dod_repo)) - within '.repository-card' do + within '#repositories > .card' do find("[data-bs-target='#delete-dod-source-modal-#{download_repository_source}']").click end @@ -105,7 +105,7 @@ expect(page).to have_text 'Successfully removed Download on Demand' expect(repository.download_repositories.count).to eq(1) - within '.repository-card' do + within '#repositories > .card' do find("[data-bs-target='#delete-dod-source-modal-#{download_repository_source_2}']").click end @@ -130,7 +130,7 @@ expect(page).to have_css('#flash', text: 'Config successfully saved!') visit(project_repositories_path(project: admin_user.home_project_name)) - within '.repository-card' do + within '#repositories > .card' do expect(page).to have_link('standard') expect(page).to have_link('Add Download on Demand Source') expect(page).to have_link('Delete Repository') @@ -173,9 +173,9 @@ visit(project_repositories_path(project: admin_user.home_project)) - expect(page).to have_css('.repository-card') + expect(page).to have_css('#repositories > .card') - within '.repository-card' do + within '#repositories > .card' do expect(page).to have_link('openSUSE_Tumbleweed') end @@ -184,7 +184,7 @@ visit(project_repositories_path(project: admin_user.home_project)) - expect(page).not_to have_css('.repository-card') + expect(page).not_to have_css('#repositories > .card') end it 'add repository from project' do @@ -199,9 +199,9 @@ click_button('Accept') - expect(page).to have_css('.repository-card') + expect(page).to have_css('#repositories > .card') - within '.repository-card' do + within '#repositories > .card' do expect(page).to have_link("#{repository.project}_#{repository}") expect(page).to have_link('Edit Repository') expect(page).to have_link('Add Repository Path')