diff --git a/app/components/dossiers/batch_operation_inline_buttons_component/batch_operation_inline_buttons_component.html.haml b/app/components/dossiers/batch_operation_inline_buttons_component/batch_operation_inline_buttons_component.html.haml index be2e84e15..b40976b61 100644 --- a/app/components/dossiers/batch_operation_inline_buttons_component/batch_operation_inline_buttons_component.html.haml +++ b/app/components/dossiers/batch_operation_inline_buttons_component/batch_operation_inline_buttons_component.html.haml @@ -1,5 +1,5 @@ - if opt[:operation] == 'accepter' - .dropdown{ data: { controller: 'menu-button', popover: 'true', operation: opt[:operation] } } + .dropdown{ data: { controller: 'menu-button', popover: 'true', operation: opt[:operation] }, id: 'dropdown_batch' } -# Dropdown button title %button{ disabled: true, class: ['fr-btn fr-btn--sm fr-btn--icon-left fr-ml-1w', icons[opt[:operation].to_sym]], disabled: true, name: "#{form.object_name}[operation]" , data: { menu_button_target: 'button' } } = opt[:label] @@ -17,12 +17,15 @@ .motivation.accept = form.text_area :motivation, class: 'fr-input' #justificatif_motivation_suggest_accept.optional-justificatif - %button.button{ type: 'button', onclick: "DS.showImportJustificatif('accept');" } Ajouter un justificatif (optionnel) + %button.fr-btn.fr-btn--sm.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-attachment-line.fr-ml-0{ type: 'button', onclick: "DS.showImportJustificatif('accept');" } Ajouter un justificatif (optionnel) #justificatif_motivation_import_accept.hidden - = form.file_field :justificatif_motivation, direct_upload: true + = form.file_field :justificatif_motivation, direct_upload: true, id: "dossier_justificatif_motivation_accept", onchange: "DS.showDeleteJustificatif('accept');" + .hidden.js_delete_motivation{ id: "delete_motivation_import_accept" } + %button.fr-btn.fr-btn--sm.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-delete-line.fr-ml-0.fr-mt-1w{ type: 'button', onclick: "DS.deleteJustificatif('accept');" } Supprimer le justificatif - = form.button "Valider la décision", class: ['fr-btn fr-mt-2w'], disabled: true, name: "#{form.object_name}[operation]", value: opt[:operation] + = button_tag "Annuler", type: :reset, class: 'fr-btn fr-btn--sm fr-btn--secondary', onclick: 'DS.motivationCancelBatch();' + = form.button "Valider la décision", class: ['fr-btn fr-btn--sm fr-mt-2w'], disabled: true, name: "#{form.object_name}[operation]", value: opt[:operation] - else = form.button opt[:label], class: ['fr-btn fr-btn--sm fr-btn--icon-left fr-ml-1w', icons[opt[:operation].to_sym]], disabled: true, name: "#{form.object_name}[operation]", value: opt[:operation], data: { operation: opt[:operation] } diff --git a/app/javascript/entrypoints/application.js b/app/javascript/entrypoints/application.js index 804d3d215..3801b6038 100644 --- a/app/javascript/entrypoints/application.js +++ b/app/javascript/entrypoints/application.js @@ -18,7 +18,10 @@ import { toggleCondidentielExplanation } from '../new_design/avis'; import { showMotivation, motivationCancel, - showImportJustificatif + motivationCancelBatchDropdown, + showImportJustificatif, + showDeleteJustificatif, + deleteJustificatif } from '../new_design/instruction-button'; import { showFusion, showNewAccount } from '../new_design/fc-fusion'; @@ -30,7 +33,10 @@ const DS = { toggleCondidentielExplanation, showMotivation, motivationCancel, + motivationCancelBatchDropdown, showImportJustificatif, + showDeleteJustificatif, + deleteJustificatif, showFusion, showNewAccount }; diff --git a/app/javascript/new_design/instruction-button.js b/app/javascript/new_design/instruction-button.js index f2af6c57e..21499c72c 100644 --- a/app/javascript/new_design/instruction-button.js +++ b/app/javascript/new_design/instruction-button.js @@ -17,6 +17,32 @@ export function motivationCancel() { .forEach((el) => hide(el.parentElement)); show(document.querySelector('.dropdown-items')); + + document.querySelectorAll('.js_delete_motivation').forEach(hide); +} + +export function motivationCancelBatchDropdown() { + document.querySelector('#dropdown_batch').classList.remove('open'); + hide(document.querySelector('.js_delete_motivation')); +} + +export function showDeleteJustificatif(name) { + const justificatif = document.querySelector( + '#dossier_justificatif_motivation_' + name + ); + + if (justificatif.value != '') { + show(document.querySelector('#delete_motivation_import_' + name)); + document.querySelector('#delete_motivation_import_' + name); + } +} + +export function deleteJustificatif(name) { + const justificatif = document.querySelector( + '#dossier_justificatif_motivation_' + name + ); + justificatif.value = ''; + hide(document.querySelector('#delete_motivation_import_' + name)); } export function showImportJustificatif(name) { diff --git a/app/views/instructeurs/dossiers/_instruction_button_motivation.html.haml b/app/views/instructeurs/dossiers/_instruction_button_motivation.html.haml index d241281a5..4d089c6e4 100644 --- a/app/views/instructeurs/dossiers/_instruction_button_motivation.html.haml +++ b/app/views/instructeurs/dossiers/_instruction_button_motivation.html.haml @@ -28,9 +28,11 @@ - else = text_area :dossier, :motivation, class: 'fr-input', placeholder: placeholder, required: true .optional-justificatif{ id: "justificatif_motivation_suggest_#{popup_class}", onclick: "DS.showImportJustificatif('#{popup_class}');" } - .fr-btn.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-attachment-line.fr-ml-0 Ajouter un justificatif (optionnel) + %button.fr-btn.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-attachment-line.fr-ml-0{ type: 'button', onclick: "DS.showImportJustificatif('accept');" } Ajouter un justificatif (optionnel) .hidden{ id: "justificatif_motivation_import_#{popup_class}" } - = file_field :dossier, :justificatif_motivation, direct_upload: true - .text-right.fr-mt-2w - %span.fr-btn.fr-btn--secondary{ onclick: 'DS.motivationCancel();' } Annuler + = file_field :dossier, :justificatif_motivation, direct_upload: true, id: "dossier_justificatif_motivation_#{popup_class}",onchange: "DS.showDeleteJustificatif('#{popup_class}');" + .hidden.js_delete_motivation{ id: "delete_motivation_import_#{popup_class}" } + %button.fr-btn.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-delete-line.fr-ml-0.fr-mt-1w{ type: 'button', onclick: "DS.deleteJustificatif('#{popup_class}');" } Supprimer le justificatif + .fr-mt-2w + = button_tag "Annuler", type: :reset, class: 'fr-btn fr-btn--secondary', onclick: 'DS.motivationCancel();' = button_tag 'Valider la décision', name: :process_action, value: process_action, class: 'fr-btn fr-mr-0', title: title