From ecb5eee26a3095fd34bd3a9069275b6f28d07574 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Tue, 3 Dec 2024 16:30:16 +0100 Subject: [PATCH] [#11103] Adapt ToggleComponent to be used with form_with helper --- .../export_dropdown_component.html.haml | 7 +++++++ app/components/dsfr/toggle_component.rb | 14 +++++++++++++- .../toggle_component/toggle_component.html.haml | 4 ++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/components/dossiers/export_dropdown_component/export_dropdown_component.html.haml b/app/components/dossiers/export_dropdown_component/export_dropdown_component.html.haml index b17752c43..b0849762c 100644 --- a/app/components/dossiers/export_dropdown_component/export_dropdown_component.html.haml +++ b/app/components/dossiers/export_dropdown_component/export_dropdown_component.html.haml @@ -15,6 +15,13 @@ .fr-tabs__panel.fr-pb-8w.fr-tabs__panel--selected{ id: "tabpanel-standard#{@count}-panel", role: "tabpanel", "aria-labelledby": "tabpanel-standard#{@count}", tabindex: "0" } = form_with url: download_export_path, namespace: "export#{@count}", data: { turbo_method: :post, turbo: true } do |f| + + .fr-pb-2w + = render Dsfr::ToggleComponent.new(form: f, + target: :include_archived_dossiers, + title: "Include les dossiers archivés", + label_side: :right) + = f.hidden_field :statut, value: @statut %fieldset.fr-fieldset#radio-hint{ "aria-labelledby": "radio-hint-legend" } %legend.fr-fieldset__legend--regular.fr-fieldset__legend#radio-hint-legend Sélectionner le format de l'export diff --git a/app/components/dsfr/toggle_component.rb b/app/components/dsfr/toggle_component.rb index 43084c6f0..c04be9242 100644 --- a/app/components/dsfr/toggle_component.rb +++ b/app/components/dsfr/toggle_component.rb @@ -22,7 +22,19 @@ class Dsfr::ToggleComponent < ApplicationComponent private + def label_for + return input_id if @form.object.present? + + return "#{@form.options[:namespace]}_#{target}" if @form.options[:namespace].present? + + target.to_s + end + def input_id - dom_id(@form.object, target) + if @form.object.present? + dom_id(@form.object, target) + else + target.to_s + end end end diff --git a/app/components/dsfr/toggle_component/toggle_component.html.haml b/app/components/dsfr/toggle_component/toggle_component.html.haml index 90fa24433..e45828038 100644 --- a/app/components/dsfr/toggle_component/toggle_component.html.haml +++ b/app/components/dsfr/toggle_component/toggle_component.html.haml @@ -1,8 +1,8 @@ %div{ class: "fr-toggle fr-toggle--label-left #{extra_class_names}" } = @form.check_box target, class: 'fr-toggle__input', disabled:, data:, id: input_id = @form.label target, - title, - for: input_id, + title || html_title&.html_safe, + for: label_for, data: { 'fr-checked-label': toggle_labels[:checked], 'fr-unchecked-label': toggle_labels[:unchecked] }, class: 'fr-toggle__label'