File tree Expand file tree Collapse file tree 6 files changed +79
-8
lines changed
app/components/primer/open_project
previews/primer/open_project
filterable_tree_view_preview
test/components/primer/open_project Expand file tree Collapse file tree 6 files changed +79
-8
lines changed Original file line number Diff line number Diff line change 77 <%= render(@filter_mode_control) %>
88 <% end %>
99 <% end %>
10- <%= render(Primer::Alpha::StackItem.new) do %>
10+ <%= render(Primer::Alpha::StackItem.new(hidden: @include_sub_items_check_box_arguments[:hidden]) ) do %>
1111 <%= render(@include_sub_items_check_box) do |input| %>
1212 <% input.merge_input_arguments!(form: "") %>
1313 <% end %>
Original file line number Diff line number Diff line change @@ -126,7 +126,9 @@ class FilterableTreeView < Primer::Component
126126
127127 DEFAULT_INCLUDE_SUB_ITEMS_CHECK_BOX_ARGUMENTS = {
128128 label : I18n . t ( "filterable_tree_view.include_sub_items" ) ,
129- name : :include_sub_items
129+ name : :include_sub_items ,
130+ checked : false ,
131+ hidden : false ,
130132 }
131133
132134 DEFAULT_INCLUDE_SUB_ITEMS_CHECK_BOX_ARGUMENTS . freeze
@@ -194,13 +196,15 @@ def initialize(
194196 @filter_mode_control = Primer ::Alpha ::SegmentedControl . new ( **filter_mode_control_arguments )
195197 end
196198
197- include_sub_items_check_box_arguments [ :data ] = merge_data (
198- include_sub_items_check_box_arguments , {
199+ @include_sub_items_check_box_arguments = include_sub_items_check_box_arguments . reverse_merge ( DEFAULT_INCLUDE_SUB_ITEMS_CHECK_BOX_ARGUMENTS )
200+
201+ @include_sub_items_check_box_arguments [ :data ] = merge_data (
202+ @include_sub_items_check_box_arguments , {
199203 data : { target : "filterable-tree-view.includeSubItemsCheckBox" }
200204 }
201205 )
202206
203- @include_sub_items_check_box = Primer ::Alpha ::CheckBox . new ( **include_sub_items_check_box_arguments )
207+ @include_sub_items_check_box = Primer ::Alpha ::CheckBox . new ( **@ include_sub_items_check_box_arguments)
204208
205209 @system_arguments = deny_tag_argument ( **system_arguments )
206210 @system_arguments [ :tag ] = :"filterable-tree-view"
Original file line number Diff line number Diff line change @@ -7,9 +7,13 @@ class FilterableTreeViewPreview < ViewComponent::Preview
77 # @label Playground
88 #
99 # @param expanded [Boolean] toggle
10- def playground ( expanded : true )
10+ # @param show_checkbox [Boolean] toggle
11+ # @param show_segmented_control [Boolean] toggle
12+ def playground ( expanded : true , show_checkbox : true , show_segmented_control : true )
1113 render_with_template ( locals : {
12- expanded : coerce_bool ( expanded )
14+ expanded : coerce_bool ( expanded ) ,
15+ show_checkbox : coerce_bool ( show_checkbox ) ,
16+ show_segmented_control : coerce_bool ( show_segmented_control )
1317 } )
1418 end
1519
@@ -106,6 +110,16 @@ def custom_checkbox_text(expanded: true)
106110 } )
107111 end
108112
113+ # @label Hide checkbox
114+ #
115+ # @param include_sub_items [Boolean] toggle
116+ def hide_checkbox ( include_sub_items : true )
117+ render_with_template ( locals : {
118+ expanded : true ,
119+ include_sub_items : coerce_bool ( include_sub_items )
120+ } )
121+ end
122+
109123 # @label Hide SegmentedControl
110124 def hide_segmented_control ( expanded : true )
111125 render_with_template ( locals : {
Original file line number Diff line number Diff line change 1+ <%= render(Primer::OpenProject::FilterableTreeView.new(
2+ include_sub_items_check_box_arguments: { hidden: true, checked: include_sub_items }
3+ )) do |tree| %>
4+ <% tree.with_sub_tree(label: "Students", expanded: expanded) do |hogwarts| %>
5+ <% hogwarts.with_sub_tree(label: "Ravenclaw", expanded: expanded) do |ravenclaw| %>
6+ <% ravenclaw.with_leaf(label: "Luna Lovegood") %>
7+ <% end %>
8+
9+ <% hogwarts.with_sub_tree(label: "Slytherin", expanded: expanded) do |hufflepuff| %>
10+ <% hufflepuff.with_leaf(label: "Draco Malfoy") %>
11+ <% end %>
12+
13+ <% hogwarts.with_sub_tree(label: "Hufflepuff", expanded: expanded) do |hufflepuff| %>
14+ <% hufflepuff.with_leaf(label: "Susan Bones") %>
15+ <% end %>
16+
17+ <% hogwarts.with_sub_tree(label: "Gryffindor", expanded: expanded) do |hufflepuff| %>
18+ <% hufflepuff.with_leaf(label: "Harry Potter") %>
19+ <% hufflepuff.with_leaf(label: "Ronald Weasley") %>
20+ <% hufflepuff.with_leaf(label: "Hermione Granger") %>
21+ <% end %>
22+ <% end %>
23+
24+ <% tree.with_leaf(label: "Albus Dumbledore") %>
25+ <% tree.with_leaf(label: "Minerva McGonagall") %>
26+ <% tree.with_leaf(label: "Severus Snape") %>
27+ <% tree.with_leaf(label: "Rubeus Hagrid") %>
28+ <% end %>
Original file line number Diff line number Diff line change 1- <%= render(Primer::OpenProject::FilterableTreeView.new) do |tree| %>
1+ <%= render(Primer::OpenProject::FilterableTreeView.new(
2+ include_sub_items_check_box_arguments: { hidden: !show_checkbox },
3+ **(show_segmented_control ? {} : { filter_mode_control_arguments: :none })
4+ )) do |tree| %>
25 <% tree.with_sub_tree(label: "Students", expanded: expanded) do |hogwarts| %>
36 <% hogwarts.with_sub_tree(label: "Ravenclaw", expanded: expanded) do |ravenclaw| %>
47 <% ravenclaw.with_leaf(label: "Luna Lovegood") %>
Original file line number Diff line number Diff line change @@ -71,6 +71,28 @@ def test_has_include_sub_items_check_box
7171 assert_selector ( "label[for='#{ id } ']" , text : "Include sub-items" )
7272 end
7373
74+ def test_include_sub_items_can_be_hidden
75+ render_inline (
76+ Primer ::OpenProject ::FilterableTreeView . new (
77+ include_sub_items_check_box_arguments : { hidden : true }
78+ )
79+ )
80+
81+ assert_selector ( ".FormControl-checkbox-wrap" , visible : :hidden )
82+ assert_selector ( "input[name=include_sub_items]" , visible : :hidden )
83+ end
84+
85+ def test_include_sub_items_can_have_a_different_default
86+ render_inline (
87+ Primer ::OpenProject ::FilterableTreeView . new (
88+ include_sub_items_check_box_arguments : { checked : true }
89+ )
90+ )
91+
92+ assert_selector ( ".FormControl-checkbox-wrap" , visible : :visible )
93+ assert_selector ( "input[name=include_sub_items][checked=checked]" , visible : :visible )
94+ end
95+
7496 def test_has_filter_input
7597 render_preview ( :default )
7698
You can’t perform that action at this time.
0 commit comments