openproject-primer_view_components 0.86.1 → 0.87.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/app/assets/javascripts/primer_view_components.js +1 -1
  4. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  5. data/app/assets/styles/primer_view_components.css +1 -1
  6. data/app/assets/styles/primer_view_components.css.map +1 -1
  7. data/app/components/primer/alpha/action_menu/action_menu_element.js +14 -5
  8. data/app/components/primer/alpha/action_menu/action_menu_element.ts +14 -4
  9. data/app/components/primer/alpha/dropdown.css +1 -1
  10. data/app/components/primer/alpha/dropdown.css.map +1 -1
  11. data/app/components/primer/alpha/dropdown.pcss +8 -12
  12. data/app/components/primer/alpha/select_panel_element.js +11 -1
  13. data/app/components/primer/alpha/select_panel_element.ts +11 -2
  14. data/app/components/primer/open_project/filterable_tree_view.rb +6 -5
  15. data/app/components/primer/open_project/pagination.rb +33 -28
  16. data/app/components/primer/open_project/sub_header/quick_action_component.rb +32 -0
  17. data/app/components/primer/open_project/sub_header.html.erb +7 -7
  18. data/app/components/primer/open_project/sub_header.rb +31 -12
  19. data/app/components/primer/open_project/sub_header_element.js +3 -2
  20. data/app/components/primer/open_project/sub_header_element.ts +3 -2
  21. data/lib/primer/view_components/version.rb +2 -2
  22. data/previews/primer/alpha/dropdown_preview.rb +12 -0
  23. data/previews/primer/alpha/select_panel_preview/with_dynamic_label.html.erb +1 -1
  24. data/previews/primer/alpha/select_panel_preview/with_dynamic_label_and_aria_prefix.html.erb +1 -1
  25. data/previews/primer/alpha/select_panel_preview.rb +14 -4
  26. data/previews/primer/open_project/filterable_tree_view_preview/custom_no_results_text.html.erb +1 -1
  27. data/previews/primer/open_project/pagination_preview.rb +5 -0
  28. data/previews/primer/open_project/sub_header_preview/playground.html.erb +31 -0
  29. data/previews/primer/open_project/sub_header_preview/quick_filters.html.erb +15 -0
  30. data/previews/primer/open_project/sub_header_preview.rb +10 -17
  31. data/static/arguments.json +9 -0
  32. data/static/audited_at.json +1 -0
  33. data/static/constants.json +6 -0
  34. data/static/info_arch.json +25 -6
  35. data/static/previews.json +6 -6
  36. data/static/statuses.json +1 -0
  37. metadata +3 -1
@@ -54,6 +54,8 @@ module Primer
54
54
  # @!group Direction
55
55
  #
56
56
  # @label Direction e
57
+ #
58
+ # @snapshot interactive
57
59
  def direction_e
58
60
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
59
61
  component.with_button { "Dropdown" }
@@ -66,6 +68,8 @@ module Primer
66
68
  end
67
69
 
68
70
  # @label Direction ne
71
+ #
72
+ # @snapshot interactive
69
73
  def direction_ne
70
74
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
71
75
  component.with_button { "Dropdown" }
@@ -78,6 +82,8 @@ module Primer
78
82
  end
79
83
 
80
84
  # @label Direction s
85
+ #
86
+ # @snapshot interactive
81
87
  def direction_s
82
88
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
83
89
  component.with_button { "Dropdown" }
@@ -90,6 +96,8 @@ module Primer
90
96
  end
91
97
 
92
98
  # @label Direction se
99
+ #
100
+ # @snapshot interactive
93
101
  def direction_se
94
102
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
95
103
  component.with_button { "Dropdown" }
@@ -102,6 +110,8 @@ module Primer
102
110
  end
103
111
 
104
112
  # @label Direction sw
113
+ #
114
+ # @snapshot interactive
105
115
  def direction_sw
106
116
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
107
117
  component.with_button { "Dropdown" }
@@ -114,6 +124,8 @@ module Primer
114
124
  end
115
125
 
116
126
  # @label Direction w
127
+ #
128
+ # @snapshot interactive
117
129
  def direction_w
118
130
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
119
131
  component.with_button { "Dropdown" }
@@ -4,7 +4,7 @@
4
4
  data: { interaction_subject: subject_id },
5
5
  id: "with_avatar_items",
6
6
  title: "Select users",
7
- select_variant: :single,
7
+ select_variant: select_variant,
8
8
  fetch_strategy: :local,
9
9
  dynamic_label: true,
10
10
  dynamic_label_prefix: "Item",
@@ -4,7 +4,7 @@
4
4
  data: { interaction_subject: subject_id },
5
5
  id: "with_avatar_items",
6
6
  title: "Select users",
7
- select_variant: :single,
7
+ select_variant: select_variant,
8
8
  fetch_strategy: :local,
9
9
  dynamic_label: true,
10
10
  dynamic_label_prefix: "Item",
@@ -144,15 +144,25 @@ module Primer
144
144
  # @label With dynamic label
145
145
  #
146
146
  # @param open_on_load toggle
147
- def with_dynamic_label(open_on_load: false)
148
- render_with_template(locals: { open_on_load: open_on_load })
147
+ # @param select_variant [Symbol] select [single, multiple]
148
+ def with_dynamic_label(open_on_load: false, select_variant: :single)
149
+ render_with_template(locals: {
150
+ open_on_load: open_on_load,
151
+ # .to_sym workaround for https://github.com/lookbook-hq/lookbook/issues/640
152
+ select_variant: select_variant.to_sym
153
+ })
149
154
  end
150
155
 
151
156
  # @label With dynamic label and aria prefix
152
157
  #
153
158
  # @param open_on_load toggle
154
- def with_dynamic_label_and_aria_prefix(open_on_load: false)
155
- render_with_template(locals: { open_on_load: open_on_load })
159
+ # @param select_variant [Symbol] select [single, multiple]
160
+ def with_dynamic_label_and_aria_prefix(open_on_load: false, select_variant: :single)
161
+ render_with_template(locals: {
162
+ open_on_load: open_on_load,
163
+ # .to_sym workaround for https://github.com/lookbook-hq/lookbook/issues/640
164
+ select_variant: select_variant.to_sym
165
+ })
156
166
  end
157
167
 
158
168
  # @!endgroup
@@ -1,5 +1,5 @@
1
1
  <%= render(Primer::OpenProject::FilterableTreeView.new(
2
- filter_input_arguments: {placeholder: "Search me!", name: "filter", label: "Filter", visually_hide_label: true},
2
+ filter_input_arguments: {placeholder: "Search me!", visually_hide_label: true},
3
3
  no_results_node_arguments: { label: "All wizards and witches have left the building" })) do |tree| %>
4
4
  <% tree.with_sub_tree(label: "Students", expanded: expanded) do |hogwarts| %>
5
5
  <% hogwarts.with_sub_tree(label: "Ravenclaw", expanded: expanded) do |ravenclaw| %>
@@ -23,6 +23,10 @@ module Primer
23
23
  margin_page_count = (margin_page_count.presence || 1).to_i
24
24
  surrounding_page_count = (surrounding_page_count.presence || 2).to_i
25
25
 
26
+ # Ensure current_page doesn't exceed page_count
27
+ current_page = [current_page, page_count].min
28
+ current_page = [current_page, 1].max # Ensure at least 1
29
+
26
30
  render(
27
31
  Primer::OpenProject::Pagination.new(
28
32
  current_page: current_page,
@@ -46,6 +50,7 @@ module Primer
46
50
  )
47
51
  )
48
52
  end
53
+
49
54
  #
50
55
  # @!endgroup
51
56
  end
@@ -0,0 +1,31 @@
1
+ <%= render(Primer::OpenProject::SubHeader.new(collapsed_search: collapsed_search)) do |component|
2
+ component.with_filter_input(name: "filter",
3
+ label: "Filter",
4
+ show_clear_button: show_clear_button,
5
+ value: value) if show_filter_input
6
+
7
+ component.with_filter_button(mobile_label: "All filters") do
8
+ "All filters"
9
+ end if show_filter_button
10
+
11
+ component.with_text { text } unless text.nil?
12
+
13
+ component.with_action_button(leading_icon: :plus, label: "Create", scheme: :primary) do
14
+ "Create"
15
+ end if show_action_button
16
+
17
+ if show_quick_filter
18
+ component.with_quick_filter do
19
+ render(Primer::Alpha::SelectPanel.new(title: "Version",
20
+ select_variant: :single,
21
+ fetch_strategy: :local,
22
+ dynamic_label: true,
23
+ dynamic_label_prefix: "Version")) do |panel|
24
+ panel.with_show_button { "Version" }
25
+ panel.with_item(label: "1.0")
26
+ panel.with_item(label: "2.0")
27
+ panel.with_item(label: "2.1")
28
+ end
29
+ end
30
+ end
31
+ end %>
@@ -5,6 +5,21 @@
5
5
  "All filters"
6
6
  end
7
7
 
8
+ component.with_quick_sort do
9
+ render(Primer::Beta::IconButton.new(icon: :"sort-desc", "aria-label": "Sort"))
10
+ end
11
+
12
+ component.with_quick_group do
13
+ render(Primer::Beta::IconButton.new(icon: :rows, "aria-label": "Group"))
14
+ end
15
+
16
+ component.with_quick_filter do
17
+ render(Primer::Alpha::SegmentedControl.new("aria-label": "File view")) do |component|
18
+ component.with_item(label: "Monthly", selected: true)
19
+ component.with_item(label: "Yearly")
20
+ end
21
+ end
22
+
8
23
  component.with_quick_filter do
9
24
  render(Primer::Alpha::SelectPanel.new(title: "Version",
10
25
  select_variant: :single,
@@ -10,6 +10,7 @@ module Primer
10
10
  # @label Playground
11
11
  # @param show_filter_input toggle
12
12
  # @param show_filter_button toggle
13
+ # @param show_quick_filter toggle
13
14
  # @param show_action_button toggle
14
15
  # @param show_clear_button toggle
15
16
  # @param collapsed_search toggle
@@ -19,28 +20,20 @@ module Primer
19
20
  show_filter_input: true,
20
21
  show_clear_button: true,
21
22
  show_filter_button: true,
23
+ show_quick_filter: true,
22
24
  show_action_button: true,
23
25
  collapsed_search: false,
24
26
  text: nil,
25
27
  value: nil
26
28
  )
27
- render(Primer::OpenProject::SubHeader.new(collapsed_search: collapsed_search)) do |component|
28
- component.with_filter_input(
29
- name: "filter",
30
- label: "Filter",
31
- show_clear_button: show_clear_button,
32
- value: value) if show_filter_input
33
- component.with_filter_button do |button|
34
- button.with_trailing_visual_counter(count: "15")
35
- "Filter"
36
- end if show_filter_button
37
-
38
- component.with_text { text } unless text.nil?
39
-
40
- component.with_action_button(leading_icon: :plus, label: "Create", scheme: :primary) do
41
- "Create"
42
- end if show_action_button
43
- end
29
+ render_with_template(locals: {show_filter_input: show_filter_input,
30
+ show_clear_button: show_clear_button,
31
+ show_filter_button: show_filter_button,
32
+ show_quick_filter: show_quick_filter,
33
+ show_action_button: show_action_button,
34
+ collapsed_search: collapsed_search,
35
+ text: text,
36
+ value: value})
44
37
  end
45
38
 
46
39
  # @label Default
@@ -6599,6 +6599,15 @@
6599
6599
  }
6600
6600
  ]
6601
6601
  },
6602
+ {
6603
+ "component": "OpenProject::SubHeader::QuickActionComponent",
6604
+ "status": "open_project",
6605
+ "a11y_reviewed": false,
6606
+ "short_name": "OpenProjectSubHeaderQuickActionComponent",
6607
+ "source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/sub_header/quick_filter.rb",
6608
+ "lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/sub_header/quick_filter/default/",
6609
+ "parameters": []
6610
+ },
6602
6611
  {
6603
6612
  "component": "OpenProject::SubHeader::SegmentedControl",
6604
6613
  "status": "open_project",
@@ -173,6 +173,7 @@
173
173
  "Primer::OpenProject::SubHeader::Button": "",
174
174
  "Primer::OpenProject::SubHeader::ButtonGroup": "",
175
175
  "Primer::OpenProject::SubHeader::Menu": "",
176
+ "Primer::OpenProject::SubHeader::QuickActionComponent": "",
176
177
  "Primer::OpenProject::SubHeader::SegmentedControl": "2023-02-01",
177
178
  "Primer::OpenProject::ZenModeButton": "",
178
179
  "Primer::Tooltip": "",
@@ -1984,16 +1984,19 @@
1984
1984
  "Button": "Primer::OpenProject::SubHeader::Button",
1985
1985
  "ButtonGroup": "Primer::OpenProject::SubHeader::ButtonGroup",
1986
1986
  "DESKTOP_ACTIONS_DISPLAY": [
1987
+ "none",
1987
1988
  "none",
1988
1989
  "flex"
1989
1990
  ],
1990
1991
  "FILTER_EXPAND_BUTTON_TARGET_SELECTOR": "sub-header.filterExpandButton",
1991
1992
  "GeneratedSlotMethods": "Primer::OpenProject::SubHeader::GeneratedSlotMethods",
1992
1993
  "MOBILE_ACTIONS_DISPLAY": [
1994
+ "flex",
1993
1995
  "flex",
1994
1996
  "none"
1995
1997
  ],
1996
1998
  "Menu": "Primer::OpenProject::SubHeader::Menu",
1999
+ "QuickActionComponent": "Primer::OpenProject::SubHeader::QuickActionComponent",
1997
2000
  "SHOWN_FILTER_TARGET_SELECTOR": "sub-header.shownItemsOnExpandedFilter",
1998
2001
  "SegmentedControl": "Primer::OpenProject::SubHeader::SegmentedControl"
1999
2002
  },
@@ -2006,6 +2009,9 @@
2006
2009
  "Primer::OpenProject::SubHeader::Menu": {
2007
2010
  "GeneratedSlotMethods": "Primer::OpenProject::SubHeader::Menu::GeneratedSlotMethods"
2008
2011
  },
2012
+ "Primer::OpenProject::SubHeader::QuickActionComponent": {
2013
+ "GeneratedSlotMethods": "Primer::OpenProject::SubHeader::QuickActionComponent::GeneratedSlotMethods"
2014
+ },
2009
2015
  "Primer::OpenProject::SubHeader::SegmentedControl": {
2010
2016
  "GeneratedSlotMethods": "Primer::OpenProject::SubHeader::SegmentedControl::GeneratedSlotMethods"
2011
2017
  },
@@ -4270,7 +4270,7 @@
4270
4270
  {
4271
4271
  "preview_path": "primer/alpha/dropdown/direction_e",
4272
4272
  "name": "direction_e",
4273
- "snapshot": "false",
4273
+ "snapshot": "interactive",
4274
4274
  "skip_rules": {
4275
4275
  "wont_fix": [
4276
4276
  "region"
@@ -4283,7 +4283,7 @@
4283
4283
  {
4284
4284
  "preview_path": "primer/alpha/dropdown/direction_ne",
4285
4285
  "name": "direction_ne",
4286
- "snapshot": "false",
4286
+ "snapshot": "interactive",
4287
4287
  "skip_rules": {
4288
4288
  "wont_fix": [
4289
4289
  "region"
@@ -4296,7 +4296,7 @@
4296
4296
  {
4297
4297
  "preview_path": "primer/alpha/dropdown/direction_s",
4298
4298
  "name": "direction_s",
4299
- "snapshot": "false",
4299
+ "snapshot": "interactive",
4300
4300
  "skip_rules": {
4301
4301
  "wont_fix": [
4302
4302
  "region"
@@ -4309,7 +4309,7 @@
4309
4309
  {
4310
4310
  "preview_path": "primer/alpha/dropdown/direction_se",
4311
4311
  "name": "direction_se",
4312
- "snapshot": "false",
4312
+ "snapshot": "interactive",
4313
4313
  "skip_rules": {
4314
4314
  "wont_fix": [
4315
4315
  "region"
@@ -4322,7 +4322,7 @@
4322
4322
  {
4323
4323
  "preview_path": "primer/alpha/dropdown/direction_sw",
4324
4324
  "name": "direction_sw",
4325
- "snapshot": "false",
4325
+ "snapshot": "interactive",
4326
4326
  "skip_rules": {
4327
4327
  "wont_fix": [
4328
4328
  "region"
@@ -4335,7 +4335,7 @@
4335
4335
  {
4336
4336
  "preview_path": "primer/alpha/dropdown/direction_w",
4337
4337
  "name": "direction_w",
4338
- "snapshot": "false",
4338
+ "snapshot": "interactive",
4339
4339
  "skip_rules": {
4340
4340
  "wont_fix": [
4341
4341
  "region"
@@ -22107,6 +22107,25 @@
22107
22107
  "previews": [],
22108
22108
  "subcomponents": []
22109
22109
  },
22110
+ {
22111
+ "fully_qualified_name": "Primer::OpenProject::SubHeader::QuickActionComponent",
22112
+ "description": "Thin wrapper for quick filter slots that defers BaseComponent construction to render time,\nallowing system arguments (e.g. display) to be mutated in before_render.\nDo not use standalone",
22113
+ "accessibility_docs": null,
22114
+ "is_form_component": false,
22115
+ "is_published": true,
22116
+ "requires_js": false,
22117
+ "component": "OpenProject::SubHeader::QuickActionComponent",
22118
+ "status": "open_project",
22119
+ "a11y_reviewed": false,
22120
+ "short_name": "OpenProjectSubHeaderQuickActionComponent",
22121
+ "source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/sub_header/quick_filter.rb",
22122
+ "lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/sub_header/quick_filter/default/",
22123
+ "parameters": [],
22124
+ "slots": [],
22125
+ "methods": [],
22126
+ "previews": [],
22127
+ "subcomponents": []
22128
+ },
22110
22129
  {
22111
22130
  "fully_qualified_name": "Primer::OpenProject::SubHeader::SegmentedControl",
22112
22131
  "description": "A Helper class to create SegmentedControls inside the SubHeader action slot\nDo not use standalone",
data/static/previews.json CHANGED
@@ -4057,7 +4057,7 @@
4057
4057
  {
4058
4058
  "preview_path": "primer/alpha/dropdown/direction_e",
4059
4059
  "name": "direction_e",
4060
- "snapshot": "false",
4060
+ "snapshot": "interactive",
4061
4061
  "skip_rules": {
4062
4062
  "wont_fix": [
4063
4063
  "region"
@@ -4070,7 +4070,7 @@
4070
4070
  {
4071
4071
  "preview_path": "primer/alpha/dropdown/direction_ne",
4072
4072
  "name": "direction_ne",
4073
- "snapshot": "false",
4073
+ "snapshot": "interactive",
4074
4074
  "skip_rules": {
4075
4075
  "wont_fix": [
4076
4076
  "region"
@@ -4083,7 +4083,7 @@
4083
4083
  {
4084
4084
  "preview_path": "primer/alpha/dropdown/direction_s",
4085
4085
  "name": "direction_s",
4086
- "snapshot": "false",
4086
+ "snapshot": "interactive",
4087
4087
  "skip_rules": {
4088
4088
  "wont_fix": [
4089
4089
  "region"
@@ -4096,7 +4096,7 @@
4096
4096
  {
4097
4097
  "preview_path": "primer/alpha/dropdown/direction_se",
4098
4098
  "name": "direction_se",
4099
- "snapshot": "false",
4099
+ "snapshot": "interactive",
4100
4100
  "skip_rules": {
4101
4101
  "wont_fix": [
4102
4102
  "region"
@@ -4109,7 +4109,7 @@
4109
4109
  {
4110
4110
  "preview_path": "primer/alpha/dropdown/direction_sw",
4111
4111
  "name": "direction_sw",
4112
- "snapshot": "false",
4112
+ "snapshot": "interactive",
4113
4113
  "skip_rules": {
4114
4114
  "wont_fix": [
4115
4115
  "region"
@@ -4122,7 +4122,7 @@
4122
4122
  {
4123
4123
  "preview_path": "primer/alpha/dropdown/direction_w",
4124
4124
  "name": "direction_w",
4125
- "snapshot": "false",
4125
+ "snapshot": "interactive",
4126
4126
  "skip_rules": {
4127
4127
  "wont_fix": [
4128
4128
  "region"
data/static/statuses.json CHANGED
@@ -173,6 +173,7 @@
173
173
  "Primer::OpenProject::SubHeader::Button": "open_project",
174
174
  "Primer::OpenProject::SubHeader::ButtonGroup": "open_project",
175
175
  "Primer::OpenProject::SubHeader::Menu": "open_project",
176
+ "Primer::OpenProject::SubHeader::QuickActionComponent": "open_project",
176
177
  "Primer::OpenProject::SubHeader::SegmentedControl": "open_project",
177
178
  "Primer::OpenProject::ZenModeButton": "open_project",
178
179
  "Primer::Tooltip": "deprecated",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openproject-primer_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.86.1
4
+ version: 0.87.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Open Source
@@ -689,6 +689,7 @@ files:
689
689
  - app/components/primer/open_project/sub_header/button.rb
690
690
  - app/components/primer/open_project/sub_header/button_group.rb
691
691
  - app/components/primer/open_project/sub_header/menu.rb
692
+ - app/components/primer/open_project/sub_header/quick_action_component.rb
692
693
  - app/components/primer/open_project/sub_header/segmented_control.rb
693
694
  - app/components/primer/open_project/sub_header_element.d.ts
694
695
  - app/components/primer/open_project/sub_header_element.js
@@ -1313,6 +1314,7 @@ files:
1313
1314
  - previews/primer/open_project/sub_header_preview/button_group.html.erb
1314
1315
  - previews/primer/open_project/sub_header_preview/custom_filter_button.html.erb
1315
1316
  - previews/primer/open_project/sub_header_preview/dialog_buttons.html.erb
1317
+ - previews/primer/open_project/sub_header_preview/playground.html.erb
1316
1318
  - previews/primer/open_project/sub_header_preview/quick_filters.html.erb
1317
1319
  - previews/primer/open_project/zen_mode_button_preview.rb
1318
1320
  - previews/primer/url_helpers.rb