openproject-primer_view_components 0.50.1 → 0.52.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/app/assets/javascripts/components/primer/alpha/action_menu/action_menu_element.d.ts +2 -0
  4. data/app/assets/javascripts/components/primer/open_project/danger_confirmation_dialog_form_helper.d.ts +13 -0
  5. data/app/assets/javascripts/components/primer/primer.d.ts +2 -0
  6. data/app/assets/javascripts/components/primer/utils.d.ts +1 -0
  7. data/app/assets/javascripts/primer_view_components.js +1 -1
  8. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  9. data/app/assets/styles/primer_view_components.css +1 -1
  10. data/app/assets/styles/primer_view_components.css.map +1 -1
  11. data/app/components/primer/alpha/action_list/item.html.erb +1 -4
  12. data/app/components/primer/alpha/action_list.css +1 -1
  13. data/app/components/primer/alpha/action_list.css.json +2 -6
  14. data/app/components/primer/alpha/action_list.css.map +1 -1
  15. data/app/components/primer/alpha/action_list.pcss +10 -43
  16. data/app/components/primer/alpha/action_menu/action_menu_element.d.ts +2 -0
  17. data/app/components/primer/alpha/action_menu/action_menu_element.js +31 -1
  18. data/app/components/primer/alpha/action_menu/action_menu_element.ts +37 -0
  19. data/app/components/primer/alpha/action_menu.rb +6 -0
  20. data/app/components/primer/alpha/select_panel_element.js +6 -19
  21. data/app/components/primer/alpha/select_panel_element.ts +9 -21
  22. data/app/components/primer/alpha/text_field.css +1 -1
  23. data/app/components/primer/alpha/text_field.css.json +30 -30
  24. data/app/components/primer/alpha/text_field.css.map +1 -1
  25. data/app/components/primer/alpha/text_field.pcss +2 -3
  26. data/app/components/primer/open_project/danger_confirmation_dialog/confirmation_check_box.rb +44 -0
  27. data/app/components/primer/open_project/danger_confirmation_dialog/form_wrapper.html.erb +7 -0
  28. data/app/components/primer/open_project/danger_confirmation_dialog/form_wrapper.rb +26 -0
  29. data/app/components/primer/open_project/danger_confirmation_dialog.html.erb +19 -0
  30. data/app/components/primer/open_project/danger_confirmation_dialog.rb +104 -0
  31. data/app/components/primer/open_project/danger_confirmation_dialog_form_helper.d.ts +13 -0
  32. data/app/components/primer/open_project/danger_confirmation_dialog_form_helper.js +44 -0
  33. data/app/components/primer/open_project/danger_confirmation_dialog_form_helper.ts +36 -0
  34. data/app/components/primer/open_project/feedback_dialog.html.erb +2 -2
  35. data/app/components/primer/open_project/feedback_dialog.rb +3 -3
  36. data/app/components/primer/primer.d.ts +2 -0
  37. data/app/components/primer/primer.js +2 -0
  38. data/app/components/primer/primer.ts +2 -0
  39. data/app/components/primer/utils.d.ts +1 -0
  40. data/app/components/primer/utils.js +16 -0
  41. data/app/components/primer/utils.ts +16 -0
  42. data/app/lib/primer/forms/acts_as_component.rb +9 -2
  43. data/app/lib/primer/forms/base.rb +0 -5
  44. data/app/lib/primer/forms/base_component.rb +5 -3
  45. data/app/lib/primer/forms/radio_button_group.html.erb +1 -1
  46. data/app/lib/primer/forms/utils.rb +16 -1
  47. data/lib/primer/view_components/version.rb +2 -2
  48. data/previews/primer/alpha/action_menu_preview/in_scroll_container.html.erb +3 -5
  49. data/previews/primer/open_project/danger_confirmation_dialog_preview/playground.html.erb +13 -0
  50. data/previews/primer/open_project/danger_confirmation_dialog_preview/with_additional_details.html.erb +40 -0
  51. data/previews/primer/open_project/danger_confirmation_dialog_preview/with_form.html.erb +11 -0
  52. data/previews/primer/open_project/danger_confirmation_dialog_preview/with_form_builder_form.html.erb +13 -0
  53. data/previews/primer/open_project/danger_confirmation_dialog_preview.rb +71 -0
  54. data/previews/primer/open_project/feedback_dialog_preview/playground.html.erb +3 -3
  55. data/previews/primer/open_project/feedback_dialog_preview/{additional_content.html.erb → with_additional_details.html.erb} +1 -1
  56. data/previews/primer/open_project/feedback_dialog_preview.rb +6 -6
  57. data/static/classes.json +6 -0
  58. data/static/info_arch.json +6 -6
  59. data/static/previews.json +4 -4
  60. metadata +30 -12
  61. /data/previews/primer/open_project/feedback_dialog_preview/{custom_footer.html.erb → with_custom_footer.html.erb} +0 -0
@@ -0,0 +1,36 @@
1
+ import {controller, target} from '@github/catalyst'
2
+
3
+ const SUBMIT_BUTTON_SELECTOR = 'input[type=submit],button[type=submit],button[data-submit-dialog-id]'
4
+
5
+ @controller
6
+ class DangerConfirmationDialogFormHelperElement extends HTMLElement {
7
+ @target checkbox: HTMLInputElement
8
+
9
+ get submitButton() {
10
+ return this.querySelector<HTMLInputElement | HTMLButtonElement>(SUBMIT_BUTTON_SELECTOR)!
11
+ }
12
+
13
+ connectedCallback() {
14
+ this.#reset()
15
+ }
16
+
17
+ toggle(): void {
18
+ this.submitButton.disabled = !this.checkbox.checked
19
+ }
20
+
21
+ #reset(): void {
22
+ this.checkbox.checked = false
23
+ this.toggle()
24
+ }
25
+ }
26
+
27
+ declare global {
28
+ interface Window {
29
+ DangerConfirmationDialogFormHelperElement: typeof DangerConfirmationDialogFormHelperElement
30
+ }
31
+ }
32
+
33
+ if (!window.customElements.get('danger-confirmation-dialog-form-helper')) {
34
+ window.DangerConfirmationDialogFormHelperElement = DangerConfirmationDialogFormHelperElement
35
+ window.customElements.define('danger-confirmation-dialog-form-helper', DangerConfirmationDialogFormHelperElement)
36
+ }
@@ -1,8 +1,8 @@
1
1
  <%= render @dialog do |dialog| %>
2
2
  <% dialog.with_body do %>
3
3
  <%= feedback_message %>
4
- <% if additional_content.present? %>
5
- <%= additional_content %>
4
+ <% if additional_details.present? %>
5
+ <%= additional_details %>
6
6
  <% end %>
7
7
  <% end %>
8
8
  <% dialog.with_footer do %>
@@ -17,15 +17,15 @@ module Primer
17
17
  Primer::OpenProject::FeedbackMessage.new(icon_arguments: icon_arguments, **system_arguments)
18
18
  }
19
19
 
20
- # Optional additional_content like a form input or toast.
20
+ # Optional additional_details like a form input or toast.
21
21
  #
22
22
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
23
- renders_one :additional_content, lambda { |**system_arguments|
23
+ renders_one :additional_details, lambda { |**system_arguments|
24
24
  deny_tag_argument(**system_arguments)
25
25
  system_arguments[:tag] = :div
26
26
  system_arguments[:classes] = class_names(
27
27
  system_arguments[:classes],
28
- "FeedbackDialog-additionalContent"
28
+ "FeedbackDialog-additionalDetails"
29
29
  )
30
30
 
31
31
  system_arguments[:display] ||= :flex
@@ -8,6 +8,7 @@ import './dialog_helper';
8
8
  import './focus_group';
9
9
  import './scrollable_region';
10
10
  import './shared_events';
11
+ import './utils';
11
12
  import './alpha/modal_dialog';
12
13
  import './beta/nav_list';
13
14
  import './beta/nav_list_group_element';
@@ -27,3 +28,4 @@ import './alpha/select_panel_element';
27
28
  import './open_project/page_header_element';
28
29
  import './open_project/zen_mode_button';
29
30
  import './open_project/sub_header_element';
31
+ import './open_project/danger_confirmation_dialog_form_helper';
@@ -8,6 +8,7 @@ import './dialog_helper';
8
8
  import './focus_group';
9
9
  import './scrollable_region';
10
10
  import './shared_events';
11
+ import './utils';
11
12
  import './alpha/modal_dialog';
12
13
  import './beta/nav_list';
13
14
  import './beta/nav_list_group_element';
@@ -27,3 +28,4 @@ import './alpha/select_panel_element';
27
28
  import './open_project/page_header_element';
28
29
  import './open_project/zen_mode_button';
29
30
  import './open_project/sub_header_element';
31
+ import './open_project/danger_confirmation_dialog_form_helper';
@@ -8,6 +8,7 @@ import './dialog_helper'
8
8
  import './focus_group'
9
9
  import './scrollable_region'
10
10
  import './shared_events'
11
+ import './utils'
11
12
  import './alpha/modal_dialog'
12
13
  import './beta/nav_list'
13
14
  import './beta/nav_list_group_element'
@@ -27,3 +28,4 @@ import './alpha/select_panel_element'
27
28
  import './open_project/page_header_element'
28
29
  import './open_project/zen_mode_button'
29
30
  import './open_project/sub_header_element'
31
+ import './open_project/danger_confirmation_dialog_form_helper'
@@ -0,0 +1 @@
1
+ export declare const observeMutationsUntilConditionMet: (element: Element, condition: () => boolean, body: () => void) => void;
@@ -0,0 +1,16 @@
1
+ // Waits for condition to return true. If it returns false initially, this function creates a
2
+ // MutationObserver that calls body() whenever the contents of the component change.
3
+ export const observeMutationsUntilConditionMet = (element, condition, body) => {
4
+ if (condition()) {
5
+ body();
6
+ }
7
+ else {
8
+ const mutationObserver = new MutationObserver(() => {
9
+ if (condition()) {
10
+ body();
11
+ mutationObserver.disconnect();
12
+ }
13
+ });
14
+ mutationObserver.observe(element, { childList: true, subtree: true });
15
+ }
16
+ };
@@ -0,0 +1,16 @@
1
+ // Waits for condition to return true. If it returns false initially, this function creates a
2
+ // MutationObserver that calls body() whenever the contents of the component change.
3
+ export const observeMutationsUntilConditionMet = (element: Element, condition: () => boolean, body: () => void) => {
4
+ if (condition()) {
5
+ body()
6
+ } else {
7
+ const mutationObserver = new MutationObserver(() => {
8
+ if (condition()) {
9
+ body()
10
+ mutationObserver.disconnect()
11
+ }
12
+ })
13
+
14
+ mutationObserver.observe(element, {childList: true, subtree: true})
15
+ }
16
+ }
@@ -50,8 +50,6 @@ module Primer
50
50
  TemplateGlob = Struct.new(:glob_pattern, :method_name, :on_compile_callback)
51
51
  TemplateParams = Struct.new(:source, :identifier, :type, :format, keyword_init: true)
52
52
 
53
- attr_accessor :template_root_path
54
-
55
53
  def renders_templates(glob_pattern, method_name = nil, &block)
56
54
  template_globs << TemplateGlob.new(glob_pattern, method_name, block)
57
55
  end
@@ -70,6 +68,15 @@ module Primer
70
68
 
71
69
  private
72
70
 
71
+ def template_root_path
72
+ return @template_root_path if defined?(@template_root_path)
73
+
74
+ form_path = Utils.const_source_location(self.name)
75
+ @template_root_path = if form_path
76
+ File.join(File.dirname(form_path), self.name.demodulize.underscore)
77
+ end
78
+ end
79
+
73
80
  def template_globs
74
81
  @template_globs ||= []
75
82
  end
@@ -29,11 +29,6 @@ module Primer
29
29
  end
30
30
 
31
31
  def inherited(base)
32
- form_path = Utils.const_source_location(base.name)
33
- return unless form_path
34
-
35
- base.template_root_path = File.join(File.dirname(form_path), base.name.demodulize.underscore)
36
-
37
32
  base.renders_template "after_content.html.erb" do
38
33
  base.instance_variable_set(:@has_after_content, true)
39
34
  end
@@ -7,8 +7,8 @@ module Primer
7
7
  include Primer::ClassNameHelper
8
8
  extend ActsAsComponent
9
9
 
10
- def self.inherited(base)
11
- base_path = Utils.const_source_location(base.name)
10
+ def self.compile!
11
+ base_path = Utils.const_source_location(self.name)
12
12
 
13
13
  unless base_path
14
14
  warn "Could not identify the template for #{base}"
@@ -16,7 +16,9 @@ module Primer
16
16
  end
17
17
 
18
18
  dir = File.dirname(base_path)
19
- base.renders_template File.join(dir, "#{base.name.demodulize.underscore}.html.erb"), :render_template
19
+ renders_template File.join(dir, "#{self.name.demodulize.underscore}.html.erb"), :render_template
20
+
21
+ super
20
22
  end
21
23
 
22
24
  delegate :required?, :disabled?, :hidden?, to: :@input
@@ -1,5 +1,5 @@
1
1
  <div class="FormControl-radio-group-wrap">
2
- <%= content_tag(:fieldset, **@input.input_arguments) do %>
2
+ <%= content_tag(:fieldset, role: 'radiogroup', **@input.input_arguments) do %>
3
3
  <% if @input.label %>
4
4
  <%= content_tag(:legend, **@input.label_arguments) do %>
5
5
  <%= @input.label %>
@@ -14,13 +14,28 @@ module Primer
14
14
  # for the file in the configured autoload paths. Doing so relies on Rails' autoloading
15
15
  # conventions, so it should work ok. Zeitwerk also has this information but lacks a
16
16
  # public API to map constants to source files.
17
+ #
18
+ # Now that the Ruby bug above has been fixed and released, this method should be used only
19
+ # as a fallback for older Rubies.
17
20
  def const_source_location(class_name)
18
21
  return nil unless class_name
19
22
 
23
+ if (location = Object.const_source_location(class_name)&.[](0))
24
+ return location
25
+ end
26
+
20
27
  # NOTE: underscore respects namespacing, i.e. will convert Foo::Bar to foo/bar.
21
28
  class_path = "#{class_name.underscore}.rb"
22
29
 
23
- ActiveSupport::Dependencies.autoload_paths.each do |autoload_path|
30
+ # Prefer Zeitwerk-managed paths, falling back to ActiveSupport::Dependencies if Zeitwerk
31
+ # is disabled or not in use (i.e. the case for older Rails versions).
32
+ autoload_paths = if Rails.respond_to?(:autoloaders) && Rails.autoloaders.zeitwerk_enabled?
33
+ Rails.autoloaders.main.dirs
34
+ else
35
+ ActiveSupport::Dependencies.autoload_paths
36
+ end
37
+
38
+ autoload_paths.each do |autoload_path|
24
39
  absolute_path = File.join(autoload_path, class_path)
25
40
  return absolute_path if File.exist?(absolute_path)
26
41
  end
@@ -5,8 +5,8 @@ module Primer
5
5
  module ViewComponents
6
6
  module VERSION
7
7
  MAJOR = 0
8
- MINOR = 50
9
- PATCH = 1
8
+ MINOR = 52
9
+ PATCH = 0
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH].join(".")
12
12
  end
@@ -1,11 +1,9 @@
1
- <div style="height: 400px"></div>
2
-
3
- <div style="position: relative">
1
+ <div style="height: 1000px; overflow: auto">
2
+ <div style="height: 400px"></div>
4
3
  <%= render Primer::Alpha::ActionMenu.new(anchor_align: :end) do |c| %>
5
4
  <% c.with_show_button { "Edit" } %>
6
5
  <% c.with_item(tag: :button, type: "button", label: "Rename") %>
7
6
  <% c.with_item(tag: :button, type: "button", scheme: :danger, label: "Remove") %>
8
7
  <% end %>
8
+ <div style="height: 1400px"></div>
9
9
  </div>
10
-
11
- <div style="height: 1400px"></div>
@@ -0,0 +1,13 @@
1
+ <%= render(Primer::OpenProject::DangerConfirmationDialog.new(id: "my-dialog")) do |dialog| %>
2
+ <% dialog.with_show_button { "Click me" } %>
3
+ <% dialog.with_confirmation_message(icon_arguments: { icon: icon, color: icon_color }) do |message| %>
4
+ <% message.with_heading(tag: :h2).with_content("Proceed with danger?") %>
5
+ <% message.with_description_content("This action is not reversible and may cause permanent damage.") if show_description %>
6
+ <% end %>
7
+ <% if show_additional_details %>
8
+ <% dialog.with_additional_details do %>
9
+ <%= render(Primer::Alpha::Banner.new) { "Some additional details below" } %>
10
+ <% end %>
11
+ <% end %>
12
+ <% dialog.with_confirmation_check_box_content(check_box_text) %>
13
+ <% end %>
@@ -0,0 +1,40 @@
1
+ <%= render(Primer::OpenProject::DangerConfirmationDialog.new) do |dialog| %>
2
+ <% dialog.with_show_button { "Click me" } %>
3
+ <% dialog.with_confirmation_message do |message| %>
4
+ <% message.with_heading(tag: :h2).with_content("Delete 5 work packages?") %>
5
+ <% end %>
6
+ <% dialog.with_additional_details do %>
7
+ <%= render(Primer::Beta::BorderBox.new(spacious: false)) do |grid| %>
8
+ <% 5.times do %>
9
+ <% grid.with_row do %>
10
+ <%= render(Primer::OpenProject::FlexLayout.new) do |flex|
11
+ flex.with_column(mr: 2) do
12
+ render(Primer::Beta::Text.new) do
13
+ %w(EPIC FEATURE IDEA).sample
14
+ end
15
+ end
16
+ flex.with_column(mr: 2) do
17
+ work_package_id = rand(999_999)
18
+ render(Primer::Beta::Link.new(
19
+ href: "/work_packages/#{work_package_id}"),
20
+ title: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed volutpat.",
21
+ target: :_blank,
22
+ font_size: :small,
23
+ color: :muted
24
+ ) { "##{work_package_id}" }
25
+ end
26
+ flex.with_column do
27
+ render(Primer::Beta::Label.new(scheme: :accent, size: :medium, inline: true)) do
28
+ ["New", "Confirmed", "In specification"].sample
29
+ end
30
+ end
31
+ end %>
32
+ <%= render(Primer::Beta::Text.new) do %>
33
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed volutpat.
34
+ <% end %>
35
+ <% end %>
36
+ <% end %>
37
+ <% end %>
38
+ <% end %>
39
+ <% dialog.with_confirmation_check_box_content("I understand that this deletion cannot be reversed") %>
40
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <%= render(Primer::OpenProject::DangerConfirmationDialog.new(
2
+ title: "Delete dialog",
3
+ form_arguments: { action: generic_form_submission_path(format: route_format) }
4
+ )) do |dialog| %>
5
+ <% dialog.with_show_button { "Click me" } %>
6
+ <% dialog.with_confirmation_message do |message|
7
+ message.with_heading(tag: :h2).with_content("Permanently delete?")
8
+ message.with_description_content("This action is not reversible. Please proceed with caution.")
9
+ end %>
10
+ <% dialog.with_confirmation_check_box_content("I understand that this deletion cannot be reversed") %>
11
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <%= form_with(url: generic_form_submission_path(format: route_format)) do |f| %>
2
+ <%= render(Primer::OpenProject::DangerConfirmationDialog.new(
3
+ title: "Delete dialog",
4
+ form_arguments: { builder: f, name: "confirm_very_dangerous_action" }
5
+ )) do |dialog| %>
6
+ <% dialog.with_show_button { "Click me" } %>
7
+ <% dialog.with_confirmation_message do |message|
8
+ message.with_heading(tag: :h2).with_content("Permanently delete?")
9
+ message.with_description_content("This action is not reversible. Please proceed with caution.")
10
+ end %>
11
+ <% dialog.with_confirmation_check_box_content("I understand that this deletion cannot be reversed") %>
12
+ <% end %>
13
+ <% end %>
@@ -0,0 +1,71 @@
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 DangerConfirmationDialog
9
+ class DangerConfirmationDialogPreview < ViewComponent::Preview
10
+ # @label Default
11
+ # @snapshot interactive
12
+ def default
13
+ render(Primer::OpenProject::DangerConfirmationDialog.new(title: "Delete dialog")) do |dialog|
14
+ dialog.with_show_button { "Click me" }
15
+ dialog.with_confirmation_message do |message|
16
+ message.with_heading(tag: :h2) { "Permanently delete?" }
17
+ message.with_description_content("This action is not reversible. Please proceed with caution.")
18
+ end
19
+ dialog.with_confirmation_check_box_content("I understand that this deletion cannot be reversed")
20
+ end
21
+ end
22
+
23
+ # @label Playground
24
+ # @param icon [Symbol] octicon
25
+ # @param icon_color [Symbol] select [default, muted, subtle, accent, success, attention, severe, danger, open, closed, done, sponsors, on_emphasis, inherit]
26
+ # @param show_description toggle
27
+ # @param show_additional_details toggle
28
+ # @param check_box_text [String]
29
+ def playground(
30
+ icon: :"alert",
31
+ icon_color: :danger,
32
+ show_description: true,
33
+ show_additional_details: false,
34
+ check_box_text: "I understand that this deletion cannot be reversed"
35
+ )
36
+ render_with_template(locals: { icon: icon,
37
+ icon_color: icon_color,
38
+ show_description: show_description,
39
+ show_additional_details: show_additional_details,
40
+ check_box_text: check_box_text })
41
+ end
42
+
43
+ # @label With form using FormBuilder
44
+ def with_form_builder_form(route_format: :html)
45
+ render_with_template(locals: { route_format: route_format })
46
+ end
47
+
48
+ # @label With form
49
+ def with_form(route_format: :html)
50
+ render_with_template(locals: { route_format: route_format })
51
+ end
52
+
53
+ # @label With additional details
54
+ def with_additional_details
55
+ render_with_template(locals: {})
56
+ end
57
+
58
+ # @label With custom icon
59
+ def custom_icon
60
+ render(Primer::OpenProject::DangerConfirmationDialog.new(title: "Delete dialog")) do |dialog|
61
+ dialog.with_show_button { "Click me" }
62
+ dialog.with_confirmation_message(icon_arguments: { icon: :"alert-fill" }) do |message|
63
+ message.with_heading(tag: :h2) { "Permanently delete?" }
64
+ message.with_description_content("This action is not reversible and will remove all containing sub-tiems. Please proceed with caution.")
65
+ end
66
+ dialog.with_confirmation_check_box_content("I understand that this deletion cannot be reversed")
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -4,9 +4,9 @@
4
4
  <% message.with_heading(tag: :h2).with_content("Awesome!") %>
5
5
  <% message.with_description { "Great! Everything worked well." } if show_description %>
6
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" } %>
7
+ <% if show_additional_details %>
8
+ <% dialog.with_additional_details(display: :inline) do %>
9
+ <%= render(Primer::Alpha::Banner.new) { "Some additional details below" } %>
10
10
  <% end %>
11
11
  <% end %>
12
12
  <% if custom_footer %>
@@ -3,7 +3,7 @@
3
3
  <% dialog.with_feedback_message do |message| %>
4
4
  <% message.with_heading(tag: :h2).with_content("Action successful") %>
5
5
  <% end %>
6
- <% dialog.with_additional_content do %>
6
+ <% dialog.with_additional_details do %>
7
7
  <% render(Primer::Beta::Text.new) { "You can render whatever component you want here." } %>
8
8
  <% end %>
9
9
  <% end %>
@@ -24,19 +24,19 @@ module Primer
24
24
  # @param icon_color [Symbol] select [default, muted, subtle, accent, success, attention, severe, danger, open, closed, done, sponsors, on_emphasis, inherit]
25
25
  # @param loading_state [Boolean] toggle
26
26
  # @param show_description toggle
27
- # @param show_additional_content toggle
27
+ # @param show_additional_details toggle
28
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)
29
+ def playground(icon: :"check-circle", icon_color: :success, loading_state: false, show_description: true, show_additional_details: false, custom_footer: false)
30
30
  render_with_template(locals: { icon: icon,
31
31
  icon_color: icon_color,
32
32
  loading_state: loading_state,
33
33
  show_description: show_description,
34
- show_additional_content: show_additional_content,
34
+ show_additional_details: show_additional_details,
35
35
  custom_footer: custom_footer })
36
36
  end
37
37
 
38
- # @label With additional content
39
- def additional_content
38
+ # @label With additional details
39
+ def with_additional_details
40
40
  render_with_template(locals: {})
41
41
  end
42
42
 
@@ -52,7 +52,7 @@ module Primer
52
52
  end
53
53
 
54
54
  # @label With custom footer
55
- def custom_footer
55
+ def with_custom_footer
56
56
  render_with_template(locals: {})
57
57
  end
58
58
 
data/static/classes.json CHANGED
@@ -263,6 +263,9 @@
263
263
  "FormControl-check-group-wrap": [
264
264
  "Primer::Alpha::TextField"
265
265
  ],
266
+ "FormControl-checkbox": [
267
+ "Primer::Alpha::TextField"
268
+ ],
266
269
  "FormControl-checkbox-wrap": [
267
270
  "Primer::Alpha::TextField"
268
271
  ],
@@ -305,6 +308,9 @@
305
308
  "FormControl-monospace": [
306
309
  "Primer::Alpha::TextField"
307
310
  ],
311
+ "FormControl-radio": [
312
+ "Primer::Alpha::TextField"
313
+ ],
308
314
  "FormControl-radio-group-wrap": [
309
315
  "Primer::Alpha::TextField"
310
316
  ],
@@ -17497,8 +17497,8 @@
17497
17497
  ]
17498
17498
  },
17499
17499
  {
17500
- "name": "additional_content",
17501
- "description": "Optional additional_content like a form input or toast.",
17500
+ "name": "additional_details",
17501
+ "description": "Optional additional_details like a form input or toast.",
17502
17502
  "parameters": [
17503
17503
  {
17504
17504
  "name": "system_arguments",
@@ -17547,8 +17547,8 @@
17547
17547
  }
17548
17548
  },
17549
17549
  {
17550
- "preview_path": "primer/open_project/feedback_dialog/additional_content",
17551
- "name": "additional_content",
17550
+ "preview_path": "primer/open_project/feedback_dialog/with_additional_details",
17551
+ "name": "with_additional_details",
17552
17552
  "snapshot": "false",
17553
17553
  "skip_rules": {
17554
17554
  "wont_fix": [
@@ -17573,8 +17573,8 @@
17573
17573
  }
17574
17574
  },
17575
17575
  {
17576
- "preview_path": "primer/open_project/feedback_dialog/custom_footer",
17577
- "name": "custom_footer",
17576
+ "preview_path": "primer/open_project/feedback_dialog/with_custom_footer",
17577
+ "name": "with_custom_footer",
17578
17578
  "snapshot": "false",
17579
17579
  "skip_rules": {
17580
17580
  "wont_fix": [
data/static/previews.json CHANGED
@@ -3680,8 +3680,8 @@
3680
3680
  }
3681
3681
  },
3682
3682
  {
3683
- "preview_path": "primer/open_project/feedback_dialog/additional_content",
3684
- "name": "additional_content",
3683
+ "preview_path": "primer/open_project/feedback_dialog/with_additional_details",
3684
+ "name": "with_additional_details",
3685
3685
  "snapshot": "false",
3686
3686
  "skip_rules": {
3687
3687
  "wont_fix": [
@@ -3706,8 +3706,8 @@
3706
3706
  }
3707
3707
  },
3708
3708
  {
3709
- "preview_path": "primer/open_project/feedback_dialog/custom_footer",
3710
- "name": "custom_footer",
3709
+ "preview_path": "primer/open_project/feedback_dialog/with_custom_footer",
3710
+ "name": "with_custom_footer",
3711
3711
  "snapshot": "false",
3712
3712
  "skip_rules": {
3713
3713
  "wont_fix": [