refactor(champ): update champ drop_down_list
This commit is contained in:
parent
cb01f15570
commit
f0f88ef3f0
3 changed files with 12 additions and 2 deletions
|
@ -23,4 +23,13 @@ class EditableChamp::DropDownListComponent < EditableChamp::EditableChampBaseCom
|
||||||
max_length = 100
|
max_length = 100
|
||||||
@champ.enabled_non_empty_options.any? { _1.size > max_length }
|
@champ.enabled_non_empty_options.any? { _1.size > max_length }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def react_props
|
||||||
|
react_input_opts(id: @champ.input_id,
|
||||||
|
class: 'fr-mt-1w',
|
||||||
|
name: @form.field_name(:value),
|
||||||
|
selected_key: @champ.selected,
|
||||||
|
items: @champ.enabled_non_empty_options(other: true).map { _1.is_a?(Array) ? _1 : [_1, _1] },
|
||||||
|
empty_filter_key: @champ.drop_down_other? ? Champs::DropDownListChamp::OTHER : nil)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,7 +18,8 @@
|
||||||
%label.fr-label{ for: dom_id(@champ, "radio_option_other") }
|
%label.fr-label{ for: dom_id(@champ, "radio_option_other") }
|
||||||
= t('shared.champs.drop_down_list.other')
|
= t('shared.champs.drop_down_list.other')
|
||||||
- elsif @champ.render_as_combobox?
|
- elsif @champ.render_as_combobox?
|
||||||
= render Dsfr::ComboboxComponent.new form: @form, options: @champ.enabled_non_empty_options(other: true), selected: @champ.selected, input_html_options: { name: :value, id: @champ.input_id, class: select_class_names, describedby: @champ.describedby_id }
|
%react-fragment
|
||||||
|
= render ReactComponent.new "ComboBox/SingleComboBox", **react_props
|
||||||
- else
|
- else
|
||||||
= @form.select :value,
|
= @form.select :value,
|
||||||
@champ.enabled_non_empty_options(other: true),
|
@champ.enabled_non_empty_options(other: true),
|
||||||
|
|
|
@ -285,7 +285,7 @@ class Champ < ApplicationRecord
|
||||||
return if value.nil?
|
return if value.nil?
|
||||||
return if value.present? && !value.include?("\u0000")
|
return if value.present? && !value.include?("\u0000")
|
||||||
|
|
||||||
self.value = value.delete("\u0000")
|
write_attribute(:value, value.delete("\u0000"))
|
||||||
end
|
end
|
||||||
|
|
||||||
class NotImplemented < ::StandardError
|
class NotImplemented < ::StandardError
|
||||||
|
|
Loading…
Reference in a new issue