demarches-normaliennes/app/components/dossiers/edit_footer_component.rb
2024-11-26 14:30:23 +01:00

87 lines
1.9 KiB
Ruby

# frozen_string_literal: true
class Dossiers::EditFooterComponent < ApplicationComponent
delegate :can_passer_en_construction?, :can_transition_to_en_construction?, :forked_with_changes?, to: :@dossier
def initialize(dossier:, annotation:)
@dossier = dossier
@annotation = annotation
end
private
def owner?
controller.current_user.owns?(@dossier)
end
def annotation?
@annotation.present?
end
def can_submit?
can_submit_draft? || can_submit_en_construction?
end
def can_submit_draft?
!annotation? && can_transition_to_en_construction?
end
def can_submit_en_construction?
forked_with_changes?
end
def submit_button_label
if can_submit_draft?
t('.submit')
else
t('.submit_changes')
end
end
def submit_button_path
if can_submit_draft?
brouillon_dossier_path(@dossier)
else
modifier_dossier_path(@dossier.editing_fork_origin)
end
end
def submit_button_options
if can_submit_draft?
submit_draft_button_options
else
submit_en_construction_button_options
end
end
def disabled_submit_button_options
{
class: 'fr-text--sm fr-mb-0 fr-mr-2w',
data: { 'fr-opened': "true" },
aria: { controls: 'modal-eligibilite-rules-dialog' }
}
end
def submit_draft_button_options
{
class: 'fr-btn fr-btn--sm',
disabled: !owner? || !can_passer_en_construction?,
method: :post,
data: { 'disable-with': t('.submitting'), controller: 'autosave-submit', turbo_force: :server }
}
end
def submit_en_construction_button_options
{
class: 'fr-btn fr-btn--sm',
disabled: !can_passer_en_construction?,
method: :post,
data: { 'disable-with': t('.submitting'), controller: 'autosave-submit', turbo_force: :server },
form: { id: "form-submit-en-construction" }
}
end
def render?
!@dossier.for_procedure_preview?
end
end