openproject-primer_view_components 0.29.0 → 0.29.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- .PageHeader{border-bottom:var(--borderWidth-thin) solid var(--borderColor-muted);display:flex;flex-flow:column;margin-bottom:var(--stack-gap-normal);padding-bottom:var(--stack-padding-condensed)}.PageHeader-contextBar{margin-bottom:var(--base-size-8)}.PageHeader-contextBar,.PageHeader-titleBar{align-items:center;display:flex;flex-flow:row;justify-content:flex-end}.PageHeader-titleBar{margin-bottom:var(--space-xsmall)}.PageHeader-title{flex:1 1 auto;font-size:var(--text-title-size-medium);font-weight:var(--base-text-weight-normal)}.PageHeader-title--large{font-size:var(--text-title-size-large)}.PageHeader-description{color:var(--fgColor-muted);flex:1 100%;font-size:var(--text-body-size-medium)}.PageHeader-actions{align-items:center;display:flex;justify-content:flex-end}@media (max-width:543.98px){.PageHeader--singleAction .PageHeader-action{display:flex!important;position:absolute;top:10px}}.PageHeader-breadcrumbs{display:block;width:100%}.PageHeader-leadingAction{margin-right:var(--base-size-4);margin-top:2px}.PageHeader-parentLink{flex:1 1 auto}
1
+ .PageHeader{border-bottom:var(--borderWidth-thin) solid var(--borderColor-muted);display:flex;flex-flow:column;margin-bottom:var(--stack-gap-normal);padding-bottom:var(--stack-padding-condensed)}.PageHeader-contextBar{margin-bottom:var(--base-size-8)}.PageHeader-contextBar,.PageHeader-titleBar{align-items:center;display:flex;flex-flow:row;justify-content:flex-end}.PageHeader-titleBar{margin-bottom:var(--space-xsmall)}.PageHeader-title{flex:1 1 auto;font-size:var(--text-title-size-medium);font-weight:var(--base-text-weight-normal)}.PageHeader-title--large{font-size:var(--text-title-size-large)}.PageHeader-description{color:var(--fgColor-muted);flex:1 100%;font-size:var(--text-body-size-medium)}.PageHeader-actions{align-items:center;display:flex;justify-content:flex-end}.PageHeader-breadcrumbs{display:block;width:100%}.PageHeader-leadingAction{margin-right:var(--base-size-4);margin-top:2px}.PageHeader-parentLink{flex:1 1 auto}
@@ -8,7 +8,6 @@
8
8
  ".PageHeader-title--large",
9
9
  ".PageHeader-description",
10
10
  ".PageHeader-actions",
11
- ".PageHeader--singleAction .PageHeader-action",
12
11
  ".PageHeader-breadcrumbs",
13
12
  ".PageHeader-leadingAction",
14
13
  ".PageHeader-parentLink"
@@ -1 +1 @@
1
- {"version":3,"sources":["page_header.pcss"],"names":[],"mappings":"AAEA,YAIE,oEAAqE,CAHrE,YAAa,CAIb,gBAAiB,CAFjB,qCAAsC,CADtC,6CAIF,CAEA,uBAKE,gCACF,CAEA,4CAJE,kBAAmB,CAHnB,YAAa,CACb,aAAc,CACd,wBAWF,CANA,qBAKE,iCACF,CAEA,kBAGE,aAAc,CAFd,uCAAwC,CACxC,0CAEF,CAEA,yBACE,sCACF,CAGA,wBAEE,0BAA2B,CAC3B,WAAY,CAFZ,sCAGF,CAEA,oBAGE,kBAAmB,CADnB,YAAa,CADb,wBAGF,CAGE,4BADF,6CAMI,sBAAwB,CAJxB,iBAAkB,CAClB,QAKJ,CADE,CAGF,wBACE,aAAc,CACd,UACF,CAEA,0BAEE,+BAAgC,CADhC,cAEF,CAEA,uBACE,aACF","file":"page_header.css","sourcesContent":["/* OP PageHeader */\n\n.PageHeader {\n display: flex;\n padding-bottom: var(--stack-padding-condensed);\n margin-bottom: var(--stack-gap-normal);\n border-bottom: var(--borderWidth-thin) solid var(--borderColor-muted);\n flex-flow: column;\n}\n\n.PageHeader-contextBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center;\n margin-bottom: var(--base-size-8);\n}\n\n.PageHeader-titleBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center; /* Keep back button vertically aligned. */\n margin-bottom: var(--space-xsmall);\n}\n\n.PageHeader-title {\n font-size: var(--text-title-size-medium);\n font-weight: var(--base-text-weight-normal);\n flex: 1 1 auto;\n}\n\n.PageHeader-title--large {\n font-size: var(--text-title-size-large);\n}\n\n/* One-liner of supporting text */\n.PageHeader-description {\n font-size: var(--text-body-size-medium);\n color: var(--fgColor-muted);\n flex: 1 100%;\n}\n\n.PageHeader-actions {\n justify-content: flex-end;\n display: flex;\n align-items: center;\n}\n\n.PageHeader--singleAction .PageHeader-action {\n @media (max-width: 543.98px) {\n position: absolute;\n top: 10px;\n\n /* Normally, the actions are hidden on mobile, except for this special case of a single action */\n display: flex !important;\n }\n}\n\n.PageHeader-breadcrumbs {\n display: block;\n width: 100%;\n}\n\n.PageHeader-leadingAction {\n margin-top: 2px; /* to center align with label */\n margin-right: var(--base-size-4);\n}\n\n.PageHeader-parentLink {\n flex: 1 1 auto;\n}\n"]}
1
+ {"version":3,"sources":["page_header.pcss"],"names":[],"mappings":"AAEA,YAIE,oEAAqE,CAHrE,YAAa,CAIb,gBAAiB,CAFjB,qCAAsC,CADtC,6CAIF,CAEA,uBAKE,gCACF,CAEA,4CAJE,kBAAmB,CAHnB,YAAa,CACb,aAAc,CACd,wBAWF,CANA,qBAKE,iCACF,CAEA,kBAGE,aAAc,CAFd,uCAAwC,CACxC,0CAEF,CAEA,yBACE,sCACF,CAGA,wBAEE,0BAA2B,CAC3B,WAAY,CAFZ,sCAGF,CAEA,oBAGE,kBAAmB,CADnB,YAAa,CADb,wBAGF,CAEA,wBACE,aAAc,CACd,UACF,CAEA,0BAEE,+BAAgC,CADhC,cAEF,CAEA,uBACE,aACF","file":"page_header.css","sourcesContent":["/* OP PageHeader */\n\n.PageHeader {\n display: flex;\n padding-bottom: var(--stack-padding-condensed);\n margin-bottom: var(--stack-gap-normal);\n border-bottom: var(--borderWidth-thin) solid var(--borderColor-muted);\n flex-flow: column;\n}\n\n.PageHeader-contextBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center;\n margin-bottom: var(--base-size-8);\n}\n\n.PageHeader-titleBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center; /* Keep back button vertically aligned. */\n margin-bottom: var(--space-xsmall);\n}\n\n.PageHeader-title {\n font-size: var(--text-title-size-medium);\n font-weight: var(--base-text-weight-normal);\n flex: 1 1 auto;\n}\n\n.PageHeader-title--large {\n font-size: var(--text-title-size-large);\n}\n\n/* One-liner of supporting text */\n.PageHeader-description {\n font-size: var(--text-body-size-medium);\n color: var(--fgColor-muted);\n flex: 1 100%;\n}\n\n.PageHeader-actions {\n justify-content: flex-end;\n display: flex;\n align-items: center;\n}\n\n.PageHeader-breadcrumbs {\n display: block;\n width: 100%;\n}\n\n.PageHeader-leadingAction {\n margin-top: 2px; /* to center align with label */\n margin-right: var(--base-size-4);\n}\n\n.PageHeader-parentLink {\n flex: 1 1 auto;\n}\n"]}
@@ -8,6 +8,8 @@
8
8
  <% menu.with_show_button(icon: :"kebab-horizontal", size: :small, "aria-label": @mobile_menu_label) %>
9
9
  <% @desktop_menu_block.call(menu) unless @desktop_menu_block.nil? %>
10
10
  <% end %>
11
+ <% elsif actions.length == 1 && @mobile_action.present? %>
12
+ <%= render(@mobile_action) { |el| @mobile_action_block.call(el) unless @mobile_action_block.nil?} %>
11
13
  <% end %>
12
14
  </div>
13
15
  <% end %>
@@ -47,16 +47,6 @@
47
47
  align-items: center;
48
48
  }
49
49
 
50
- .PageHeader--singleAction .PageHeader-action {
51
- @media (max-width: 543.98px) {
52
- position: absolute;
53
- top: 10px;
54
-
55
- /* Normally, the actions are hidden on mobile, except for this special case of a single action */
56
- display: flex !important;
57
- }
58
- }
59
-
60
50
  .PageHeader-breadcrumbs {
61
51
  display: block;
62
52
  width: 100%;
@@ -21,7 +21,7 @@ module Primer
21
21
  ].freeze
22
22
 
23
23
  DEFAULT_ACTION_SCHEME = :default
24
- MORE_MENU_DISPLAY = [:flex, :none].freeze
24
+ MOBILE_ACTIONS_DISPLAY = [:flex, :none].freeze
25
25
 
26
26
  DEFAULT_LEADING_ACTION_DISPLAY = [:none, :flex].freeze
27
27
  DEFAULT_BREADCRUMBS_DISPLAY = [:none, :flex].freeze
@@ -58,32 +58,37 @@ module Primer
58
58
  #
59
59
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
60
60
  renders_many :actions, types: {
61
- icon_button: lambda { |icon:, mobile_icon:, label:, scheme: DEFAULT_ACTION_SCHEME, **system_arguments|
61
+ icon_button: lambda { |icon:, mobile_icon:, label:, scheme: DEFAULT_ACTION_SCHEME, **system_arguments, &block|
62
62
  deny_tag_argument(**system_arguments)
63
63
 
64
- system_arguments = set_action_arguments(system_arguments, scheme: scheme, button_action: true)
64
+ system_arguments[:icon] = icon
65
+ system_arguments[:"aria-label"] ||= label
66
+ system_arguments = set_action_arguments(system_arguments, scheme: scheme)
65
67
 
66
- add_option_to_mobile_menu(system_arguments, mobile_icon, label, scheme)
68
+ component = Primer::Beta::IconButton
69
+ create_mobile_alternatives(component, mobile_icon, label, scheme, **system_arguments, &block)
67
70
 
68
- Primer::Beta::IconButton.new(icon: icon, "aria-label": label, **system_arguments)
71
+ component.new(**system_arguments)
69
72
  },
70
- button: lambda { |mobile_icon:, mobile_label:, scheme: DEFAULT_ACTION_SCHEME, **system_arguments|
73
+ button: lambda { |mobile_icon:, mobile_label:, scheme: DEFAULT_ACTION_SCHEME, **system_arguments, &block|
71
74
  deny_tag_argument(**system_arguments)
72
75
 
73
- system_arguments = set_action_arguments(system_arguments, scheme: scheme, button_action: true)
76
+ system_arguments = set_action_arguments(system_arguments, scheme: scheme)
74
77
 
75
- add_option_to_mobile_menu(system_arguments, mobile_icon, mobile_label, scheme)
78
+ component = Primer::Beta::Button
79
+ create_mobile_alternatives(component, mobile_icon, mobile_label, scheme, **system_arguments, &block)
76
80
 
77
- Primer::Beta::Button.new(**system_arguments)
81
+ component.new(**system_arguments)
78
82
  },
79
- zen_mode_button: lambda { |mobile_icon: Primer::OpenProject::ZenModeButton::ZEN_MODE_BUTTON_ICON, mobile_label: Primer::OpenProject::ZenModeButton::ZEN_MODE_BUTTON_LABEL, **system_arguments|
83
+ zen_mode_button: lambda { |mobile_icon: Primer::OpenProject::ZenModeButton::ZEN_MODE_BUTTON_ICON, mobile_label: Primer::OpenProject::ZenModeButton::ZEN_MODE_BUTTON_LABEL, **system_arguments, &block|
80
84
  deny_tag_argument(**system_arguments)
81
85
 
82
- system_arguments = set_action_arguments(system_arguments, scheme: DEFAULT_ACTION_SCHEME, button_action: true)
86
+ system_arguments = set_action_arguments(system_arguments, scheme: DEFAULT_ACTION_SCHEME)
83
87
 
84
- add_option_to_mobile_menu(system_arguments, mobile_icon, mobile_label, DEFAULT_ACTION_SCHEME)
88
+ component = Primer::OpenProject::ZenModeButton
89
+ create_mobile_alternatives(component, mobile_icon, mobile_label, DEFAULT_ACTION_SCHEME, **system_arguments, &block)
85
90
 
86
- Primer::OpenProject::ZenModeButton.new(**system_arguments)
91
+ component.new(**system_arguments)
87
92
  },
88
93
 
89
94
  link: lambda { |mobile_icon:, mobile_label:, scheme: DEFAULT_ACTION_SCHEME, **system_arguments|
@@ -109,29 +114,31 @@ module Primer
109
114
  renders: lambda { |**system_arguments, &block|
110
115
  deny_tag_argument(**system_arguments)
111
116
 
112
- system_arguments[:menu_arguments] = set_action_arguments(system_arguments[:menu_arguments])
113
117
  system_arguments[:button_arguments] ||= {}
114
- system_arguments[:button_arguments][:data] ||= {}
115
- system_arguments[:button_arguments][:data][:targets] = "page-header.actionItems"
118
+ system_arguments[:button_arguments] = set_action_arguments(system_arguments[:button_arguments])
116
119
 
117
120
  # Add the options individually to the mobile menu in the template
118
121
  @desktop_menu_block = block
119
122
 
120
- Primer::OpenProject::PageHeader::Menu.new(**system_arguments)
123
+ component = Primer::OpenProject::PageHeader::Menu
124
+ create_mobile_single_action(component, **system_arguments, &block)
125
+
126
+ component.new(**system_arguments)
121
127
  },
122
128
  },
123
129
  dialog: {
124
- renders: lambda { |mobile_icon:, mobile_label:, **system_arguments|
130
+ renders: lambda { |mobile_icon:, mobile_label:, **system_arguments, &block|
125
131
  deny_tag_argument(**system_arguments)
126
132
 
127
133
  # The id will be automatically calculated for the trigger button, so we have to behave the same, for the mobile click to work
128
134
  system_arguments[:button_arguments] ||= {}
129
135
  system_arguments[:button_arguments][:id] = "dialog-show-#{system_arguments[:dialog_arguments][:id]}"
130
- system_arguments[:button_arguments] = set_action_arguments(system_arguments[:button_arguments], button_action: true)
136
+ system_arguments[:button_arguments] = set_action_arguments(system_arguments[:button_arguments])
131
137
 
132
- add_option_to_mobile_menu(system_arguments[:button_arguments], mobile_icon, mobile_label, :default)
138
+ component = Primer::OpenProject::PageHeader::Dialog
139
+ create_mobile_alternatives(component, mobile_icon, mobile_label, :default, **system_arguments, &block)
133
140
 
134
- Primer::OpenProject::PageHeader::Dialog.new(**system_arguments)
141
+ component.new(**system_arguments)
135
142
  },
136
143
  },
137
144
  }
@@ -212,7 +219,7 @@ module Primer
212
219
  )
213
220
 
214
221
  @mobile_action_menu = Primer::Alpha::ActionMenu.new(
215
- display: MORE_MENU_DISPLAY,
222
+ display: MOBILE_ACTIONS_DISPLAY,
216
223
  anchor_align: :end
217
224
  )
218
225
  end
@@ -224,15 +231,6 @@ module Primer
224
231
  title? && breadcrumbs?
225
232
  end
226
233
 
227
- def before_render
228
- @system_arguments[:classes] = class_names(
229
- @system_arguments[:classes],
230
- "PageHeader--singleAction": !render_mobile_menu?
231
- )
232
-
233
- content
234
- end
235
-
236
234
  def render_mobile_menu?
237
235
  actions.count > 1
238
236
  end
@@ -242,26 +240,32 @@ module Primer
242
240
  def set_action_arguments(system_arguments, scheme: nil, button_action: false)
243
241
  system_arguments[:ml] ||= 2
244
242
  system_arguments[:display] = [:none, :flex]
243
+ system_arguments[:size] = :medium
245
244
  system_arguments[:scheme] = scheme unless scheme.nil?
246
245
  system_arguments[:classes] = class_names(
247
246
  system_arguments[:classes],
248
247
  "PageHeader-action",
249
248
  )
250
- if button_action
251
- system_arguments[:data] ||= {}
252
- system_arguments[:data][:targets] = "page-header.actionItems"
253
- end
254
249
 
255
250
  system_arguments[:id] ||= self.class.generate_id
256
251
  system_arguments
257
252
  end
258
253
 
254
+ def create_mobile_alternatives(component, mobile_icon, mobile_label, scheme, **system_arguments, &block)
255
+ # All actions should collapse into a single actionMenu on mobile
256
+ add_option_to_mobile_menu(system_arguments, mobile_icon, mobile_label, scheme)
257
+
258
+ # Except for single actions, which remain as they are, just smaller.
259
+ create_mobile_single_action(component, **system_arguments, &block)
260
+ end
261
+
259
262
  def add_option_to_mobile_menu(system_arguments, mobile_icon, mobile_label, scheme)
260
263
  unless mobile_icon.nil? || mobile_label.nil?
261
264
  # In action menus, only :default and :danger are allowed
262
265
  scheme = DEFAULT_ACTION_SCHEME unless scheme == :danger
263
266
 
264
- with_menu_item(id: system_arguments[:id], label: mobile_label, scheme: scheme) do |c|
267
+ id = system_arguments[:button_arguments].present? ? system_arguments[:button_arguments][:id] : system_arguments[:id]
268
+ with_menu_item(id: id, label: mobile_label, scheme: scheme) do |c|
265
269
  c.with_leading_visual_icon(icon: mobile_icon)
266
270
  end
267
271
  end
@@ -281,6 +285,19 @@ module Primer
281
285
  )
282
286
  end
283
287
 
288
+ def create_mobile_single_action(component, **system_arguments, &block)
289
+ # Single actions shall not collapse into an action menu on mobile, but keep their state.
290
+ # However the position and size will change
291
+ unless render_mobile_menu?
292
+ mobile_options = system_arguments[:button_arguments].present? ?
293
+ { button_arguments: { display: MOBILE_ACTIONS_DISPLAY, size: :small } } :
294
+ { display: MOBILE_ACTIONS_DISPLAY, size: :small }
295
+
296
+ @mobile_action = component.new(**system_arguments.deep_merge(mobile_options))
297
+ @mobile_action_block = block
298
+ end
299
+ end
300
+
284
301
  # transform anchor tag strings to {href, text} objects
285
302
  # e.g "\u003ca href=\"/admin\"\u003eAdministration\u003c/a\u003e"
286
303
  def anchor_string_to_object(html_string)
@@ -1,6 +1,4 @@
1
1
  declare class PageHeaderElement extends HTMLElement {
2
- actionItems: HTMLElement[];
3
- connectedCallback(): void;
4
2
  menuItemClick(event: Event): void;
5
3
  }
6
4
  declare global {
@@ -4,20 +4,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { controller, targets } from '@github/catalyst';
7
+ import { controller } from '@github/catalyst';
8
8
  let PageHeaderElement = class PageHeaderElement extends HTMLElement {
9
- connectedCallback() {
10
- for (const item of this.actionItems) {
11
- /*
12
- If there is only one action to be shown, we show that instead of the mobile action menu. However, the buttons should be the smaller button variant.
13
- Unfortunately, the `size` attribute does not support responsive attributes and the .pcss syntax does not support inheritance between classes.
14
- So we have to add the class manually here.
15
- */
16
- if (window.innerWidth <= 544) {
17
- item.classList.add('Button--small');
18
- }
19
- }
20
- }
21
9
  menuItemClick(event) {
22
10
  const currentTarget = event.currentTarget;
23
11
  const id = currentTarget?.getAttribute('data-for');
@@ -26,9 +14,6 @@ let PageHeaderElement = class PageHeaderElement extends HTMLElement {
26
14
  }
27
15
  }
28
16
  };
29
- __decorate([
30
- targets
31
- ], PageHeaderElement.prototype, "actionItems", void 0);
32
17
  PageHeaderElement = __decorate([
33
18
  controller
34
19
  ], PageHeaderElement);
@@ -1,22 +1,7 @@
1
- import {controller, targets} from '@github/catalyst'
1
+ import {controller} from '@github/catalyst'
2
2
 
3
3
  @controller
4
4
  class PageHeaderElement extends HTMLElement {
5
- @targets actionItems: HTMLElement[]
6
-
7
- connectedCallback() {
8
- for (const item of this.actionItems) {
9
- /*
10
- If there is only one action to be shown, we show that instead of the mobile action menu. However, the buttons should be the smaller button variant.
11
- Unfortunately, the `size` attribute does not support responsive attributes and the .pcss syntax does not support inheritance between classes.
12
- So we have to add the class manually here.
13
- */
14
- if (window.innerWidth <= 544) {
15
- item.classList.add('Button--small')
16
- }
17
- }
18
- }
19
-
20
5
  menuItemClick(event: Event) {
21
6
  const currentTarget = event.currentTarget as HTMLButtonElement
22
7
 
@@ -4,6 +4,7 @@
4
4
  scheme: :default,
5
5
  id: "zenModeButton",
6
6
  icon: ZEN_MODE_BUTTON_ICON,
7
+ size: @button_size,
7
8
  aria: { label: ZEN_MODE_BUTTON_LABEL },
8
9
  data: { target: "zen-mode-button.button", action: "click:zen-mode-button#performAction" }
9
10
  )
@@ -20,6 +20,8 @@ module Primer
20
20
  @system_arguments[:classes],
21
21
  "ZenModeButton"
22
22
  )
23
+
24
+ @button_size = @system_arguments[:size] || Primer::Beta::Button::DEFAULT_SIZE
23
25
  end
24
26
  end
25
27
  end
@@ -6,7 +6,7 @@ module Primer
6
6
  module VERSION
7
7
  MAJOR = 0
8
8
  MINOR = 29
9
- PATCH = 0
9
+ PATCH = 1
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH].join(".")
12
12
  end
@@ -120,6 +120,21 @@ module Primer
120
120
  end
121
121
  end
122
122
 
123
+
124
+ # @label With a single action
125
+ # The single action will not be transformed into a menu on mobile, but remains in a smaller variant
126
+ def single_action
127
+ render(Primer::OpenProject::PageHeader.new) do |component|
128
+ component.with_title { "Great news" }
129
+ component.with_breadcrumbs([{ href: "/foo", text: "Foo" }, { href: "/bar", text: "Bar" }, "Baz"])
130
+
131
+ component.with_action_button(mobile_icon: "plus", mobile_label: "Meeting", scheme: :primary) do |button|
132
+ button.with_leading_visual_icon(icon: "plus")
133
+ "Meeting"
134
+ end
135
+ end
136
+ end
137
+
123
138
  # @label With leading action (on wide)
124
139
  # **Leading action** is only shown on **wide screens** by default.
125
140
  # If you want to override that behaviour please use the system_argument: **display**
data/static/classes.json CHANGED
@@ -429,9 +429,6 @@
429
429
  "PageHeader": [
430
430
  "Primer::OpenProject::PageHeader"
431
431
  ],
432
- "PageHeader--singleAction": [
433
- "Primer::OpenProject::PageHeader"
434
- ],
435
432
  "PageHeader-actions": [
436
433
  "Primer::OpenProject::PageHeader"
437
434
  ],
@@ -1463,7 +1463,7 @@
1463
1463
  "h5",
1464
1464
  "h6"
1465
1465
  ],
1466
- "MORE_MENU_DISPLAY": [
1466
+ "MOBILE_ACTIONS_DISPLAY": [
1467
1467
  "flex",
1468
1468
  "none"
1469
1469
  ],
@@ -16689,6 +16689,19 @@
16689
16689
  ]
16690
16690
  }
16691
16691
  },
16692
+ {
16693
+ "preview_path": "primer/open_project/page_header/single_action",
16694
+ "name": "single_action",
16695
+ "snapshot": "false",
16696
+ "skip_rules": {
16697
+ "wont_fix": [
16698
+ "region"
16699
+ ],
16700
+ "will_fix": [
16701
+ "color-contrast"
16702
+ ]
16703
+ }
16704
+ },
16692
16705
  {
16693
16706
  "preview_path": "primer/open_project/page_header/leading_action",
16694
16707
  "name": "leading_action",
data/static/previews.json CHANGED
@@ -5274,6 +5274,19 @@
5274
5274
  ]
5275
5275
  }
5276
5276
  },
5277
+ {
5278
+ "preview_path": "primer/open_project/page_header/single_action",
5279
+ "name": "single_action",
5280
+ "snapshot": "false",
5281
+ "skip_rules": {
5282
+ "wont_fix": [
5283
+ "region"
5284
+ ],
5285
+ "will_fix": [
5286
+ "color-contrast"
5287
+ ]
5288
+ }
5289
+ },
5277
5290
  {
5278
5291
  "preview_path": "primer/open_project/page_header/leading_action",
5279
5292
  "name": "leading_action",
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.29.0
4
+ version: 0.29.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Open Source
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-04-19 00:00:00.000000000 Z
12
+ date: 2024-04-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionview