[chore] add forms dsl input for filterable tree views

This commit is contained in:
Eric Schubert
2026-06-03 12:52:36 +02:00
committed by Alexander Brandon Coles
parent 2985562c74
commit 2c574f623e
5 changed files with 146 additions and 31 deletions
@@ -35,37 +35,24 @@ module Wikis
f.hidden(name: :linkable_type)
f.hidden(name: :linkable_id)
f.html_content do
render(
Primer::OpenProject::FilterableTreeView.new(
src: helpers.search_wiki_pages_path(provider_id: model.provider_id, name: "wiki_page_selection"),
form_arguments: { builder: rails_builder(f), name: "wiki_page_selection" },
filter_mode_control_arguments: { hidden: true },
filter_input_arguments: {
placeholder: I18n.t("wikis.link_existing_wiki_page_form.placeholder"),
# every other property is just refilling the default values,
# as those are not merged into custom arguments
name: :filter,
label: I18n.t(:button_filter),
type: :search,
leading_visual: { icon: :search },
visually_hide_label: true,
show_clear_button: true
},
include_sub_items_check_box_arguments: { hidden: true },
no_results_node_arguments: { label: I18n.t("wikis.link_existing_wiki_page_form.no_results") }
)
)
end
end
private
# Primer's FormObject stores the underlying ActionView/Primer form builder
# as @builder. FilterableTreeView requires an ActionView::FormBuilder to
# generate its hidden form inputs via hidden_field.
def rails_builder(form)
form.instance_variable_get(:@builder)
f.filterable_tree_view(
name: "wiki_page_selection",
src: helpers.search_wiki_pages_path(provider_id: model.provider_id, name: "wiki_page_selection"),
filter_mode_control_arguments: { hidden: true },
filter_input_arguments: {
placeholder: I18n.t("wikis.link_existing_wiki_page_form.placeholder"),
# every other property is just refilling the default values,
# as those are not merged into custom arguments
name: :filter,
label: I18n.t(:button_filter),
type: :search,
leading_visual: { icon: :search },
visually_hide_label: true,
show_clear_button: true
},
include_sub_items_check_box_arguments: { hidden: true },
no_results_node_arguments: { label: I18n.t("wikis.link_existing_wiki_page_form.no_results") }
)
end
end
end