refactor(instructeur): instruction menu as component
This commit is contained in:
parent
a85e10582d
commit
3c4ea6f8cf
7 changed files with 140 additions and 54 deletions
24
app/components/instructeurs/instruction_menu_component.rb
Normal file
24
app/components/instructeurs/instruction_menu_component.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Instructeurs::InstructionMenuComponent < ApplicationComponent
|
||||
attr_reader :dossier
|
||||
|
||||
def initialize(dossier:)
|
||||
@dossier = dossier
|
||||
end
|
||||
|
||||
def render?
|
||||
return true if dossier.en_instruction?
|
||||
return true if dossier.en_construction? && dossier.may_flag_as_pending_correction?
|
||||
|
||||
false
|
||||
end
|
||||
|
||||
def menu_label
|
||||
if dossier.en_instruction?
|
||||
t(".instruct")
|
||||
else
|
||||
"Demander une correction"
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
en:
|
||||
instruct: Instruct the file
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
fr:
|
||||
instruct: Instruire le dossier
|
|
@ -0,0 +1,54 @@
|
|||
= render Dropdown::MenuComponent.new(wrapper: :div, wrapper_options: { data: { turbo_force: :server } }, role: :region) do |menu|
|
||||
- menu.with_button_inner_html do
|
||||
= menu_label
|
||||
|
||||
- if dossier.en_instruction?
|
||||
- menu.with_item do
|
||||
= link_to('#', onclick: "DS.showMotivation(event, 'accept');", role: 'menuitem') do
|
||||
%span.icon.accept
|
||||
.dropdown-description
|
||||
%h4 Accepter
|
||||
L’usager sera informé que son dossier a été accepté
|
||||
|
||||
- menu.with_item(class: "hidden inactive form-inside") do
|
||||
= render partial: 'instructeurs/dossiers/instruction_button_motivation', locals: { dossier: dossier, placeholder: 'Expliquez au demandeur pourquoi ce dossier est accepté (facultatif)', popup_class: 'accept', process_action: 'accepter', title: 'Accepter', confirm: "Confirmez-vous l'acceptation ce dossier ?" }
|
||||
|
||||
- menu.with_item do
|
||||
= link_to('#', onclick: "DS.showMotivation(event, 'without-continuation');", role: 'menuitem') do
|
||||
%span.icon.without-continuation
|
||||
.dropdown-description
|
||||
%h4 Classer sans suite
|
||||
L’usager sera informé que son dossier a été classé sans suite
|
||||
|
||||
- menu.with_item(class: "hidden inactive form-inside") do
|
||||
= render partial: 'instructeurs/dossiers/instruction_button_motivation', locals: { dossier: dossier, placeholder: 'Expliquez au demandeur pourquoi ce dossier est classé sans suite (obligatoire)', popup_class: 'without-continuation', process_action: 'classer_sans_suite', title: 'Classer sans suite', confirm: 'Confirmez-vous le classement sans suite de ce dossier ?' }
|
||||
|
||||
- menu.with_item do
|
||||
= link_to('#', onclick: "DS.showMotivation(event, 'refuse');", role: 'menuitem') do
|
||||
%span.icon.refuse
|
||||
.dropdown-description
|
||||
%h4 Refuser
|
||||
L’usager sera informé que son dossier a été refusé
|
||||
|
||||
- menu.with_item(class: "hidden inactive form-inside") do
|
||||
= render partial: 'instructeurs/dossiers/instruction_button_motivation', locals: { dossier: 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 ?' }
|
||||
|
||||
- if dossier.may_flag_as_pending_correction?
|
||||
- menu.with_item do
|
||||
= link_to('#', onclick: "DS.showMotivation(event, 'pending_correction');", role: 'menuitem') do
|
||||
%span.fr-icon.fr-icon-error-warning-line.fr-text-default--info{ "aria-hidden": "true" }
|
||||
.dropdown-description
|
||||
%h4 Demander une correction
|
||||
L’usager sera informé que des modifications sont attendues
|
||||
|
||||
- menu.with_item(class: class_names("inactive form-inside": true, hidden: dossier.en_instruction?)) do
|
||||
= render partial: 'instructeurs/dossiers/instruction_button_motivation', locals: { dossier: dossier,
|
||||
visible: !dossier.en_instruction?,
|
||||
form_path: pending_correction_instructeur_dossier_path(dossier.procedure, dossier),
|
||||
placeholder: 'Expliquez au demandeur quelle(s) correction(s) sont attendues',
|
||||
popup_class: 'pending_correction',
|
||||
button_justificatif_label: "Ajouter une pièce jointe (facultatif)",
|
||||
process_button: dossier.en_construction? ? 'Valider' : 'Valider et repasser en construction',
|
||||
process_action: nil,
|
||||
title: 'Marquer en attente de corrections',
|
||||
confirm: 'Envoyer la demande de corrections ?'}
|
|
@ -10,4 +10,4 @@
|
|||
turbo: true }
|
||||
|
||||
%li.instruction-button
|
||||
= render partial: "instruction_button", locals: { dossier: dossier }
|
||||
= render Instructeurs::InstructionMenuComponent.new(dossier:)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue