openproject-primer_view_components 0.84.5 → 0.86.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 +16 -0
- data/app/assets/javascripts/components/primer/open_project/sub_header_element.d.ts +1 -1
- 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/select_panel_element.js +2 -2
- data/app/components/primer/alpha/select_panel_element.ts +2 -2
- data/app/components/primer/alpha/tree_view/leaf_node.html.erb +5 -0
- data/app/components/primer/alpha/tree_view/leaf_node.rb +18 -0
- data/app/components/primer/alpha/tree_view/node.html.erb +3 -0
- data/app/components/primer/alpha/tree_view/node.rb +10 -0
- data/app/components/primer/alpha/tree_view/sub_tree_node.html.erb +5 -0
- data/app/components/primer/alpha/tree_view/sub_tree_node.rb +18 -0
- data/app/components/primer/alpha/tree_view/trailing_action.html.erb +3 -0
- data/app/components/primer/alpha/tree_view/trailing_action.rb +18 -0
- data/app/components/primer/alpha/tree_view.css +1 -1
- data/app/components/primer/alpha/tree_view.css.json +4 -1
- data/app/components/primer/alpha/tree_view.css.map +1 -1
- data/app/components/primer/alpha/tree_view.pcss +22 -6
- data/app/components/primer/open_project/filterable_tree_view/sub_tree.rb +6 -6
- data/app/components/primer/open_project/filterable_tree_view.css +1 -0
- data/app/components/primer/open_project/filterable_tree_view.css.json +14 -0
- data/app/components/primer/open_project/filterable_tree_view.css.map +1 -0
- data/app/components/primer/open_project/filterable_tree_view.html.erb +26 -14
- data/app/components/primer/open_project/filterable_tree_view.js +294 -5
- data/app/components/primer/open_project/filterable_tree_view.pcss +57 -0
- data/app/components/primer/open_project/filterable_tree_view.rb +58 -10
- data/app/components/primer/open_project/filterable_tree_view.ts +316 -4
- data/app/components/primer/open_project/sub_header.css +1 -1
- data/app/components/primer/open_project/sub_header.css.json +2 -1
- data/app/components/primer/open_project/sub_header.css.map +1 -1
- data/app/components/primer/open_project/sub_header.html.erb +11 -8
- data/app/components/primer/open_project/sub_header.pcss +14 -7
- data/app/components/primer/open_project/sub_header.rb +46 -25
- data/app/components/primer/open_project/sub_header_element.d.ts +1 -1
- data/app/components/primer/open_project/sub_header_element.js +6 -6
- data/app/components/primer/open_project/sub_header_element.ts +5 -10
- data/app/components/primer/primer.pcss +1 -0
- data/app/controllers/primer/view_components/filterable_tree_view_items_controller.rb +192 -0
- data/app/views/primer/view_components/filterable_tree_view_items/_node.html.erb +38 -0
- data/app/views/primer/view_components/filterable_tree_view_items/async_form_tree.html.erb +9 -0
- data/app/views/primer/view_components/filterable_tree_view_items/index.html.erb +6 -0
- data/config/routes.rb +4 -0
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/alpha/select_panel_preview.rb +0 -27
- data/previews/primer/alpha/text_area_preview.rb +0 -1
- data/previews/primer/alpha/text_field_preview.rb +0 -1
- data/previews/primer/alpha/tree_view_preview/leaf_node_playground.html.erb +4 -0
- data/previews/primer/alpha/tree_view_preview.rb +3 -0
- data/previews/primer/open_project/filterable_tree_view_preview/async.html.erb +3 -0
- data/previews/primer/open_project/filterable_tree_view_preview/async_form_input.html.erb +9 -0
- data/previews/primer/open_project/filterable_tree_view_preview/link_nodes.html.erb +18 -0
- data/previews/primer/open_project/filterable_tree_view_preview.rb +23 -2
- data/previews/primer/open_project/sub_header_preview/quick_filters.html.erb +47 -0
- data/previews/primer/open_project/sub_header_preview.rb +23 -1
- data/static/arguments.json +28 -0
- data/static/audited_at.json +1 -0
- data/static/classes.json +9 -0
- data/static/constants.json +10 -1
- data/static/info_arch.json +189 -30
- data/static/previews.json +94 -29
- data/static/statuses.json +1 -0
- metadata +18 -10
|
@@ -7,7 +7,7 @@ module Primer
|
|
|
7
7
|
# @label Playground
|
|
8
8
|
#
|
|
9
9
|
# @param expanded [Boolean] toggle
|
|
10
|
-
# @param select_variant [Symbol] select [multiple, single]
|
|
10
|
+
# @param select_variant [Symbol] select [multiple, single, none]
|
|
11
11
|
# @param show_checkbox [Boolean] toggle
|
|
12
12
|
# @param show_segmented_control [Boolean] toggle
|
|
13
13
|
def playground(expanded: true, select_variant: :multiple, show_checkbox: true, show_segmented_control: true)
|
|
@@ -31,7 +31,7 @@ module Primer
|
|
|
31
31
|
|
|
32
32
|
# @label Form input
|
|
33
33
|
#
|
|
34
|
-
# @param select_variant [Symbol] select [multiple, single]
|
|
34
|
+
# @param select_variant [Symbol] select [multiple, single, none]
|
|
35
35
|
# @param expanded [Boolean] toggle
|
|
36
36
|
def form_input(select_variant: :multiple, expanded: true)
|
|
37
37
|
render_with_template(locals: {
|
|
@@ -114,6 +114,27 @@ module Primer
|
|
|
114
114
|
})
|
|
115
115
|
end
|
|
116
116
|
|
|
117
|
+
# @label Async (server-side filtering)
|
|
118
|
+
#
|
|
119
|
+
# @param select_variant [Symbol] select [multiple, single, none]
|
|
120
|
+
def async(select_variant: :single)
|
|
121
|
+
render_with_template(locals: {
|
|
122
|
+
select_variant: select_variant.to_sym
|
|
123
|
+
})
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# @label Async form input
|
|
127
|
+
def async_form_input
|
|
128
|
+
render_with_template
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# @label Link nodes
|
|
132
|
+
def link_nodes(expanded: true)
|
|
133
|
+
render_with_template(locals: {
|
|
134
|
+
expanded: coerce_bool(expanded)
|
|
135
|
+
})
|
|
136
|
+
end
|
|
137
|
+
|
|
117
138
|
# @label Hide checkbox
|
|
118
139
|
#
|
|
119
140
|
# @param include_sub_items [Boolean] toggle
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<%= render(Primer::OpenProject::SubHeader.new(collapsed_search: true)) do |component|
|
|
2
|
+
component.with_filter_input(name: "filter", label: "Filter")
|
|
3
|
+
|
|
4
|
+
component.with_filter_button(mobile_label: "All filters") do
|
|
5
|
+
"All filters"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
component.with_quick_filter do
|
|
9
|
+
render(Primer::Alpha::SelectPanel.new(title: "Version",
|
|
10
|
+
select_variant: :single,
|
|
11
|
+
fetch_strategy: :local,
|
|
12
|
+
dynamic_label: true,
|
|
13
|
+
dynamic_label_prefix: "Version")) do |panel|
|
|
14
|
+
panel.with_show_button { "Version" }
|
|
15
|
+
panel.with_item(label: "1.0")
|
|
16
|
+
panel.with_item(label: "2.0")
|
|
17
|
+
panel.with_item(label: "2.1")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
component.with_quick_filter do
|
|
22
|
+
render(Primer::Alpha::SelectPanel.new(title: "Assignee",
|
|
23
|
+
select_variant: :multiple,
|
|
24
|
+
fetch_strategy: :local,
|
|
25
|
+
dynamic_label: true,
|
|
26
|
+
dynamic_label_prefix: "Assignee")) do |panel|
|
|
27
|
+
panel.with_show_button { "Assignee" }
|
|
28
|
+
panel.with_avatar_item(username: "Alice", src: "https://avatars.githubusercontent.com/u/1?v=4")
|
|
29
|
+
panel.with_avatar_item(username: "Bob", src: "https://avatars.githubusercontent.com/u/2?v=4")
|
|
30
|
+
panel.with_avatar_item(username: "Carol", src: "https://avatars.githubusercontent.com/u/3?v=4")
|
|
31
|
+
panel.with_avatar_item(username: "Dave", src: "https://avatars.githubusercontent.com/u/4?v=4")
|
|
32
|
+
panel.with_avatar_item(username: "Eve", src: "https://avatars.githubusercontent.com/u/5?v=4")
|
|
33
|
+
panel.with_avatar_item(username: "Frank", src: "https://avatars.githubusercontent.com/u/6?v=4")
|
|
34
|
+
panel.with_avatar_item(username: "Grace", src: "https://avatars.githubusercontent.com/u/7?v=4")
|
|
35
|
+
panel.with_avatar_item(username: "Heidi", src: "https://avatars.githubusercontent.com/u/8?v=4")
|
|
36
|
+
panel.with_avatar_item(username: "Ivan", src: "https://avatars.githubusercontent.com/u/9?v=4")
|
|
37
|
+
panel.with_avatar_item(username: "Judy", src: "https://avatars.githubusercontent.com/u/10?v=4")
|
|
38
|
+
panel.with_footer(show_divider: true) do
|
|
39
|
+
render(Primer::Beta::Button.new(scheme: :primary)) { "Apply" }
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
component.with_action_button(leading_icon: :plus, label: "Create", scheme: :primary) do
|
|
45
|
+
"Create"
|
|
46
|
+
end
|
|
47
|
+
end %>
|
|
@@ -12,6 +12,7 @@ module Primer
|
|
|
12
12
|
# @param show_filter_button toggle
|
|
13
13
|
# @param show_action_button toggle
|
|
14
14
|
# @param show_clear_button toggle
|
|
15
|
+
# @param collapsed_search toggle
|
|
15
16
|
# @param text text
|
|
16
17
|
# @param value text
|
|
17
18
|
def playground(
|
|
@@ -19,10 +20,11 @@ module Primer
|
|
|
19
20
|
show_clear_button: true,
|
|
20
21
|
show_filter_button: true,
|
|
21
22
|
show_action_button: true,
|
|
23
|
+
collapsed_search: false,
|
|
22
24
|
text: nil,
|
|
23
25
|
value: nil
|
|
24
26
|
)
|
|
25
|
-
render(Primer::OpenProject::SubHeader.new) do |component|
|
|
27
|
+
render(Primer::OpenProject::SubHeader.new(collapsed_search: collapsed_search)) do |component|
|
|
26
28
|
component.with_filter_input(
|
|
27
29
|
name: "filter",
|
|
28
30
|
label: "Filter",
|
|
@@ -98,6 +100,26 @@ module Primer
|
|
|
98
100
|
end
|
|
99
101
|
end
|
|
100
102
|
|
|
103
|
+
# @label With collapsed search
|
|
104
|
+
def collapsed_search
|
|
105
|
+
render(Primer::OpenProject::SubHeader.new(collapsed_search: true)) do |component|
|
|
106
|
+
component.with_filter_input(name: "filter", label: "Filter")
|
|
107
|
+
component.with_filter_button do |button|
|
|
108
|
+
button.with_trailing_visual_counter(count: "15")
|
|
109
|
+
"Filter"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
component.with_action_button(leading_icon: :plus, label: "Create", scheme: :primary) do
|
|
113
|
+
"Create"
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# @label With QuickFilters
|
|
119
|
+
def quick_filters
|
|
120
|
+
render_with_template(locals: {})
|
|
121
|
+
end
|
|
122
|
+
|
|
101
123
|
# @label With a custom area below
|
|
102
124
|
def bottom_pane
|
|
103
125
|
render_with_template(locals: {})
|
data/static/arguments.json
CHANGED
|
@@ -3757,6 +3757,22 @@
|
|
|
3757
3757
|
}
|
|
3758
3758
|
]
|
|
3759
3759
|
},
|
|
3760
|
+
{
|
|
3761
|
+
"component": "TreeView::TrailingAction",
|
|
3762
|
+
"status": "alpha",
|
|
3763
|
+
"a11y_reviewed": false,
|
|
3764
|
+
"short_name": "TreeViewTrailingAction",
|
|
3765
|
+
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/alpha/tree_view/trailing_action.rb",
|
|
3766
|
+
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/alpha/tree_view/trailing_action/default/",
|
|
3767
|
+
"parameters": [
|
|
3768
|
+
{
|
|
3769
|
+
"name": "action",
|
|
3770
|
+
"type": "ViewComponent::Base",
|
|
3771
|
+
"default": "N/A",
|
|
3772
|
+
"description": "A component or other renderable to use as the action button etc."
|
|
3773
|
+
}
|
|
3774
|
+
]
|
|
3775
|
+
},
|
|
3760
3776
|
{
|
|
3761
3777
|
"component": "TreeView::Visual",
|
|
3762
3778
|
"status": "alpha",
|
|
@@ -6151,6 +6167,12 @@
|
|
|
6151
6167
|
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/filterable_tree_view.rb",
|
|
6152
6168
|
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/filterable_tree_view/default/",
|
|
6153
6169
|
"parameters": [
|
|
6170
|
+
{
|
|
6171
|
+
"name": "src",
|
|
6172
|
+
"type": "String",
|
|
6173
|
+
"default": "`nil`",
|
|
6174
|
+
"description": "URL of the server endpoint that returns a filtered `<tree-view>` HTML fragment. When set, activates async (server-side) filtering mode. See \"Async loading strategy\" above."
|
|
6175
|
+
},
|
|
6154
6176
|
{
|
|
6155
6177
|
"name": "tree_view_arguments",
|
|
6156
6178
|
"type": "Hash",
|
|
@@ -6473,6 +6495,12 @@
|
|
|
6473
6495
|
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/sub_header.rb",
|
|
6474
6496
|
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/sub_header/default/",
|
|
6475
6497
|
"parameters": [
|
|
6498
|
+
{
|
|
6499
|
+
"name": "collapsed_search",
|
|
6500
|
+
"type": "Boolean",
|
|
6501
|
+
"default": "`false`",
|
|
6502
|
+
"description": "When true, the search bar starts collapsed as an icon button on all screen sizes. Clicking expands it."
|
|
6503
|
+
},
|
|
6476
6504
|
{
|
|
6477
6505
|
"name": "system_arguments",
|
|
6478
6506
|
"type": "Hash",
|
data/static/audited_at.json
CHANGED
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
"Primer::Alpha::TreeView::SubTree": "",
|
|
85
85
|
"Primer::Alpha::TreeView::SubTreeContainer": "",
|
|
86
86
|
"Primer::Alpha::TreeView::SubTreeNode": "",
|
|
87
|
+
"Primer::Alpha::TreeView::TrailingAction": "",
|
|
87
88
|
"Primer::Alpha::TreeView::Visual": "",
|
|
88
89
|
"Primer::Alpha::UnderlineNav": "",
|
|
89
90
|
"Primer::Alpha::UnderlinePanels": "",
|
data/static/classes.json
CHANGED
|
@@ -271,6 +271,15 @@
|
|
|
271
271
|
"DragHandle": [
|
|
272
272
|
"Primer::OpenProject::DragHandle"
|
|
273
273
|
],
|
|
274
|
+
"FilterableTreeViewLayout": [
|
|
275
|
+
"Primer::OpenProject::FilterableTreeView"
|
|
276
|
+
],
|
|
277
|
+
"FilterableTreeViewLoadingSkeleton": [
|
|
278
|
+
"Primer::OpenProject::FilterableTreeView"
|
|
279
|
+
],
|
|
280
|
+
"FilterableTreeViewTreeContainer": [
|
|
281
|
+
"Primer::OpenProject::FilterableTreeView"
|
|
282
|
+
],
|
|
274
283
|
"FormControl": [
|
|
275
284
|
"Primer::Alpha::TextField"
|
|
276
285
|
],
|
data/static/constants.json
CHANGED
|
@@ -852,6 +852,7 @@
|
|
|
852
852
|
"SubTree": "Primer::Alpha::TreeView::SubTree",
|
|
853
853
|
"SubTreeContainer": "Primer::Alpha::TreeView::SubTreeContainer",
|
|
854
854
|
"SubTreeNode": "Primer::Alpha::TreeView::SubTreeNode",
|
|
855
|
+
"TrailingAction": "Primer::Alpha::TreeView::TrailingAction",
|
|
855
856
|
"Visual": "Primer::Alpha::TreeView::Visual"
|
|
856
857
|
},
|
|
857
858
|
"Primer::Alpha::TreeView::Icon": {
|
|
@@ -918,6 +919,9 @@
|
|
|
918
919
|
"descendants"
|
|
919
920
|
]
|
|
920
921
|
},
|
|
922
|
+
"Primer::Alpha::TreeView::TrailingAction": {
|
|
923
|
+
"GeneratedSlotMethods": "Primer::Alpha::TreeView::TrailingAction::GeneratedSlotMethods"
|
|
924
|
+
},
|
|
921
925
|
"Primer::Alpha::TreeView::Visual": {
|
|
922
926
|
"GeneratedSlotMethods": "Primer::Alpha::TreeView::Visual::GeneratedSlotMethods"
|
|
923
927
|
},
|
|
@@ -1820,6 +1824,11 @@
|
|
|
1820
1824
|
"label": "No results"
|
|
1821
1825
|
},
|
|
1822
1826
|
"GeneratedSlotMethods": "Primer::OpenProject::FilterableTreeView::GeneratedSlotMethods",
|
|
1827
|
+
"SUPPORTED_SELECT_VARIANTS": [
|
|
1828
|
+
"multiple",
|
|
1829
|
+
"single",
|
|
1830
|
+
"none"
|
|
1831
|
+
],
|
|
1823
1832
|
"SubTree": "Primer::OpenProject::FilterableTreeView::SubTree"
|
|
1824
1833
|
},
|
|
1825
1834
|
"Primer::OpenProject::FilterableTreeView::SubTree": {
|
|
@@ -1978,8 +1987,8 @@
|
|
|
1978
1987
|
"none",
|
|
1979
1988
|
"flex"
|
|
1980
1989
|
],
|
|
1990
|
+
"FILTER_EXPAND_BUTTON_TARGET_SELECTOR": "sub-header.filterExpandButton",
|
|
1981
1991
|
"GeneratedSlotMethods": "Primer::OpenProject::SubHeader::GeneratedSlotMethods",
|
|
1982
|
-
"HIDDEN_FILTER_TARGET_SELECTOR": "sub-header.hiddenItemsOnExpandedFilter",
|
|
1983
1992
|
"MOBILE_ACTIONS_DISPLAY": [
|
|
1984
1993
|
"flex",
|
|
1985
1994
|
"none"
|