From 480c8f493ed69fc9e0c60730eee3b2676edb400f Mon Sep 17 00:00:00 2001 From: Corinne Durrmeyer Date: Mon, 12 Aug 2024 15:12:05 +0200 Subject: [PATCH] Remove nav when empty --- app/views/users/dossiers/index.html.haml | 70 ++++++++++--------- .../users/dossiers/index.html.haml_spec.rb | 10 +-- 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/app/views/users/dossiers/index.html.haml b/app/views/users/dossiers/index.html.haml index e6c596c19..b3e2be368 100644 --- a/app/views/users/dossiers/index.html.haml +++ b/app/views/users/dossiers/index.html.haml @@ -24,44 +24,46 @@ = render Dossiers::UserProcedureFilterComponent.new(procedures_for_select: @procedures_for_select) - if @search_terms.blank? - - cache([I18n.locale, current_user.id, @statut, current_user.dossiers, current_user.dossiers_invites], expires_in: 1.hour) do - %nav.fr-tabs{ role: 'navigation', 'aria-label': t('views.users.dossiers.secondary_menu') } - %ul.fr-tabs__list{ role: 'tablist' } - - if @user_dossiers.present? - = tab_item(t('pluralize.en_cours', count: @user_dossiers.count), - dossiers_path(statut: 'en-cours', procedure_id: params[:procedure_id]), - active: @statut == 'en-cours', - badge: number_with_html_delimiter(@user_dossiers.count)) - - if @dossiers_traites.present? - // TODO: when renaming this tab in "Terminé", update notify_near_deletion_to_user email wording accordingly. - = tab_item(t('pluralize.traites', count: @dossiers_traites.count), - dossiers_path(statut: 'traites', procedure_id: params[:procedure_id]), - active: @statut == 'traites', - badge: number_with_html_delimiter(@dossiers_traites.count)) + - if [@user_dossiers, @dossiers_traites, @dossiers_invites, @dossiers_close_to_expiration, @dossiers_supprimes, @dossier_transferes].any?(&:present?) + - cache([I18n.locale, current_user.id, @statut, current_user.dossiers, current_user.dossiers_invites], expires_in: 1.hour) do + %nav.fr-tabs{ role: 'navigation', 'aria-label': t('views.users.dossiers.secondary_menu') } + %ul.fr-tabs__list{ role: 'tablist' } + - if @user_dossiers.present? + = tab_item(t('pluralize.en_cours', count: @user_dossiers.count), + dossiers_path(statut: 'en-cours', procedure_id: params[:procedure_id]), + active: @statut == 'en-cours', + badge: number_with_html_delimiter(@user_dossiers.count)) - - if @dossiers_invites.present? - = tab_item(t('pluralize.dossiers_invites', count: @dossiers_invites.count), - dossiers_path(statut: 'dossiers-invites', procedure_id: params[:procedure_id]), - active: @statut == 'dossiers-invites', - badge: number_with_html_delimiter(@dossiers_invites.count)) + - if @dossiers_traites.present? + // TODO: when renaming this tab in "Terminé", update notify_near_deletion_to_user email wording accordingly. + = tab_item(t('pluralize.traites', count: @dossiers_traites.count), + dossiers_path(statut: 'traites', procedure_id: params[:procedure_id]), + active: @statut == 'traites', + badge: number_with_html_delimiter(@dossiers_traites.count)) - - if @dossiers_close_to_expiration.count > 0 - = tab_item(t('pluralize.dossiers_close_to_expiration', count: @dossiers_close_to_expiration.count), - dossiers_path(statut: 'dossiers-expirant', procedure_id: params[:procedure_id]), - active: @statut == 'dossiers-expirant', - badge: number_with_html_delimiter(@dossiers_close_to_expiration.count)) + - if @dossiers_invites.present? + = tab_item(t('pluralize.dossiers_invites', count: @dossiers_invites.count), + dossiers_path(statut: 'dossiers-invites', procedure_id: params[:procedure_id]), + active: @statut == 'dossiers-invites', + badge: number_with_html_delimiter(@dossiers_invites.count)) - - if @dossiers_supprimes.present? - = tab_item(t('pluralize.dossiers_supprimes', count: @dossiers_supprimes.count), - dossiers_path(statut: 'dossiers-supprimes', procedure_id: params[:procedure_id]), - active: @statut == 'dossiers-supprimes', - badge: number_with_html_delimiter(@dossiers_supprimes.count)) + - if @dossiers_close_to_expiration.count > 0 + = tab_item(t('pluralize.dossiers_close_to_expiration', count: @dossiers_close_to_expiration.count), + dossiers_path(statut: 'dossiers-expirant', procedure_id: params[:procedure_id]), + active: @statut == 'dossiers-expirant', + badge: number_with_html_delimiter(@dossiers_close_to_expiration.count)) - - if @dossier_transferes.present? - = tab_item(t('pluralize.dossiers_transferes', count: @dossier_transferes.count), - dossiers_path(statut: 'dossiers-transferes', procedure_id: params[:procedure_id]), - active: @statut == 'dossiers-transferes', - badge: number_with_html_delimiter(@dossier_transferes.count)) + - if @dossiers_supprimes.present? + = tab_item(t('pluralize.dossiers_supprimes', count: @dossiers_supprimes.count), + dossiers_path(statut: 'dossiers-supprimes', procedure_id: params[:procedure_id]), + active: @statut == 'dossiers-supprimes', + badge: number_with_html_delimiter(@dossiers_supprimes.count)) + + - if @dossier_transferes.present? + = tab_item(t('pluralize.dossiers_transferes', count: @dossier_transferes.count), + dossiers_path(statut: 'dossiers-transferes', procedure_id: params[:procedure_id]), + active: @statut == 'dossiers-transferes', + badge: number_with_html_delimiter(@dossier_transferes.count)) .fr-container .fr-grid-row.fr-grid-row--center diff --git a/spec/views/users/dossiers/index.html.haml_spec.rb b/spec/views/users/dossiers/index.html.haml_spec.rb index ba2f43a5a..10b1041bd 100644 --- a/spec/views/users/dossiers/index.html.haml_spec.rb +++ b/spec/views/users/dossiers/index.html.haml_spec.rb @@ -113,12 +113,12 @@ describe 'users/dossiers/index', type: :view do context 'caching', caching: true do it "works" do - expect(user_dossiers).to receive(:present?).once + expect(user_dossiers).to receive(:present?).thrice 2.times { render; user.reload } end it "cache key depends on statut" do - expect(user_dossiers).to receive(:present?).twice + expect(user_dossiers).to receive(:present?).exactly(4).times render assign(:statut, "termines") @@ -128,7 +128,7 @@ describe 'users/dossiers/index', type: :view do end it "cache key depends on dossier updated_at" do - expect(user_dossiers).to receive(:present?).twice + expect(user_dossiers).to receive(:present?).exactly(4).times render dossier_termine.touch @@ -149,7 +149,7 @@ describe 'users/dossiers/index', type: :view do end it "cache key depends on dossier invites" do - expect(user_dossiers).to receive(:present?).twice + expect(user_dossiers).to receive(:present?).exactly(4).times render create(:invite, user:) @@ -159,7 +159,7 @@ describe 'users/dossiers/index', type: :view do end it "cache key depends on dossier deletion" do - expect(user_dossiers).to receive(:present?).twice + expect(user_dossiers).to receive(:present?).exactly(4).times render dossier_termine.hide_and_keep_track!(:automatic, :expired)