openproject-primer_view_components 0.43.0 → 0.44.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/app/assets/images/loading_indicator.svg +1 -0
  4. data/app/assets/javascripts/primer_view_components.js +1 -1
  5. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  6. data/app/assets/styles/primer_view_components.css +1 -1
  7. data/app/assets/styles/primer_view_components.css.map +1 -1
  8. data/app/components/primer/open_project/feedback_dialog.html.erb +15 -0
  9. data/app/components/primer/open_project/feedback_dialog.rb +64 -0
  10. data/app/components/primer/open_project/feedback_message.html.erb +1 -0
  11. data/app/components/primer/open_project/feedback_message.rb +53 -0
  12. data/app/components/primer/open_project/sub_header.css +1 -1
  13. data/app/components/primer/open_project/sub_header.css.json +1 -0
  14. data/app/components/primer/open_project/sub_header.css.map +1 -1
  15. data/app/components/primer/open_project/sub_header.pcss +3 -2
  16. data/app/components/primer/open_project/sub_header_element.js +2 -2
  17. data/app/components/primer/open_project/sub_header_element.ts +2 -2
  18. data/lib/primer/view_components/version.rb +1 -1
  19. data/previews/primer/open_project/feedback_dialog_preview/additional_content.html.erb +9 -0
  20. data/previews/primer/open_project/feedback_dialog_preview/custom_footer.html.erb +10 -0
  21. data/previews/primer/open_project/feedback_dialog_preview/playground.html.erb +18 -0
  22. data/previews/primer/open_project/feedback_dialog_preview.rb +70 -0
  23. data/previews/primer/open_project/feedback_message_preview.rb +58 -0
  24. data/static/arguments.json +44 -0
  25. data/static/audited_at.json +2 -0
  26. data/static/classes.json +3 -0
  27. data/static/constants.json +4 -0
  28. data/static/info_arch.json +269 -0
  29. data/static/previews.json +159 -0
  30. data/static/statuses.json +2 -0
  31. metadata +12 -2
@@ -0,0 +1,15 @@
1
+ <%= render @dialog do |dialog| %>
2
+ <% dialog.with_body do %>
3
+ <%= feedback_message %>
4
+ <% if additional_content.present? %>
5
+ <%= additional_content %>
6
+ <% end %>
7
+ <% end %>
8
+ <% dialog.with_footer do %>
9
+ <% if footer.present? %>
10
+ <%= footer %>
11
+ <% else %>
12
+ <%= render(Primer::Beta::Button.new("data-close-dialog-id": @system_arguments[:id])) { I18n.t("button_close") } %>
13
+ <% end %>
14
+ <% end %>
15
+ <% end %>
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module OpenProject
5
+ # A pre-configured dialog which includes the FeedbackMessage
6
+ class FeedbackDialog < Primer::Component
7
+ status :open_project
8
+
9
+ # A feedback message with some defaults that are necessary for rendering nicely
10
+ #
11
+ # @param heading [String] the heading for the success message
12
+ # @param description [String] the description for the success message
13
+ # @param icon_arguments [Hash] the system_arguments for the icon
14
+ # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
15
+ renders_one :feedback_message, lambda { |icon_arguments: {}, **system_arguments|
16
+ system_arguments[:border] = false
17
+ Primer::OpenProject::FeedbackMessage.new(icon_arguments: icon_arguments, **system_arguments)
18
+ }
19
+
20
+ # Optional additional_content like a form input or toast.
21
+ #
22
+ # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
23
+ renders_one :additional_content, lambda { |**system_arguments|
24
+ deny_tag_argument(**system_arguments)
25
+ system_arguments[:tag] = :div
26
+ system_arguments[:classes] = class_names(
27
+ system_arguments[:classes],
28
+ "FeedbackDialog-additionalContent"
29
+ )
30
+
31
+ system_arguments[:display] ||= :flex
32
+ system_arguments[:align_items] ||= :center
33
+ system_arguments[:justify_content] ||= :center
34
+ system_arguments[:mb] ||= 3
35
+
36
+ Primer::BaseComponent.new(**system_arguments)
37
+ }
38
+
39
+ renders_one :footer
40
+
41
+ # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
42
+ def initialize(**system_arguments)
43
+ @system_arguments = system_arguments
44
+ @system_arguments[:classes] = class_names(
45
+ system_arguments[:classes],
46
+ "FeedbackDialog"
47
+ )
48
+ @system_arguments[:id] ||= self.class.generate_id
49
+
50
+ @dialog = Primer::Alpha::Dialog.new(title: @system_arguments[:title], subtitle: nil, visually_hide_title: true, **@system_arguments)
51
+ end
52
+
53
+ delegate :header?, :header, :with_header, :with_header_content,
54
+ :show_button?, :show_button, :with_show_button, :with_show_button_content,
55
+ to: :@dialog
56
+
57
+ private
58
+
59
+ def before_render
60
+ content
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1 @@
1
+ <%= render(@blankslate) %>
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module OpenProject
5
+ # A view component for messages, inspired by the Primer Blankslate,
6
+ # which serves a different use-case (messages for when data is missing).
7
+ # We decided to wrap the Blankslate, because we don't want to have to adapt
8
+ # lots of different usages if Primer decides to change the Blankslate
9
+ # in a way that does not go well with our "misuse".
10
+ class FeedbackMessage < Primer::Component
11
+ status :open_project
12
+
13
+ # @param icon_arguments [Hash] special arguments for the icon
14
+ # @param loading [Boolean] Show a loading spinner instead of an icon
15
+ # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
16
+ def initialize(icon_arguments: {}, loading: false, **system_arguments)
17
+ @system_arguments = system_arguments
18
+ @icon_arguments = icon_arguments
19
+ @system_arguments[:classes] = class_names(
20
+ system_arguments[:classes],
21
+ "FeedbackMessage"
22
+ )
23
+
24
+ @icon_arguments[:icon] ||= :"check-circle"
25
+ @icon_arguments[:color] ||= :success
26
+
27
+ @loading = loading
28
+
29
+ @blankslate = Primer::Beta::Blankslate.new(**@system_arguments)
30
+ end
31
+
32
+ delegate :description?, :description, :with_description, :with_description_content,
33
+ :heading?, :heading, :with_heading, :with_heading_content,
34
+ to: :@blankslate
35
+
36
+ private
37
+
38
+ def before_render
39
+ if @loading
40
+ @blankslate.with_visual_image(src: asset_path("loading_indicator.svg"), alt: I18n.t(:label_loading))
41
+ else
42
+ @blankslate.with_visual_icon(size: :medium, **@icon_arguments)
43
+ end
44
+
45
+ content
46
+ end
47
+
48
+ def render?
49
+ heading.present?
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1 +1 @@
1
- .SubHeader{align-items:center;display:grid;flex-wrap:wrap;grid-template-areas:"left middle right" "bottom bottom bottom";grid-template-columns:auto 1fr auto;margin-bottom:16px}.SubHeader-rightPane{align-items:center;column-gap:12px;display:flex;grid-area:right}.SubHeader-middlePane{grid-area:middle;text-align:center}.SubHeader-bottomPane{grid-area:bottom}.SubHeader-leftPane{align-items:center;display:flex;gap:12px;grid-area:left;width:100%}.SubHeader-filterContainer{display:flex;gap:8px;width:100%}
1
+ .SubHeader{align-items:center;display:grid;grid-template-areas:"left middle right" "bottom bottom bottom";grid-template-columns:auto 1fr auto;margin-bottom:16px}.SubHeader--expandedSearch{grid-template-areas:"left left left" "bottom bottom bottom"}.SubHeader-rightPane{align-items:center;column-gap:12px;display:flex;grid-area:right}.SubHeader-middlePane{grid-area:middle;text-align:center}.SubHeader-bottomPane{grid-area:bottom}.SubHeader-leftPane{align-items:center;display:flex;gap:12px;grid-area:left;width:100%}.SubHeader-filterContainer{display:flex;gap:8px;width:100%}
@@ -2,6 +2,7 @@
2
2
  "name": "open_project/sub_header",
3
3
  "selectors": [
4
4
  ".SubHeader",
5
+ ".SubHeader--expandedSearch",
5
6
  ".SubHeader-rightPane",
6
7
  ".SubHeader-middlePane",
7
8
  ".SubHeader-bottomPane",
@@ -1 +1 @@
1
- {"version":3,"sources":["sub_header.pcss"],"names":[],"mappings":"AAEA,WAII,kBAAmB,CAHnB,YAAa,CAOb,cAAe,CANf,8DAA+D,CAC/D,mCAAoC,CAEpC,kBAIJ,CAEA,qBAGI,kBAAmB,CACnB,eAAgB,CAFhB,YAAa,CADb,eAIJ,CAEA,sBACI,gBAAiB,CACjB,iBACJ,CAEA,sBACI,gBACJ,CAEA,oBAGI,kBAAmB,CADnB,YAAa,CAGb,QAAS,CAJT,cAAe,CAGf,UAEJ,CAEA,2BACI,YAAa,CAEb,OAAQ,CADR,UAEJ","file":"sub_header.css","sourcesContent":["/* CSS for SubHeader */\n\n.SubHeader {\n display: grid;\n grid-template-areas: \"left middle right\" \"bottom bottom bottom\";\n grid-template-columns: auto 1fr auto;\n align-items: center;\n margin-bottom: 16px;\n\n /* When the filter input is expanded in mobile, we switch to a flex layout */\n flex-wrap: wrap;\n}\n\n.SubHeader-rightPane {\n grid-area: right;\n display: flex;\n align-items: center;\n column-gap: 12px;\n}\n\n.SubHeader-middlePane {\n grid-area: middle;\n text-align: center;\n}\n\n.SubHeader-bottomPane {\n grid-area: bottom;\n}\n\n.SubHeader-leftPane {\n grid-area: left;\n display: flex;\n align-items: center;\n width: 100%;\n gap: 12px;\n}\n\n.SubHeader-filterContainer {\n display: flex;\n width: 100%;\n gap: 8px;\n}\n"]}
1
+ {"version":3,"sources":["sub_header.pcss"],"names":[],"mappings":"AAEA,WAII,kBAAmB,CAHnB,YAAa,CACb,8DAA+D,CAC/D,mCAAoC,CAEpC,kBACJ,CAEA,2BACI,2DACJ,CAEA,qBAGI,kBAAmB,CACnB,eAAgB,CAFhB,YAAa,CADb,eAIJ,CAEA,sBACI,gBAAiB,CACjB,iBACJ,CAEA,sBACI,gBACJ,CAEA,oBAGI,kBAAmB,CADnB,YAAa,CAGb,QAAS,CAJT,cAAe,CAGf,UAEJ,CAEA,2BACI,YAAa,CAEb,OAAQ,CADR,UAEJ","file":"sub_header.css","sourcesContent":["/* CSS for SubHeader */\n\n.SubHeader {\n display: grid;\n grid-template-areas: \"left middle right\" \"bottom bottom bottom\";\n grid-template-columns: auto 1fr auto;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.SubHeader--expandedSearch {\n grid-template-areas: \"left left left\" \"bottom bottom bottom\";\n}\n\n.SubHeader-rightPane {\n grid-area: right;\n display: flex;\n align-items: center;\n column-gap: 12px;\n}\n\n.SubHeader-middlePane {\n grid-area: middle;\n text-align: center;\n}\n\n.SubHeader-bottomPane {\n grid-area: bottom;\n}\n\n.SubHeader-leftPane {\n grid-area: left;\n display: flex;\n align-items: center;\n width: 100%;\n gap: 12px;\n}\n\n.SubHeader-filterContainer {\n display: flex;\n width: 100%;\n gap: 8px;\n}\n"]}
@@ -6,9 +6,10 @@
6
6
  grid-template-columns: auto 1fr auto;
7
7
  align-items: center;
8
8
  margin-bottom: 16px;
9
+ }
9
10
 
10
- /* When the filter input is expanded in mobile, we switch to a flex layout */
11
- flex-wrap: wrap;
11
+ .SubHeader--expandedSearch {
12
+ grid-template-areas: "left left left" "bottom bottom bottom";
12
13
  }
13
14
 
14
15
  .SubHeader-rightPane {
@@ -13,7 +13,7 @@ let SubHeaderElement = class SubHeaderElement extends HTMLElement {
13
13
  for (const item of this.shownItemsOnExpandedFilter) {
14
14
  item.classList.remove('d-none');
15
15
  }
16
- this.classList.add('d-flex');
16
+ this.classList.add('SubHeader--expandedSearch');
17
17
  this.filterInput.focus();
18
18
  }
19
19
  collapseFilterInput() {
@@ -23,7 +23,7 @@ let SubHeaderElement = class SubHeaderElement extends HTMLElement {
23
23
  for (const item of this.shownItemsOnExpandedFilter) {
24
24
  item.classList.add('d-none');
25
25
  }
26
- this.classList.remove('d-flex');
26
+ this.classList.remove('SubHeader--expandedSearch');
27
27
  }
28
28
  };
29
29
  __decorate([
@@ -15,7 +15,7 @@ class SubHeaderElement extends HTMLElement {
15
15
  item.classList.remove('d-none')
16
16
  }
17
17
 
18
- this.classList.add('d-flex')
18
+ this.classList.add('SubHeader--expandedSearch')
19
19
 
20
20
  this.filterInput.focus()
21
21
  }
@@ -29,7 +29,7 @@ class SubHeaderElement extends HTMLElement {
29
29
  item.classList.add('d-none')
30
30
  }
31
31
 
32
- this.classList.remove('d-flex')
32
+ this.classList.remove('SubHeader--expandedSearch')
33
33
  }
34
34
  }
35
35
 
@@ -5,7 +5,7 @@ module Primer
5
5
  module ViewComponents
6
6
  module VERSION
7
7
  MAJOR = 0
8
- MINOR = 43
8
+ MINOR = 44
9
9
  PATCH = 0
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH].join(".")
@@ -0,0 +1,9 @@
1
+ <%= render(Primer::OpenProject::FeedbackDialog.new) do |dialog| %>
2
+ <% dialog.with_show_button { "Click me" } %>
3
+ <% dialog.with_feedback_message do |message| %>
4
+ <% message.with_heading(tag: :h2).with_content("Action successful") %>
5
+ <% end %>
6
+ <% dialog.with_additional_content do %>
7
+ <% render(Primer::Beta::Text.new) { "You can render whatever component you want here." } %>
8
+ <% end %>
9
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <%= render(Primer::OpenProject::FeedbackDialog.new(id: "my-dialog")) do |dialog| %>
2
+ <% dialog.with_show_button { "Click me" } %>
3
+ <% dialog.with_feedback_message do |message| %>
4
+ <% message.with_heading(tag: :h2).with_content("Action successful") %>
5
+ <% end %>
6
+ <% dialog.with_footer do %>
7
+ <%= render(Primer::Beta::Button.new("data-close-dialog-id": "my-dialog")) { "Cancel" } %>
8
+ <%= render(Primer::Beta::Button.new(scheme: :primary)) { "Accept" } %>
9
+ <% end %>
10
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <%= render(Primer::OpenProject::FeedbackDialog.new(id: "my-dialog")) do |dialog| %>
2
+ <% dialog.with_show_button { "Click me" } %>
3
+ <% dialog.with_feedback_message(icon_arguments: { icon: icon, color: icon_color }, loading: loading_state) do |message| %>
4
+ <% message.with_heading(tag: :h2).with_content("Awesome!") %>
5
+ <% message.with_description { "Great! Everything worked well." } if show_description %>
6
+ <% end %>
7
+ <% if show_additional_content %>
8
+ <% dialog.with_additional_content(display: :inline) do %>
9
+ <%= render(Primer::Alpha::Banner.new) { "Some additional content below" } %>
10
+ <% end %>
11
+ <% end %>
12
+ <% if custom_footer %>
13
+ <% dialog.with_footer do %>
14
+ <%= render(Primer::Beta::Button.new("data-close-dialog-id": "my-dialog")) { "Cancel" } %>
15
+ <%= render(Primer::Beta::Button.new(scheme: :primary)) { "Accept" } %>
16
+ <% end %>
17
+ <% end %>
18
+ <% end %>
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Setup Playground to use all available component props
4
+ # Setup Features to use individual component props and combinations
5
+
6
+ module Primer
7
+ module OpenProject
8
+ # @label FeedbackDialog
9
+ class FeedbackDialogPreview < ViewComponent::Preview
10
+ # @label Default
11
+ # @snapshot interactive
12
+ def default
13
+ render(Primer::OpenProject::FeedbackDialog.new(title: "Success dialog")) do |dialog|
14
+ dialog.with_show_button { "Click me" }
15
+ dialog.with_feedback_message do |message|
16
+ message.with_heading(tag: :h2) { "Success" }
17
+ message.with_description { "Great! Everything worked well." }
18
+ end
19
+ end
20
+ end
21
+
22
+ # @label Playground
23
+ # @param icon [Symbol] octicon
24
+ # @param icon_color [Symbol] select [default, muted, subtle, accent, success, attention, severe, danger, open, closed, done, sponsors, on_emphasis, inherit]
25
+ # @param loading_state [Boolean] toggle
26
+ # @param show_description toggle
27
+ # @param show_additional_content toggle
28
+ # @param custom_footer toggle
29
+ def playground(icon: :"check-circle", icon_color: :success, loading_state: false, show_description: true, show_additional_content: false, custom_footer: false)
30
+ render_with_template(locals: { icon: icon,
31
+ icon_color: icon_color,
32
+ loading_state: loading_state,
33
+ show_description: show_description,
34
+ show_additional_content: show_additional_content,
35
+ custom_footer: custom_footer })
36
+ end
37
+
38
+ # @label With additional content
39
+ def additional_content
40
+ render_with_template(locals: {})
41
+ end
42
+
43
+ # @label With custom icon
44
+ def custom_icon
45
+ render(Primer::OpenProject::FeedbackDialog.new(title: "Error message")) do |dialog|
46
+ dialog.with_show_button { "Click me" }
47
+ dialog.with_feedback_message(icon_arguments: { icon: :"x-circle", color: :danger }) do |message|
48
+ message.with_heading(tag: :h2) { "Ups, something went wrong" }
49
+ message.with_description { "Please try again or contact your administrator if the issue persists." }
50
+ end
51
+ end
52
+ end
53
+
54
+ # @label With custom footer
55
+ def custom_footer
56
+ render_with_template(locals: {})
57
+ end
58
+
59
+ # @label With loading spinner
60
+ def loading_spinner
61
+ render(Primer::OpenProject::FeedbackDialog.new(title: "Waiting...")) do |dialog|
62
+ dialog.with_show_button { "Click me" }
63
+ dialog.with_feedback_message(loading: true) do |message|
64
+ message.with_heading(tag: :h2) { "Please wait, your request is being processed." }
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module OpenProject
5
+ # @label FeedbackMessage
6
+ class FeedbackMessagePreview < ViewComponent::Preview
7
+ # @label Default
8
+ # @snapshot
9
+ def default
10
+ render Primer::OpenProject::FeedbackMessage.new do |component|
11
+ component.with_heading(tag: :h2) { "Success" }
12
+ component.with_description { "You successfully created your first FeedbackMessage component" }
13
+ end
14
+ end
15
+
16
+
17
+ # @label Playground
18
+ #
19
+ # @param icon [Symbol] octicon
20
+ # @param icon_color [Symbol] select [default, muted, subtle, accent, success, attention, severe, danger, open, closed, done, sponsors, on_emphasis, inherit]
21
+ # @param loading_state [Boolean] toggle
22
+ # @param title [String]
23
+ # @param description [String]
24
+ # @param narrow [Boolean] toggle
25
+ # @param spacious [Boolean] toggle
26
+ # @param border [Boolean] toggle
27
+ def playground(icon: "check-circle", icon_color: :success, loading_state: false, title: "Yeah!", description: "Some description below...", narrow: false, spacious: false, border: false)
28
+ render Primer::OpenProject::FeedbackMessage.new(icon_arguments: { icon: icon, color: icon_color}, loading: loading_state, narrow: narrow, spacious: spacious, border: border) do |component|
29
+ component.with_heading(tag: :h2).with_content(title)
30
+ component.with_description { description }
31
+ end
32
+ end
33
+
34
+ # @label With custom icon
35
+ def with_custom_icon
36
+ render Primer::OpenProject::FeedbackMessage.new(icon_arguments: { icon: :"op-enterprise-addons", classes: "upsale-colored" }) do |component|
37
+ component.with_heading(tag: :h2) { "You are a hero" }
38
+ component.with_description { "Thanks for supporting an open source project!" }
39
+ end
40
+ end
41
+
42
+ # @label With custom color
43
+ def with_custom_color
44
+ render Primer::OpenProject::FeedbackMessage.new(icon_arguments: { icon: :"x-circle", color: :danger }) do |component|
45
+ component.with_heading(tag: :h2) { "Ups, something went wrong" }
46
+ component.with_description { "Please try again or contact your administrator." }
47
+ end
48
+ end
49
+
50
+ # @label With loading spinner
51
+ def loading_spinner
52
+ render(Primer::OpenProject::FeedbackMessage.new(loading: true)) do |component|
53
+ component.with_heading(tag: :h2) { "Please wait, your request is being processed." }
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -5039,6 +5039,50 @@
5039
5039
  }
5040
5040
  ]
5041
5041
  },
5042
+ {
5043
+ "component": "OpenProject::FeedbackDialog",
5044
+ "status": "open_project",
5045
+ "a11y_reviewed": false,
5046
+ "short_name": "OpenProjectFeedbackDialog",
5047
+ "source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/feedback_dialog.rb",
5048
+ "lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/feedback_dialog/default/",
5049
+ "parameters": [
5050
+ {
5051
+ "name": "system_arguments",
5052
+ "type": "Hash",
5053
+ "default": "N/A",
5054
+ "description": "[System arguments](/system-arguments)"
5055
+ }
5056
+ ]
5057
+ },
5058
+ {
5059
+ "component": "OpenProject::FeedbackMessage",
5060
+ "status": "open_project",
5061
+ "a11y_reviewed": false,
5062
+ "short_name": "OpenProjectFeedbackMessage",
5063
+ "source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/feedback_message.rb",
5064
+ "lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/feedback_message/default/",
5065
+ "parameters": [
5066
+ {
5067
+ "name": "icon_arguments",
5068
+ "type": "Hash",
5069
+ "default": "`{}`",
5070
+ "description": "special arguments for the icon"
5071
+ },
5072
+ {
5073
+ "name": "loading",
5074
+ "type": "Boolean",
5075
+ "default": "`false`",
5076
+ "description": "Show a loading spinner instead of an icon"
5077
+ },
5078
+ {
5079
+ "name": "system_arguments",
5080
+ "type": "Hash",
5081
+ "default": "N/A",
5082
+ "description": "[System arguments](/system-arguments)"
5083
+ }
5084
+ ]
5085
+ },
5042
5086
  {
5043
5087
  "component": "OpenProject::FlexLayout",
5044
5088
  "status": "open_project",
@@ -118,6 +118,8 @@
118
118
  "Primer::OpenProject::BorderGrid": "",
119
119
  "Primer::OpenProject::BorderGrid::Cell": "",
120
120
  "Primer::OpenProject::DragHandle": "",
121
+ "Primer::OpenProject::FeedbackDialog": "",
122
+ "Primer::OpenProject::FeedbackMessage": "",
121
123
  "Primer::OpenProject::FlexLayout": "",
122
124
  "Primer::OpenProject::GridLayout": "",
123
125
  "Primer::OpenProject::GridLayout::Area": "",
data/static/classes.json CHANGED
@@ -582,6 +582,9 @@
582
582
  "SubHeader": [
583
583
  "Primer::OpenProject::SubHeader"
584
584
  ],
585
+ "SubHeader--expandedSearch": [
586
+ "Primer::OpenProject::SubHeader"
587
+ ],
585
588
  "SubHeader-bottomPane": [
586
589
  "Primer::OpenProject::SubHeader"
587
590
  ],
@@ -1422,6 +1422,10 @@
1422
1422
  "medium"
1423
1423
  ]
1424
1424
  },
1425
+ "Primer::OpenProject::FeedbackDialog": {
1426
+ },
1427
+ "Primer::OpenProject::FeedbackMessage": {
1428
+ },
1425
1429
  "Primer::OpenProject::FlexLayout": {
1426
1430
  },
1427
1431
  "Primer::OpenProject::GridLayout": {