From b7a5f8bf7f6336b16f6e6c193d4dc1c6f7200a95 Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Tue, 14 Feb 2023 17:57:50 +0100 Subject: [PATCH] extract actions and info from dropdown --- app/assets/stylesheets/dossiers_table.scss | 2 +- app/assets/stylesheets/dsfr.scss | 4 + .../instructeurs/dossiers_controller.rb | 6 +- .../dossiers/_header_actions.html.haml | 17 ++-- .../dossiers/_state_button.html.haml | 79 +------------------ .../procedures/_dossier_actions.html.haml | 59 +++++++------- .../dossiers/_infos_generales.html.haml | 15 ++++ 7 files changed, 65 insertions(+), 117 deletions(-) diff --git a/app/assets/stylesheets/dossiers_table.scss b/app/assets/stylesheets/dossiers_table.scss index aa1aaf791..471158b56 100644 --- a/app/assets/stylesheets/dossiers_table.scss +++ b/app/assets/stylesheets/dossiers_table.scss @@ -78,7 +78,7 @@ } .follow-col { - width: 200px; + width: 450px; .fr-btn { margin-bottom: 0; diff --git a/app/assets/stylesheets/dsfr.scss b/app/assets/stylesheets/dsfr.scss index 42e777d35..1cbcf1697 100644 --- a/app/assets/stylesheets/dsfr.scss +++ b/app/assets/stylesheets/dsfr.scss @@ -56,3 +56,7 @@ fieldset { } } +.fr-btns-group--sm.fr-btns-group--icon-right .fr-btn[class*=" fr-icon-"].icon-only::after { + margin-left: 0; + margin-right: 0; +} diff --git a/app/controllers/instructeurs/dossiers_controller.rb b/app/controllers/instructeurs/dossiers_controller.rb index 09bf7222b..05b13ee05 100644 --- a/app/controllers/instructeurs/dossiers_controller.rb +++ b/app/controllers/instructeurs/dossiers_controller.rb @@ -134,7 +134,7 @@ module Instructeurs end @dossier = dossier - render :change_state + redirect_back(fallback_location: instructeur_procedure_path(procedure)) end def repasser_en_construction @@ -146,7 +146,7 @@ module Instructeurs end @dossier = dossier - render :change_state + redirect_back(fallback_location: instructeur_procedure_path(procedure)) end def repasser_en_instruction @@ -158,7 +158,7 @@ module Instructeurs end @dossier = dossier - render :change_state + redirect_back(fallback_location: instructeur_procedure_path(procedure)) end def terminer diff --git a/app/views/instructeurs/dossiers/_header_actions.html.haml b/app/views/instructeurs/dossiers/_header_actions.html.haml index d72f2ff70..9687daf3c 100644 --- a/app/views/instructeurs/dossiers/_header_actions.html.haml +++ b/app/views/instructeurs/dossiers/_header_actions.html.haml @@ -1,13 +1,12 @@ %ul.fr-btns-group.fr-btns-group--sm.fr-btns-group--inline-md.fr-btns-group--icon-right.flex.justify-end.fr-mb-1w - %li - = render partial: "instructeurs/procedures/dossier_actions", - locals: { procedure_id: dossier.procedure.id, - dossier_id: dossier.id, - state: dossier.state, - archived: dossier.archived, - dossier_is_followed: current_instructeur&.follow?(dossier), - close_to_expiration: dossier.close_to_expiration?, - hidden_by_administration: dossier.hidden_by_administration? } + = render partial: "instructeurs/procedures/dossier_actions", + locals: { procedure_id: dossier.procedure.id, + dossier_id: dossier.id, + state: dossier.state, + archived: dossier.archived, + dossier_is_followed: current_instructeur&.follow?(dossier), + close_to_expiration: dossier.close_to_expiration?, + hidden_by_administration: dossier.hidden_by_administration? } %li.state-button = render partial: "state_button", locals: { dossier: dossier } diff --git a/app/views/instructeurs/dossiers/_state_button.html.haml b/app/views/instructeurs/dossiers/_state_button.html.haml index c8a2e172e..14fa8509e 100644 --- a/app/views/instructeurs/dossiers/_state_button.html.haml +++ b/app/views/instructeurs/dossiers/_state_button.html.haml @@ -1,34 +1,7 @@ -= render Dropdown::MenuComponent.new(wrapper: :div, wrapper_options: { data: {'turbo-force': true} }, button_options: { class: [button_or_label_class(dossier)] }) do |menu| - - menu.with_button_inner_html do - = dossier_display_state(dossier) - - - if dossier.en_construction? - - menu.with_item(aria: {disabled:"true"}, class: 'selected') do - %span.icon.edit - .dropdown-description - %h4 En construction - Vous permettez à l'usager de modifier ses réponses au formulaire - - - menu.with_item('data-turbo': 'true') do - = link_to(passer_en_instruction_instructeur_dossier_path(dossier.procedure, dossier), data: { turbo_method: :post, turbo_confirm: "Confirmez-vous le passage en instruction de ce dossier ?", turbo: true }, role: 'menuitem') do - %span.icon.in-progress - .dropdown-description - %h4 Passer en instruction - L’usager ne pourra plus modifier le formulaire - - - elsif dossier.en_instruction? - - menu.with_item('data-turbo': 'true') do - = link_to(repasser_en_construction_instructeur_dossier_path(dossier.procedure, dossier), data: { turbo_method: :post, turbo_confirm: "Confirmez-vous le passage en construction de ce dossier ?"}, role: 'menuitem') do - %span.icon.edit - .dropdown-description - %h4 Repasser en construction - Vous permettrez à l'usager de modifier ses réponses au formulaire - - - menu.with_item(aria: {disabled:"true"}, class: 'selected') do - %span.icon.in-progress - .dropdown-description - %h4 En instruction - L’usager ne peut modifier son dossier pendant l'instruction +- if dossier.en_instruction? + = render Dropdown::MenuComponent.new(wrapper: :div, wrapper_options: { data: {'turbo-force': true} }, button_options: { class: [button_or_label_class(dossier)] }) do |menu| + - menu.with_button_inner_html do + Instruire le dossier - menu.with_item do = link_to('#', onclick: "DS.showMotivation(event, 'accept');", role: 'menuitem') do @@ -61,47 +34,3 @@ - menu.with_form do = render partial: 'instructeurs/dossiers/state_button_motivation', locals: { dossier: dossier, popup_title: 'Refuser le dossier', placeholder: 'Expliquez au demandeur pourquoi ce dossier est refusé (obligatoire)', popup_class: 'refuse', process_action: 'refuser', title: 'Refuser', confirm: 'Confirmez-vous le refus de ce dossier ?' } - - - elsif dossier.termine? - - if dossier.motivation.present? - - menu.with_item(class: 'inactive') do - %span.icon.info - .dropdown-description - %h4 Motivation - %p « #{dossier.motivation} » - - - if dossier.justificatif_motivation.attached? - - menu.with_item(class: 'inactive') do - %span.icon.justificatif - .dropdown-description - %h4 Justificatif - %p Ce justificatif joint par l’instructeur a été envoyé au demandeur. - = render partial: 'users/dossiers/show/download_justificatif', locals: { dossier: dossier } - - - if dossier.attestation.present? - - menu.with_item do - = link_to(attestation_instructeur_dossier_path(dossier.procedure, dossier), target: '_blank', rel: 'noopener', role: 'menuitem') do - %span.icon.preview - .dropdown-description - %h4 Voir l’attestation - %p Cette attestation a été envoyée automatiquement au demandeur. - - - if dossier.can_repasser_en_instruction? - - menu.with_item do - = link_to(repasser_en_instruction_instructeur_dossier_path(dossier.procedure, dossier), data: { turbo_method: :post, turbo_confirm: "Voulez vous remettre le dossier #{dossier.id} en instruction ?", turbo: true }, role: 'menuitem') do - %span.icon.in-progress - .dropdown-description - %h4 Repasser en instruction - L’usager sera notifié que son dossier est réexaminé. - - elsif dossier.user_deleted? - - menu.with_item do - %span.icon.info - .dropdown-description - %h4 En attente d’archivage - L’usager a supprimé son compte. Vous pouvez archiver puis supprimer le dossier. - - - menu.with_item do - = link_to(instructeur_dossier_path(dossier.procedure, dossier), method: :delete, role: 'menuitem') do - %span.icon.delete - .dropdown-description - %h4 Supprimer le dossier diff --git a/app/views/instructeurs/procedures/_dossier_actions.html.haml b/app/views/instructeurs/procedures/_dossier_actions.html.haml index 3c9bf64d4..8c4b5ec9d 100644 --- a/app/views/instructeurs/procedures/_dossier_actions.html.haml +++ b/app/views/instructeurs/procedures/_dossier_actions.html.haml @@ -1,42 +1,43 @@ - if hidden_by_administration - = link_to restore_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: "fr-btn fr-btn--secondary" do - = t('views.instructeurs.dossiers.restore') + %li + = link_to restore_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: "fr-btn" do + = t('views.instructeurs.dossiers.restore') - elsif close_to_expiration || Dossier::TERMINE.include?(state) - = render Dropdown::MenuComponent.new(wrapper: :li, button_options: { class: ['fr-mb-0']}, menu_options: { id: "dossier_#{dossier_id}_actions_menu", class: 'user-dossier-actions' }) do |menu| - - menu.with_button_inner_html do - Actions - + %li - if close_to_expiration - - menu.with_item do - = link_to(repousser_expiration_instructeur_dossier_path(procedure_id, dossier_id), method: :post, role: 'menuitem') do - %span.icon.standby - %span.dropdown-description= t('instructeurs.dossiers.header.banner.button_delay_expiration') + = link_to(repousser_expiration_instructeur_dossier_path(procedure_id, dossier_id), method: :post, class: "fr-btn") do + = t('instructeurs.dossiers.header.banner.button_delay_expiration') - if archived - - menu.with_item do - = link_to( unarchive_instructeur_dossier_path(procedure_id, dossier_id), role: 'menuitem', method: :patch) do - %span.icon.unarchive - %span.dropdown-description - Désarchiver le dossier + = link_to( unarchive_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: "fr-btn") do + Désarchiver le dossier - else - - menu.with_item do - = link_to( archive_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, role: 'menuitem') do - %span.icon.archive - %span.dropdown-description - Archiver le dossier + = link_to(repasser_en_instruction_instructeur_dossier_path(procedure_id, dossier_id), method: :post, class: 'fr-btn fr-btn--secondary fr-icon-edit-line') do + Repasser en instruction - - menu.with_item(class: 'danger') do - = link_to(instructeur_dossier_path(procedure_id, dossier_id), method: :delete, role: 'menuitem') do - %span.icon.delete - %span.dropdown-description - = t('views.instructeurs.dossiers.delete_dossier') + = link_to( archive_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: 'fr-btn fr-icon-folder-2-line') do + Archiver le dossier + + = link_to('', instructeur_dossier_path(procedure_id, dossier_id), method: :delete, class: 'fr-btn fr-btn--secondary fr-icon-delete-line icon-only') - elsif Dossier::EN_CONSTRUCTION_OU_INSTRUCTION.include?(state) + - if Dossier.states[:en_construction] == state + %li + = link_to passer_en_instruction_instructeur_dossier_path(procedure_id, dossier_id), method: :post, class: 'fr-btn fr-btn--secondary fr-icon-edit-line' do + Passer en instruction + - elsif Dossier.states[:en_instruction] == state + %li + = link_to repasser_en_construction_instructeur_dossier_path(procedure_id, dossier_id), method: :post, class: 'fr-btn fr-btn--secondary fr-icon-draft-line' do + Repasser en construction + + - if dossier_is_followed - = link_to unfollow_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: 'fr-btn fr-btn--secondary fr-icon-star-fill' do - = t('views.instructeurs.dossiers.stop_follow') + %li + = link_to unfollow_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: 'fr-btn fr-btn--secondary fr-icon-star-fill' do + = t('views.instructeurs.dossiers.stop_follow') - else - = link_to follow_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: 'fr-btn fr-btn--secondary fr-icon-star-line' do - = t('views.instructeurs.dossiers.follow_file') + %li + = link_to follow_instructeur_dossier_path(procedure_id, dossier_id), method: :patch, class: 'fr-btn fr-icon-star-line' do + = t('views.instructeurs.dossiers.follow_file') diff --git a/app/views/shared/dossiers/_infos_generales.html.haml b/app/views/shared/dossiers/_infos_generales.html.haml index 0a4c6242b..369667d56 100644 --- a/app/views/shared/dossiers/_infos_generales.html.haml +++ b/app/views/shared/dossiers/_infos_generales.html.haml @@ -3,9 +3,24 @@ %tr %td.libelle Déposé le : %td= l(dossier.depose_at, format: '%d %B %Y') + + - if dossier.motivation.present? + %tr + %td.libelle Motivation : + %td + .action + = dossier.motivation + - if dossier.justificatif_motivation.attached? %tr %td.libelle Justificatif : %td .action = render Attachment::ShowComponent.new(attachment: dossier.justificatif_motivation.attachment) + + - if dossier.attestation.present? + %tr + %td.libelle Attestation : + %td + .action + = link_to(attestation_instructeur_dossier_path(dossier.procedure, dossier), target: '_blank', rel: 'noopener')