openproject-primer_view_components 0.70.4 → 0.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/app/assets/javascripts/components/primer/alpha/segmented_control.d.ts +2 -2
- data/app/assets/javascripts/components/primer/open_project/filterable_tree_view.d.ts +29 -0
- data/app/assets/javascripts/components/primer/open_project/tree_view/tree_view.d.ts +11 -1
- data/app/assets/javascripts/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.d.ts +5 -1
- data/app/assets/javascripts/components/primer/primer.d.ts +1 -0
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- data/app/assets/styles/primer_view_components.css +1 -1
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/action_menu/sub_menu_item.rb +4 -0
- data/app/components/primer/alpha/segmented_control.d.ts +2 -2
- data/app/components/primer/alpha/segmented_control.js +12 -0
- data/app/components/primer/alpha/segmented_control.ts +16 -1
- data/app/components/primer/alpha/stack.css +1 -1
- data/app/components/primer/alpha/stack.css.json +5 -1
- data/app/components/primer/alpha/stack.css.map +1 -1
- data/app/components/primer/alpha/stack.pcss +13 -0
- data/app/components/primer/alpha/stack.rb +2 -1
- data/app/components/primer/open_project/filterable_tree_view/sub_tree.rb +39 -0
- data/app/components/primer/open_project/filterable_tree_view.d.ts +29 -0
- data/app/components/primer/open_project/filterable_tree_view.html.erb +28 -0
- data/app/components/primer/open_project/filterable_tree_view.js +409 -0
- data/app/components/primer/open_project/filterable_tree_view.rb +254 -0
- data/app/components/primer/open_project/filterable_tree_view.ts +492 -0
- data/app/components/primer/open_project/page_header.css +1 -1
- data/app/components/primer/open_project/page_header.css.json +1 -1
- data/app/components/primer/open_project/page_header.css.map +1 -1
- data/app/components/primer/open_project/page_header.pcss +4 -4
- data/app/components/primer/open_project/page_header.rb +6 -2
- data/app/components/primer/open_project/tree_view/node.rb +19 -3
- data/app/components/primer/open_project/tree_view/sub_tree_node.rb +14 -4
- data/app/components/primer/open_project/tree_view/tree_view.d.ts +11 -1
- data/app/components/primer/open_project/tree_view/tree_view.js +120 -20
- data/app/components/primer/open_project/tree_view/tree_view.ts +137 -18
- data/app/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.d.ts +5 -1
- data/app/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.js +27 -4
- data/app/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.ts +36 -5
- data/app/components/primer/open_project/tree_view.css +1 -1
- data/app/components/primer/open_project/tree_view.css.json +9 -0
- data/app/components/primer/open_project/tree_view.css.map +1 -1
- data/app/components/primer/open_project/tree_view.html.erb +4 -0
- data/app/components/primer/open_project/tree_view.pcss +48 -0
- data/app/components/primer/open_project/tree_view.rb +6 -1
- data/app/components/primer/primer.d.ts +1 -0
- data/app/components/primer/primer.js +1 -0
- data/app/components/primer/primer.ts +1 -0
- data/app/lib/primer/forms/base_component.rb +1 -1
- data/app/lib/primer/forms/dsl/text_field_input.rb +2 -0
- data/config/locales/en.yml +20 -0
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/alpha/action_menu_preview/sub_menus.html.erb +1 -0
- data/previews/primer/open_project/filterable_tree_view_preview/_custom_select_js.html.erb +62 -0
- data/previews/primer/open_project/filterable_tree_view_preview/custom_checkbox_text.html.erb +26 -0
- data/previews/primer/open_project/filterable_tree_view_preview/custom_no_results_text.html.erb +28 -0
- data/previews/primer/open_project/filterable_tree_view_preview/custom_segmented_control.html.erb +31 -0
- data/previews/primer/open_project/filterable_tree_view_preview/default.html.erb +26 -0
- data/previews/primer/open_project/filterable_tree_view_preview/form_input.html.erb +32 -0
- data/previews/primer/open_project/filterable_tree_view_preview/playground.html.erb +26 -0
- data/previews/primer/open_project/filterable_tree_view_preview.rb +125 -0
- data/previews/primer/open_project/tree_view_preview/buttons.html.erb +4 -4
- data/previews/primer/open_project/tree_view_preview/default.html.erb +4 -4
- data/previews/primer/open_project/tree_view_preview/leaf_node_playground.html.erb +1 -1
- data/previews/primer/open_project/tree_view_preview/links.html.erb +4 -4
- data/previews/primer/open_project/tree_view_preview.rb +18 -8
- data/static/arguments.json +89 -3
- data/static/audited_at.json +2 -0
- data/static/classes.json +3 -0
- data/static/constants.json +40 -1
- data/static/info_arch.json +220 -3
- data/static/previews.json +86 -0
- data/static/statuses.json +2 -0
- metadata +18 -2
@@ -0,0 +1,26 @@
|
|
1
|
+
<%= render(Primer::OpenProject::FilterableTreeView.new) do |tree| %>
|
2
|
+
<% tree.with_sub_tree(label: "Students", expanded: expanded) do |hogwarts| %>
|
3
|
+
<% hogwarts.with_sub_tree(label: "Ravenclaw", expanded: expanded) do |ravenclaw| %>
|
4
|
+
<% ravenclaw.with_leaf(label: "Luna Lovegood") %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<% hogwarts.with_sub_tree(label: "Slytherin", expanded: expanded) do |hufflepuff| %>
|
8
|
+
<% hufflepuff.with_leaf(label: "Draco Malfoy") %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% hogwarts.with_sub_tree(label: "Hufflepuff", expanded: expanded) do |hufflepuff| %>
|
12
|
+
<% hufflepuff.with_leaf(label: "Susan Bones") %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% hogwarts.with_sub_tree(label: "Gryffindor", expanded: expanded) do |hufflepuff| %>
|
16
|
+
<% hufflepuff.with_leaf(label: "Harry Potter") %>
|
17
|
+
<% hufflepuff.with_leaf(label: "Ronald Weasley") %>
|
18
|
+
<% hufflepuff.with_leaf(label: "Hermione Granger") %>
|
19
|
+
<% end %>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<% tree.with_leaf(label: "Albus Dumbledore") %>
|
23
|
+
<% tree.with_leaf(label: "Minerva McGonagall") %>
|
24
|
+
<% tree.with_leaf(label: "Severus Snape") %>
|
25
|
+
<% tree.with_leaf(label: "Rubeus Hagrid") %>
|
26
|
+
<% end %>
|
@@ -0,0 +1,125 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Primer
|
4
|
+
module OpenProject
|
5
|
+
# @label FilterableTreeView
|
6
|
+
class FilterableTreeViewPreview < ViewComponent::Preview
|
7
|
+
# @label Playground
|
8
|
+
#
|
9
|
+
# @param expanded [Boolean] toggle
|
10
|
+
def playground(expanded: true)
|
11
|
+
render_with_template(locals: {
|
12
|
+
expanded: coerce_bool(expanded)
|
13
|
+
})
|
14
|
+
end
|
15
|
+
|
16
|
+
# @label Default
|
17
|
+
#
|
18
|
+
# @snapshot interactive
|
19
|
+
# @param expanded [Boolean] toggle
|
20
|
+
def default(expanded: true)
|
21
|
+
render_with_template(locals: {
|
22
|
+
expanded: coerce_bool(expanded)
|
23
|
+
})
|
24
|
+
end
|
25
|
+
|
26
|
+
# @label Form input
|
27
|
+
#
|
28
|
+
# @param expanded [Boolean] toggle
|
29
|
+
def form_input(expanded: true)
|
30
|
+
render_with_template(locals: {
|
31
|
+
expanded: coerce_bool(expanded)
|
32
|
+
})
|
33
|
+
end
|
34
|
+
|
35
|
+
# @label Custom segmented control
|
36
|
+
#
|
37
|
+
# @snapshot interactive
|
38
|
+
#
|
39
|
+
# ---------------------------
|
40
|
+
# ## Custom filter modes
|
41
|
+
#
|
42
|
+
# In addition to the default filter modes of `'all'` and `'selected'`, `FilterableTreeView` supports
|
43
|
+
# adding custom filter modes. Adding a filter mode will cause its label to appear in the `SegmentedControl` in the
|
44
|
+
# toolbar, and will be passed as the third argument to the filter function (see below).
|
45
|
+
#
|
46
|
+
# Here's how to add a custom filter mode in addition to the default ones:
|
47
|
+
#
|
48
|
+
# ```erb
|
49
|
+
# <%= render(Primer::OpenProject::FilterableTreeView.new) do |tree_view| %>
|
50
|
+
# <%# remove this line to prevent adding the default modes %>
|
51
|
+
# <% tree_view.with_default_filter_modes %>
|
52
|
+
# <% tree_view.with_filter_mode(name: "Custom", system_arguments)
|
53
|
+
# <% end %>
|
54
|
+
# ```
|
55
|
+
#
|
56
|
+
# ### Customizing the filter function
|
57
|
+
#
|
58
|
+
# The filter function can be customized by setting the value of the `filterFn` property to a function with the
|
59
|
+
# following signature:
|
60
|
+
#
|
61
|
+
# ```typescript
|
62
|
+
# export type FilterFn = (node: HTMLElement, query: string, filterMode?: string) => Range[] | null
|
63
|
+
# ```
|
64
|
+
#
|
65
|
+
# This function will be called once for each node in the tree every time filter controls change (i.e. when the
|
66
|
+
# filter mode or query string are altered). The function is called with the following arguments:
|
67
|
+
#
|
68
|
+
# |Argument |Description |
|
69
|
+
# |:-----------|:----------------------------------------------------------------|
|
70
|
+
# |`node` |The HTML node element, i.e. the element with `role=treeitem` set.|
|
71
|
+
# |`query` |The query string. |
|
72
|
+
# |`filterMode`|The filter mode, either `'all'` or `'selected'`. |
|
73
|
+
#
|
74
|
+
# The component expects the filter function to return specific values depending on the type of match:
|
75
|
+
#
|
76
|
+
# 1. No match - return `null`
|
77
|
+
# 2. Match but no highlights (eg. when the query string is empty) - return an empty array
|
78
|
+
# 3. Match with highlights - return a non-empty array of `Range` objects
|
79
|
+
#
|
80
|
+
# Example:
|
81
|
+
#
|
82
|
+
# ```javascript
|
83
|
+
# const filterableTreeView = document.querySelector('filterable-tree-view')
|
84
|
+
# filterableTreeView.filterFn = (node, query, filterMode) => {
|
85
|
+
# // custom filter implementation here
|
86
|
+
# }
|
87
|
+
# ```
|
88
|
+
#
|
89
|
+
def custom_segmented_control(expanded: true)
|
90
|
+
render_with_template(locals: {
|
91
|
+
expanded: coerce_bool(expanded)
|
92
|
+
})
|
93
|
+
end
|
94
|
+
|
95
|
+
# @label Custom no results text
|
96
|
+
def custom_no_results_text(expanded: true)
|
97
|
+
render_with_template(locals: {
|
98
|
+
expanded: coerce_bool(expanded)
|
99
|
+
})
|
100
|
+
end
|
101
|
+
|
102
|
+
# @label Custom checkbox text
|
103
|
+
def custom_checkbox_text(expanded: true)
|
104
|
+
render_with_template(locals: {
|
105
|
+
expanded: coerce_bool(expanded)
|
106
|
+
})
|
107
|
+
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
def coerce_bool(value)
|
112
|
+
case value
|
113
|
+
when true, false
|
114
|
+
value
|
115
|
+
when "true"
|
116
|
+
true
|
117
|
+
when "false"
|
118
|
+
false
|
119
|
+
else
|
120
|
+
false
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<div style="max-width: 400px">
|
2
2
|
<%= render(Primer::OpenProject::TreeView.new(node_variant: :button)) do |tree_view| %>
|
3
|
-
<% tree_view.with_sub_tree(label: "Secrets", expanded: expanded, onclick: "alert('Shhhh')") do |sub_tree| %>
|
4
|
-
<% sub_tree.with_leaf(label: "Life and the universe", onclick: "alert(42)") %>
|
5
|
-
<% sub_tree.with_leaf(label: "Secret ingredient", onclick: "alert('Love')") %>
|
3
|
+
<% tree_view.with_sub_tree(label: "Secrets", expanded: expanded, onclick: "alert('Shhhh')", disabled: disabled) do |sub_tree| %>
|
4
|
+
<% sub_tree.with_leaf(label: "Life and the universe", onclick: "alert(42)", disabled: disabled) %>
|
5
|
+
<% sub_tree.with_leaf(label: "Secret ingredient", onclick: "alert('Love')", disabled: disabled) %>
|
6
6
|
<% end %>
|
7
7
|
|
8
|
-
<% tree_view.with_leaf(label: "What do you give a sick bird?", onclick: "alert('Tweetment')") %>
|
8
|
+
<% tree_view.with_leaf(label: "What do you give a sick bird?", onclick: "alert('Tweetment')", disabled: disabled) %>
|
9
9
|
<% end %>
|
10
10
|
</div>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div style="max-width: 400px">
|
2
2
|
<%= render(Primer::OpenProject::TreeView.new) do |tree_view| %>
|
3
|
-
<% tree_view.with_sub_tree(label: "src", expanded: expanded, select_variant: select_variant, select_strategy: select_strategy) do |sub_tree| %>
|
3
|
+
<% tree_view.with_sub_tree(label: "src", expanded: expanded, disabled: disabled, select_variant: select_variant, select_strategy: select_strategy) do |sub_tree| %>
|
4
4
|
<% sub_tree.with_leading_visual_icons(label: "Foobar") do |icons| %>
|
5
5
|
<% icons.with_expanded_icon(icon: :"file-directory-open-fill", color: :accent) %>
|
6
6
|
<% icons.with_collapsed_icon(icon: :"file-directory-fill", color: :accent) %>
|
@@ -8,16 +8,16 @@
|
|
8
8
|
|
9
9
|
<% sub_tree.with_trailing_visual_icon(icon: :"diff-modified") %>
|
10
10
|
|
11
|
-
<% sub_tree.with_leaf(label: "button.rb", select_variant: select_variant) do |item| %>
|
11
|
+
<% sub_tree.with_leaf(label: "button.rb", disabled: disabled, select_variant: select_variant) do |item| %>
|
12
12
|
<% item.with_leading_visual_icon(icon: :file) %>
|
13
13
|
<% end %>
|
14
14
|
|
15
|
-
<% sub_tree.with_leaf(label: "icon_button.rb", current: true, select_variant: select_variant) do |item| %>
|
15
|
+
<% sub_tree.with_leaf(label: "icon_button.rb", disabled: disabled, current: true, select_variant: select_variant) do |item| %>
|
16
16
|
<% item.with_leading_visual_icon(icon: :file) %>
|
17
17
|
<% end %>
|
18
18
|
<% end %>
|
19
19
|
|
20
|
-
<% tree_view.with_leaf(label: "action_menu.rb", select_variant: select_variant) do |item| %>
|
20
|
+
<% tree_view.with_leaf(label: "action_menu.rb", disabled: disabled, select_variant: select_variant) do |item| %>
|
21
21
|
<% item.with_leading_visual_icon(icon: :file) %>
|
22
22
|
<% end %>
|
23
23
|
<% end %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%= render(Primer::OpenProject::TreeView.new) do |tree| %>
|
2
|
-
<% tree.with_leaf(label: label, select_variant: select_variant) do |node| %>
|
2
|
+
<% tree.with_leaf(label: label, select_variant: select_variant, disabled: disabled) do |node| %>
|
3
3
|
<% if leading_visual_icon && leading_visual_icon != :none %>
|
4
4
|
<% node.with_leading_visual_icon(icon: leading_visual_icon) %>
|
5
5
|
<% end %>
|
@@ -1,16 +1,16 @@
|
|
1
1
|
<div style="max-width: 400px">
|
2
2
|
<%= render(Primer::OpenProject::TreeView.new(node_variant: :anchor)) do |tree_view| %>
|
3
|
-
<% tree_view.with_sub_tree(label: "Cloud Services", href: "https://en.wikipedia.org/wiki/Cloud_computing", target: "blank", expanded: expanded) do |sub_tree| %>
|
4
|
-
<% sub_tree.with_leaf(label: "OpenProject", href: "https://www.openproject.org", target: "blank") do |node| %>
|
3
|
+
<% tree_view.with_sub_tree(label: "Cloud Services", href: "https://en.wikipedia.org/wiki/Cloud_computing", target: "blank", expanded: expanded, disabled: disabled) do |sub_tree| %>
|
4
|
+
<% sub_tree.with_leaf(label: "OpenProject", href: "https://www.openproject.org", target: "blank", disabled: disabled) do |node| %>
|
5
5
|
<% node.with_trailing_visual_icon(icon: :"link-external") %>
|
6
6
|
<% end %>
|
7
7
|
|
8
|
-
<% sub_tree.with_leaf(label: "Hetzner", href: "https://www.hetzner.com", target: "blank") do |node| %>
|
8
|
+
<% sub_tree.with_leaf(label: "Hetzner", href: "https://www.hetzner.com", target: "blank", disabled: disabled) do |node| %>
|
9
9
|
<% node.with_trailing_visual_icon(icon: :"link-external") %>
|
10
10
|
<% end %>
|
11
11
|
<% end %>
|
12
12
|
|
13
|
-
<% tree_view.with_leaf(label: "GitHub", href: "https://github.com", target: "blank") do |node| %>
|
13
|
+
<% tree_view.with_leaf(label: "GitHub", href: "https://github.com", target: "blank", disabled: disabled) do |node| %>
|
14
14
|
<% node.with_trailing_visual_icon(icon: :"link-external") %>
|
15
15
|
<% end %>
|
16
16
|
<% end %>
|
@@ -8,15 +8,18 @@ module Primer
|
|
8
8
|
#
|
9
9
|
# @snapshot interactive
|
10
10
|
# @param expanded [Boolean] toggle
|
11
|
+
# @param disabled [Boolean] toggle
|
11
12
|
# @param select_variant [Symbol] select [multiple, none]
|
12
|
-
# @param select_strategy [Symbol] select [self, descendants]
|
13
|
+
# @param select_strategy [Symbol] select [self, descendants, mixed_descendants]
|
13
14
|
def default(
|
14
15
|
expanded: false,
|
16
|
+
disabled: false,
|
15
17
|
select_variant: Primer::OpenProject::TreeView::Node::DEFAULT_SELECT_VARIANT,
|
16
18
|
select_strategy: Primer::OpenProject::TreeView::SubTreeNode::DEFAULT_SELECT_STRATEGY
|
17
19
|
)
|
18
20
|
render_with_template(locals: {
|
19
21
|
expanded: coerce_bool(expanded),
|
22
|
+
disabled: coerce_bool(disabled),
|
20
23
|
select_variant: select_variant.to_sym,
|
21
24
|
select_strategy: select_strategy.to_sym
|
22
25
|
})
|
@@ -26,7 +29,7 @@ module Primer
|
|
26
29
|
#
|
27
30
|
# @param expanded [Boolean] toggle
|
28
31
|
# @param select_variant [Symbol] select [multiple, none]
|
29
|
-
# @param select_strategy [Symbol] select [self, descendants]
|
32
|
+
# @param select_strategy [Symbol] select [self, descendants, mixed_descendants]
|
30
33
|
def playground(
|
31
34
|
expanded: false,
|
32
35
|
select_variant: Primer::OpenProject::TreeView::Node::DEFAULT_SELECT_VARIANT,
|
@@ -92,37 +95,44 @@ module Primer
|
|
92
95
|
# @param leading_action_icon [Symbol] octicon
|
93
96
|
# @param trailing_visual_icon [Symbol] octicon
|
94
97
|
# @param select_variant [Symbol] select [multiple, none]
|
98
|
+
# @param disabled [Boolean] toggle
|
95
99
|
def leaf_node_playground(
|
96
100
|
label: "Leaf node",
|
97
101
|
leading_visual_icon: nil,
|
98
102
|
leading_action_icon: nil,
|
99
103
|
trailing_visual_icon: nil,
|
100
|
-
select_variant: Primer::OpenProject::TreeView::Node::DEFAULT_SELECT_VARIANT
|
104
|
+
select_variant: Primer::OpenProject::TreeView::Node::DEFAULT_SELECT_VARIANT,
|
105
|
+
disabled: false
|
101
106
|
)
|
102
107
|
render_with_template(locals: {
|
103
108
|
label: label,
|
104
109
|
leading_visual_icon: leading_visual_icon,
|
105
110
|
leading_action_icon: leading_action_icon,
|
106
111
|
trailing_visual_icon: trailing_visual_icon,
|
107
|
-
select_variant: select_variant.to_sym
|
112
|
+
select_variant: select_variant.to_sym,
|
113
|
+
disabled: disabled
|
108
114
|
})
|
109
115
|
end
|
110
116
|
|
111
117
|
# @label Links
|
112
118
|
#
|
113
119
|
# @param expanded [Boolean] toggle
|
114
|
-
|
120
|
+
# @param disabled [Boolean] toggle
|
121
|
+
def links(expanded: false, disabled: false)
|
115
122
|
render_with_template(locals: {
|
116
|
-
expanded: coerce_bool(expanded)
|
123
|
+
expanded: coerce_bool(expanded),
|
124
|
+
disabled: coerce_bool(disabled)
|
117
125
|
})
|
118
126
|
end
|
119
127
|
|
120
128
|
# @label Buttons
|
121
129
|
#
|
122
130
|
# @param expanded [Boolean] toggle
|
123
|
-
|
131
|
+
# @param disabled [Boolean] toggle
|
132
|
+
def buttons(expanded: false, disabled: false)
|
124
133
|
render_with_template(locals: {
|
125
|
-
expanded: coerce_bool(expanded)
|
134
|
+
expanded: coerce_bool(expanded),
|
135
|
+
disabled: coerce_bool(disabled)
|
126
136
|
})
|
127
137
|
end
|
128
138
|
|
data/static/arguments.json
CHANGED
@@ -2671,7 +2671,7 @@
|
|
2671
2671
|
"name": "wrap",
|
2672
2672
|
"type": "Symbol",
|
2673
2673
|
"default": "`:nowrap`",
|
2674
|
-
"description": "Specify whether items are forced onto one line or can wrap onto multiple lines. One of `nil`, `:nowrap`, or `:wrap`."
|
2674
|
+
"description": "Specify whether items are forced onto one line or can wrap onto multiple lines. One of `nil`, `:nowrap`, `:reverse`, or `:wrap`."
|
2675
2675
|
},
|
2676
2676
|
{
|
2677
2677
|
"name": "justify",
|
@@ -5526,6 +5526,74 @@
|
|
5526
5526
|
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/file_tree_view/file_node/default/",
|
5527
5527
|
"parameters": []
|
5528
5528
|
},
|
5529
|
+
{
|
5530
|
+
"component": "OpenProject::FilterableTreeView",
|
5531
|
+
"status": "alpha",
|
5532
|
+
"a11y_reviewed": false,
|
5533
|
+
"short_name": "OpenProjectFilterableTreeView",
|
5534
|
+
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/filterable_tree_view.rb",
|
5535
|
+
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/filterable_tree_view/default/",
|
5536
|
+
"parameters": [
|
5537
|
+
{
|
5538
|
+
"name": "tree_view_arguments",
|
5539
|
+
"type": "Hash",
|
5540
|
+
"default": "`{}`",
|
5541
|
+
"description": "Arguments that will be passed to the underlying [OpenProject::TreeView](/components/openprojecttreeview) component."
|
5542
|
+
},
|
5543
|
+
{
|
5544
|
+
"name": "form_arguments",
|
5545
|
+
"type": "Hash",
|
5546
|
+
"default": "`{}`",
|
5547
|
+
"description": "Form arguments that will be passed to the underlying [OpenProject::TreeView](/components/openprojecttreeview) component. These arguments allow the selections made within a `FilterableTreeView` to be submitted to the server as part of a Rails form. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission."
|
5548
|
+
},
|
5549
|
+
{
|
5550
|
+
"name": "filter_input_arguments",
|
5551
|
+
"type": "Hash",
|
5552
|
+
"default": "`DEFAULT_FILTER_INPUT_ARGUMENTS.dup`",
|
5553
|
+
"description": "Arguments that will be passed to the [TextField](/components/alpha/textfield) component."
|
5554
|
+
},
|
5555
|
+
{
|
5556
|
+
"name": "filter_mode_control_arguments",
|
5557
|
+
"type": "Hash",
|
5558
|
+
"default": "`DEFAULT_FILTER_MODE_CONTROL_ARGUMENTS.dup`",
|
5559
|
+
"description": "Arguments that will be passed to the [SegmentedControl](/components/alpha/segmentedcontrol) component."
|
5560
|
+
},
|
5561
|
+
{
|
5562
|
+
"name": "include_sub_items_check_box_arguments",
|
5563
|
+
"type": "Hash",
|
5564
|
+
"default": "`DEFAULT_INCLUDE_SUB_ITEMS_CHECK_BOX_ARGUMENTS.dup`",
|
5565
|
+
"description": "Arguments that will be passed to the [CheckBox](/components/alpha/checkbox) component."
|
5566
|
+
},
|
5567
|
+
{
|
5568
|
+
"name": "no_results_node_arguments",
|
5569
|
+
"type": "Hash",
|
5570
|
+
"default": "`DEFAULT_NO_RESULTS_NODE_ARGUMENTS.dup`",
|
5571
|
+
"description": "Arguments that will be passed to a [OpenProject::TreeView::LeafNode](/components/openprojecttreeviewleafnode) component that appears when no items match the filter criteria."
|
5572
|
+
}
|
5573
|
+
]
|
5574
|
+
},
|
5575
|
+
{
|
5576
|
+
"component": "OpenProject::FilterableTreeView::SubTree",
|
5577
|
+
"status": "alpha",
|
5578
|
+
"a11y_reviewed": false,
|
5579
|
+
"short_name": "OpenProjectFilterableTreeViewSubTree",
|
5580
|
+
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/filterable_tree_view/sub_tree.rb",
|
5581
|
+
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/filterable_tree_view/sub_tree/default/",
|
5582
|
+
"parameters": [
|
5583
|
+
{
|
5584
|
+
"name": "node_variant",
|
5585
|
+
"type": "Symbol",
|
5586
|
+
"default": "N/A",
|
5587
|
+
"description": "The variant to use for this node. One of `:anchor`, `:button`, or `:div`."
|
5588
|
+
},
|
5589
|
+
{
|
5590
|
+
"name": "system_arguments",
|
5591
|
+
"type": "Hash",
|
5592
|
+
"default": "N/A",
|
5593
|
+
"description": "The arguments accepted by [OpenProject::TreeView::SubTreeContainer](/components/openprojecttreeviewsubtreecontainer)."
|
5594
|
+
}
|
5595
|
+
]
|
5596
|
+
},
|
5529
5597
|
{
|
5530
5598
|
"component": "OpenProject::FlexLayout",
|
5531
5599
|
"status": "open_project",
|
@@ -6081,6 +6149,18 @@
|
|
6081
6149
|
"default": "`false`",
|
6082
6150
|
"description": "The checked state of the node's checkbox. One of `false`, `mixed`, or `true`."
|
6083
6151
|
},
|
6152
|
+
{
|
6153
|
+
"name": "disabled",
|
6154
|
+
"type": "Boolean",
|
6155
|
+
"default": "`false`",
|
6156
|
+
"description": "Whether or not the node can be activated. Passing `false` here will cause the node to appear visually disabled but it is still keyboard-focusable."
|
6157
|
+
},
|
6158
|
+
{
|
6159
|
+
"name": "value",
|
6160
|
+
"type": "String",
|
6161
|
+
"default": "`nil`",
|
6162
|
+
"description": "If this node is checked, this value will be sent to the server on form submission."
|
6163
|
+
},
|
6084
6164
|
{
|
6085
6165
|
"name": "content_arguments",
|
6086
6166
|
"type": "Hash",
|
@@ -6215,6 +6295,12 @@
|
|
6215
6295
|
"default": "N/A",
|
6216
6296
|
"description": "The variant to use for this node. One of `:anchor`, `:button`, or `:div`."
|
6217
6297
|
},
|
6298
|
+
{
|
6299
|
+
"name": "sub_tree_component_klass",
|
6300
|
+
"type": "Class",
|
6301
|
+
"default": "`SubTree`",
|
6302
|
+
"description": "The class to use for the sub-tree instead of the default [OpenProject::TreeView::SubTree](/components/openprojecttreeviewsubtree)"
|
6303
|
+
},
|
6218
6304
|
{
|
6219
6305
|
"name": "expanded",
|
6220
6306
|
"type": "Boolean",
|
@@ -6224,8 +6310,8 @@
|
|
6224
6310
|
{
|
6225
6311
|
"name": "select_strategy",
|
6226
6312
|
"type": "Symbol",
|
6227
|
-
"default": "`:
|
6228
|
-
"description": "What should happen when this sub-tree node is checked. One of `:descendants
|
6313
|
+
"default": "`:mixed_descendants`",
|
6314
|
+
"description": "What should happen when this sub-tree node is checked. One of `:descendants`, `:mixed_descendants`, or `:self`."
|
6229
6315
|
},
|
6230
6316
|
{
|
6231
6317
|
"name": "system_arguments",
|
data/static/audited_at.json
CHANGED
@@ -135,6 +135,8 @@
|
|
135
135
|
"Primer::OpenProject::FileTreeView": "",
|
136
136
|
"Primer::OpenProject::FileTreeView::DirectoryNode": "",
|
137
137
|
"Primer::OpenProject::FileTreeView::FileNode": "",
|
138
|
+
"Primer::OpenProject::FilterableTreeView": "",
|
139
|
+
"Primer::OpenProject::FilterableTreeView::SubTree": "",
|
138
140
|
"Primer::OpenProject::FlexLayout": "",
|
139
141
|
"Primer::OpenProject::GridLayout": "",
|
140
142
|
"Primer::OpenProject::GridLayout::Area": "",
|
data/static/classes.json
CHANGED
@@ -496,6 +496,9 @@
|
|
496
496
|
"PageHeader-description": [
|
497
497
|
"Primer::OpenProject::PageHeader"
|
498
498
|
],
|
499
|
+
"PageHeader-description--underlined-links": [
|
500
|
+
"Primer::OpenProject::PageHeader"
|
501
|
+
],
|
499
502
|
"PageHeader-leadingAction": [
|
500
503
|
"Primer::OpenProject::PageHeader"
|
501
504
|
],
|
data/static/constants.json
CHANGED
@@ -1653,6 +1653,44 @@
|
|
1653
1653
|
"Primer::OpenProject::FileTreeView::FileNode": {
|
1654
1654
|
"GeneratedSlotMethods": "Primer::OpenProject::FileTreeView::FileNode::GeneratedSlotMethods"
|
1655
1655
|
},
|
1656
|
+
"Primer::OpenProject::FilterableTreeView": {
|
1657
|
+
"DEFAULT_FILTER_INPUT_ARGUMENTS": {
|
1658
|
+
"name": "filter",
|
1659
|
+
"label": "Filter",
|
1660
|
+
"type": "search",
|
1661
|
+
"leading_visual": {
|
1662
|
+
"icon": "search"
|
1663
|
+
},
|
1664
|
+
"visually_hide_label": true,
|
1665
|
+
"show_clear_button": true
|
1666
|
+
},
|
1667
|
+
"DEFAULT_FILTER_MODES": {
|
1668
|
+
"all": {
|
1669
|
+
"label": "All",
|
1670
|
+
"selected": true
|
1671
|
+
},
|
1672
|
+
"selected": {
|
1673
|
+
"label": "Selected"
|
1674
|
+
}
|
1675
|
+
},
|
1676
|
+
"DEFAULT_FILTER_MODE_CONTROL_ARGUMENTS": {
|
1677
|
+
"aria": {
|
1678
|
+
"label": "Filter mode"
|
1679
|
+
}
|
1680
|
+
},
|
1681
|
+
"DEFAULT_INCLUDE_SUB_ITEMS_CHECK_BOX_ARGUMENTS": {
|
1682
|
+
"label": "Include sub-items",
|
1683
|
+
"name": "include_sub_items"
|
1684
|
+
},
|
1685
|
+
"DEFAULT_NO_RESULTS_NODE_ARGUMENTS": {
|
1686
|
+
"label": "No results"
|
1687
|
+
},
|
1688
|
+
"GeneratedSlotMethods": "Primer::OpenProject::FilterableTreeView::GeneratedSlotMethods",
|
1689
|
+
"SubTree": "Primer::OpenProject::FilterableTreeView::SubTree"
|
1690
|
+
},
|
1691
|
+
"Primer::OpenProject::FilterableTreeView::SubTree": {
|
1692
|
+
"GeneratedSlotMethods": "Primer::OpenProject::FilterableTreeView::SubTree::GeneratedSlotMethods"
|
1693
|
+
},
|
1656
1694
|
"Primer::OpenProject::FlexLayout": {
|
1657
1695
|
"GeneratedSlotMethods": "Primer::OpenProject::FlexLayout::GeneratedSlotMethods"
|
1658
1696
|
},
|
@@ -1881,10 +1919,11 @@
|
|
1881
1919
|
"GeneratedSlotMethods": "Primer::OpenProject::TreeView::SubTreeContainer::GeneratedSlotMethods"
|
1882
1920
|
},
|
1883
1921
|
"Primer::OpenProject::TreeView::SubTreeNode": {
|
1884
|
-
"DEFAULT_SELECT_STRATEGY": "
|
1922
|
+
"DEFAULT_SELECT_STRATEGY": "mixed_descendants",
|
1885
1923
|
"GeneratedSlotMethods": "Primer::OpenProject::TreeView::SubTreeNode::GeneratedSlotMethods",
|
1886
1924
|
"SELECT_STRATEGIES": [
|
1887
1925
|
"self",
|
1926
|
+
"mixed_descendants",
|
1888
1927
|
"descendants"
|
1889
1928
|
]
|
1890
1929
|
},
|