primer_view_components 0.0.120 → 0.0.122

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +58 -0
  3. data/app/assets/styles/primer_view_components.css +2 -2
  4. data/app/assets/styles/primer_view_components.css.map +1 -1
  5. data/app/components/primer/alpha/action_list.css.json +123 -1
  6. data/app/components/primer/alpha/auto_complete.css.json +23 -1
  7. data/app/components/primer/alpha/banner.css.json +24 -1
  8. data/app/components/primer/alpha/button_marketing.css.json +33 -1
  9. data/app/components/primer/alpha/check_box.rb +74 -0
  10. data/app/components/primer/alpha/check_box_group.rb +36 -0
  11. data/app/components/primer/alpha/dialog.css.json +82 -1
  12. data/app/components/primer/alpha/dialog.rb +1 -1
  13. data/app/components/primer/alpha/dropdown.css.json +40 -1
  14. data/app/components/primer/alpha/form_button.rb +32 -0
  15. data/app/components/primer/alpha/form_control.html.erb +26 -0
  16. data/app/components/primer/alpha/form_control.rb +105 -0
  17. data/app/components/primer/alpha/layout.css.json +80 -1
  18. data/app/components/primer/alpha/menu.css.json +28 -1
  19. data/app/components/primer/alpha/multi_input.rb +81 -0
  20. data/app/components/primer/alpha/radio_button.rb +25 -0
  21. data/app/components/primer/alpha/radio_button_group.rb +36 -0
  22. data/app/components/primer/alpha/segmented_control/item.rb +1 -0
  23. data/app/components/primer/alpha/segmented_control.css +1 -1
  24. data/app/components/primer/alpha/segmented_control.css.json +31 -1
  25. data/app/components/primer/alpha/segmented_control.css.map +1 -1
  26. data/app/components/primer/alpha/segmented_control.pcss +43 -12
  27. data/app/components/primer/alpha/segmented_control.rb +30 -0
  28. data/app/components/primer/alpha/select.rb +37 -0
  29. data/app/components/primer/alpha/submit_button.rb +32 -0
  30. data/app/components/primer/alpha/tab_nav.css.json +24 -1
  31. data/app/components/primer/alpha/tab_panels.rb +7 -0
  32. data/app/components/primer/alpha/text_area.rb +24 -0
  33. data/app/components/primer/alpha/text_field.css +2 -2
  34. data/app/components/primer/alpha/text_field.css.json +134 -1
  35. data/app/components/primer/alpha/text_field.css.map +1 -1
  36. data/app/components/primer/alpha/text_field.pcss +27 -0
  37. data/app/components/primer/alpha/text_field.rb +16 -20
  38. data/app/components/primer/alpha/toggle_switch.css +1 -1
  39. data/app/components/primer/alpha/toggle_switch.css.json +40 -1
  40. data/app/components/primer/alpha/toggle_switch.css.map +1 -1
  41. data/app/components/primer/alpha/toggle_switch.pcss +31 -61
  42. data/app/components/primer/alpha/underline_nav.css.json +28 -1
  43. data/app/components/primer/base_component.rb +3 -3
  44. data/app/components/primer/beta/avatar.css.json +17 -1
  45. data/app/components/primer/beta/avatar_stack.css.json +28 -1
  46. data/app/components/primer/beta/blankslate.css.json +22 -1
  47. data/app/components/primer/beta/border_box.css.json +54 -1
  48. data/app/components/primer/beta/breadcrumbs.css.json +11 -1
  49. data/app/components/primer/beta/button.css.json +71 -1
  50. data/app/components/primer/beta/close_button.rb +1 -1
  51. data/app/components/primer/beta/counter.css.json +10 -1
  52. data/app/components/primer/beta/flash.css.json +27 -1
  53. data/app/components/primer/beta/label.css.json +25 -1
  54. data/app/components/primer/beta/link.css.json +19 -1
  55. data/app/components/primer/beta/popover.css.json +39 -1
  56. data/app/components/primer/beta/progress_bar.css.json +10 -1
  57. data/app/components/primer/{local_time.d.ts → beta/relative_time.d.ts} +0 -0
  58. data/app/components/primer/{local_time.js → beta/relative_time.js} +0 -0
  59. data/app/components/primer/{local_time.ts → beta/relative_time.ts} +0 -0
  60. data/app/components/primer/beta/state.css.json +13 -1
  61. data/app/components/primer/beta/subhead.css.json +12 -1
  62. data/app/components/primer/beta/timeline_item.css.json +16 -1
  63. data/app/components/primer/beta/truncate.css.json +12 -1
  64. data/app/components/primer/component.rb +12 -3
  65. data/app/components/primer/primer.d.ts +1 -2
  66. data/app/components/primer/primer.js +1 -2
  67. data/app/components/primer/primer.ts +1 -2
  68. data/app/components/primer/truncate.css.json +13 -1
  69. data/app/forms/example_toggle_switch_form.rb +1 -1
  70. data/app/forms/{select_list_form.rb → select_form.rb} +1 -1
  71. data/app/lib/primer/css/layout.css.json +316 -1
  72. data/app/lib/primer/css/utilities.css.json +1659 -1
  73. data/app/lib/primer/view_helper.rb +0 -1
  74. data/lib/primer/deprecations.yml +0 -78
  75. data/lib/primer/form_components.rb +26 -6
  76. data/lib/primer/forms/acts_as_component.rb +12 -1
  77. data/lib/primer/forms/builder.rb +1 -17
  78. data/lib/primer/forms/button.rb +4 -1
  79. data/lib/primer/forms/check_box_group.html.erb +14 -9
  80. data/lib/primer/forms/check_box_group.rb +5 -0
  81. data/lib/primer/forms/dsl/check_box_group_input.rb +3 -4
  82. data/lib/primer/forms/dsl/input.rb +33 -2
  83. data/lib/primer/forms/dsl/input_methods.rb +49 -1
  84. data/lib/primer/forms/dsl/radio_button_group_input.rb +2 -3
  85. data/lib/primer/forms/dsl/{select_list_input.rb → select_input.rb} +2 -2
  86. data/lib/primer/forms/dsl/text_field_input.rb +7 -5
  87. data/lib/primer/forms/form_control.rb +0 -1
  88. data/lib/primer/forms/group.html.erb +1 -1
  89. data/lib/primer/forms/multi.html.erb +8 -6
  90. data/lib/primer/forms/multi.rb +2 -0
  91. data/lib/primer/forms/radio_button_group.html.erb +14 -9
  92. data/lib/primer/forms/radio_button_group.rb +5 -0
  93. data/lib/primer/forms/{select_list.html.erb → select.html.erb} +0 -0
  94. data/lib/primer/forms/{select_list.rb → select.rb} +2 -2
  95. data/lib/primer/forms/spacing_wrapper.html.erb +1 -1
  96. data/lib/primer/forms/text_area.rb +1 -1
  97. data/lib/primer/forms/text_field.rb +5 -1
  98. data/lib/primer/forms/toggle_switch_form.rb +10 -3
  99. data/lib/primer/forms/utils.rb +20 -0
  100. data/lib/primer/view_components/engine.rb +1 -1
  101. data/lib/primer/view_components/version.rb +1 -1
  102. data/lib/primer/yard/backend.rb +1 -15
  103. data/lib/primer/yard/component_manifest.rb +44 -27
  104. data/lib/primer/yard/component_ref.rb +40 -0
  105. data/lib/primer/yard/docs_helper.rb +16 -2
  106. data/lib/primer/yard/legacy_gatsby_backend.rb +9 -15
  107. data/lib/primer/yard/lookbook_docs_helper.rb +32 -0
  108. data/lib/primer/yard/lookbook_pages_backend.rb +194 -0
  109. data/lib/primer/yard/registry.rb +6 -21
  110. data/lib/primer/yard/renders_many_handler.rb +1 -1
  111. data/lib/primer/yard/renders_one_handler.rb +1 -1
  112. data/lib/primer/yard.rb +14 -0
  113. data/lib/tasks/docs.rake +26 -13
  114. data/lib/tasks/static.rake +22 -0
  115. data/previews/pages/forms/01_introduction.md.erb +44 -0
  116. data/previews/pages/forms/02_getting_started.md.erb +125 -0
  117. data/previews/pages/forms/03_caption_templates.md.erb +30 -0
  118. data/previews/pages/forms/04_after_content.md.erb +39 -0
  119. data/previews/pages/forms/05_groups_layouts.md.erb +22 -0
  120. data/previews/pages/forms/06_miscellaneous_inputs.md.erb +43 -0
  121. data/previews/pages/forms/07_toggle_switch_forms.md.erb +58 -0
  122. data/previews/pages/forms/08_validations.md.erb +28 -0
  123. data/previews/pages/forms/09_compound_forms.md.erb +97 -0
  124. data/previews/primer/alpha/auto_complete_preview.rb +6 -6
  125. data/previews/primer/alpha/check_box_group_preview.rb +89 -0
  126. data/previews/primer/alpha/check_box_preview.rb +62 -0
  127. data/previews/primer/alpha/form_control_preview/playground.html.erb +9 -0
  128. data/previews/primer/alpha/form_control_preview.rb +106 -0
  129. data/previews/primer/alpha/multi_input_preview/playground.html.erb +41 -0
  130. data/previews/primer/alpha/multi_input_preview.rb +80 -0
  131. data/previews/primer/alpha/radio_button_group_preview.rb +83 -0
  132. data/previews/primer/alpha/radio_button_preview.rb +62 -0
  133. data/previews/primer/alpha/segmented_control_preview/with_label_and_caption.html.erb +9 -0
  134. data/previews/primer/alpha/segmented_control_preview/with_subhead_actions.html.erb +11 -0
  135. data/previews/primer/alpha/segmented_control_preview.rb +7 -1
  136. data/previews/primer/alpha/select_preview.rb +130 -0
  137. data/previews/primer/alpha/text_area_preview.rb +87 -0
  138. data/previews/primer/alpha/text_field_preview.rb +24 -1
  139. data/previews/primer/alpha/toggle_switch_preview.rb +9 -9
  140. data/previews/primer/beta/auto_complete_preview.rb +17 -17
  141. data/previews/primer/forms/forms_preview/example_toggle_switch_form.html.erb +2 -2
  142. data/previews/primer/forms/forms_preview/{select_list_form.html.erb → select_form.html.erb} +1 -1
  143. data/previews/primer/forms/forms_preview.rb +3 -1
  144. data/previews/primer/url_helpers.rb +1 -1
  145. data/static/arguments.json +1348 -1412
  146. data/static/audited_at.json +12 -21
  147. data/static/constants.json +20 -51
  148. data/static/previews.json +1812 -0
  149. data/static/statuses.json +10 -19
  150. metadata +47 -32
  151. data/app/components/primer/dropdown/menu.rb +0 -14
  152. data/app/components/primer/dropdown.rb +0 -7
  153. data/app/components/primer/hellip_button.rb +0 -7
  154. data/app/components/primer/label_component.rb +0 -7
  155. data/app/components/primer/link_component.rb +0 -7
  156. data/app/components/primer/local_time.rb +0 -63
  157. data/app/components/primer/markdown.rb +0 -7
  158. data/app/components/primer/menu_component.rb +0 -7
  159. data/app/components/primer/octicon_component.rb +0 -7
  160. data/app/components/primer/octicon_symbols_component.rb +0 -7
  161. data/app/components/primer/popover_component.rb +0 -8
  162. data/app/components/primer/spinner_component.rb +0 -7
  163. data/app/components/primer/state_component.rb +0 -7
  164. data/app/components/primer/subhead_component.rb +0 -7
  165. data/app/components/primer/tab_container_component.rb +0 -7
  166. data/app/components/primer/time_ago_component.d.ts +0 -1
  167. data/app/components/primer/time_ago_component.js +0 -1
  168. data/app/components/primer/time_ago_component.rb +0 -51
  169. data/app/components/primer/time_ago_component.ts +0 -1
  170. data/app/components/primer/timeline_item_component.rb +0 -13
  171. data/previews/primer/local_time_component_preview.rb +0 -57
  172. data/previews/primer/time_ago_component_preview.rb +0 -27
@@ -19,7 +19,7 @@ module Primer
19
19
  label_text: label_text,
20
20
  input_id: "input-id",
21
21
  list_id: "test-id",
22
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
22
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
23
23
  is_label_visible: is_label_visible,
24
24
  is_label_inline: is_label_inline,
25
25
  with_icon: with_icon,
@@ -42,7 +42,7 @@ module Primer
42
42
  label_text: label_text,
43
43
  input_id: "input-id",
44
44
  list_id: "test-id",
45
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
45
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
46
46
  is_label_visible: is_label_visible,
47
47
  is_label_inline: is_label_inline,
48
48
  with_icon: with_icon,
@@ -62,7 +62,7 @@ module Primer
62
62
  label_text: "Select a fruit",
63
63
  input_id: "input-id-1",
64
64
  list_id: "test-id-1",
65
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
65
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
66
66
  is_label_visible: false
67
67
  )
68
68
  )
@@ -77,7 +77,7 @@ module Primer
77
77
  label_text: "Select a fruit",
78
78
  input_id: "input-id-2",
79
79
  list_id: "test-id-2",
80
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
80
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
81
81
  is_label_inline: true
82
82
  )
83
83
  )
@@ -92,7 +92,7 @@ module Primer
92
92
  label_text: "Select a fruit",
93
93
  input_id: "input-id-3",
94
94
  list_id: "test-id-3",
95
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
95
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
96
96
  with_icon: true
97
97
  )
98
98
  )
@@ -107,7 +107,7 @@ module Primer
107
107
  label_text: "Select a fruit",
108
108
  input_id: "input-id-4",
109
109
  list_id: "test-id-4",
110
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
110
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
111
111
  is_clearable: true
112
112
  )
113
113
  )
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Alpha
5
+ # @label CheckBoxGroup
6
+ class CheckBoxGroupPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param name text
10
+ # @param label text
11
+ # @param caption text
12
+ # @param disabled toggle
13
+ def playground(
14
+ name: "my-check-group",
15
+ label: "I would go into battle with:",
16
+ caption: "Qa'pla!",
17
+ disabled: false
18
+ )
19
+ system_arguments = {
20
+ name: name,
21
+ label: label,
22
+ caption: caption,
23
+ disabled: disabled
24
+ }
25
+
26
+ render(Primer::Alpha::CheckBoxGroup.new(**system_arguments)) do |component|
27
+ component.check_box(label: "Jean-Luc Picard", value: "picard")
28
+ component.check_box(label: "Hikaru Sulu", value: "sulu")
29
+ component.check_box(label: "Kathryn Janeway", value: "janeway")
30
+ component.check_box(label: "Benjamin Sisko", value: "sisko")
31
+ end
32
+ end
33
+
34
+ # @label Default
35
+ def default
36
+ render(Primer::Alpha::CheckBoxGroup.new(name: "my-check-group", label: "I would go into battle with:")) do |component|
37
+ component.check_box(label: "Jean-Luc Picard", value: "picard")
38
+ component.check_box(label: "Hikaru Sulu", value: "sulu")
39
+ component.check_box(label: "Kathryn Janeway", value: "janeway")
40
+ component.check_box(label: "Benjamin Sisko", value: "sisko")
41
+ end
42
+ end
43
+
44
+ # @!group Options
45
+ #
46
+ # @label With caption
47
+ def with_caption
48
+ render(Primer::Alpha::CheckBoxGroup.new(caption: "With a caption", name: "my-check-group", label: "I would go into battle with:")) do |component|
49
+ component.check_box(label: "Jean-Luc Picard", value: "picard1")
50
+ component.check_box(label: "Hikaru Sulu", value: "sulu1")
51
+ component.check_box(label: "Kathryn Janeway", value: "janeway1")
52
+ component.check_box(label: "Benjamin Sisko", value: "sisko1")
53
+ end
54
+ end
55
+
56
+ # @label Visually hidden label
57
+ def visually_hide_label
58
+ render(Primer::Alpha::CheckBoxGroup.new(visually_hide_label: true, name: "my-check-group", label: "I would go into battle with:")) do |component|
59
+ component.check_box(label: "Jean-Luc Picard", value: "picard2")
60
+ component.check_box(label: "Hikaru Sulu", value: "sulu2")
61
+ component.check_box(label: "Kathryn Janeway", value: "janeway2")
62
+ component.check_box(label: "Benjamin Sisko", value: "sisko2")
63
+ end
64
+ end
65
+
66
+ # @label Full width
67
+ def full_width
68
+ render(Primer::Alpha::CheckBoxGroup.new(full_width: true, name: "my-check-group", label: "I would go into battle with:")) do |component|
69
+ component.check_box(label: "Jean-Luc Picard", value: "picard3")
70
+ component.check_box(label: "Hikaru Sulu", value: "sulu3")
71
+ component.check_box(label: "Kathryn Janeway", value: "janeway3")
72
+ component.check_box(label: "Benjamin Sisko", value: "sisko3")
73
+ end
74
+ end
75
+
76
+ # @label Disabled
77
+ def disabled
78
+ render(Primer::Alpha::CheckBoxGroup.new(disabled: true, name: "my-check-group", label: "I would go into battle with:")) do |component|
79
+ component.check_box(label: "Jean-Luc Picard", value: "picard4")
80
+ component.check_box(label: "Hikaru Sulu", value: "sulu4")
81
+ component.check_box(label: "Kathryn Janeway", value: "janeway4")
82
+ component.check_box(label: "Benjamin Sisko", value: "sisko4")
83
+ end
84
+ end
85
+ #
86
+ # @!endgroup
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Alpha
5
+ # @label CheckBox
6
+ class CheckBoxPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param name text
10
+ # @param id text
11
+ # @param value text
12
+ # @param label text
13
+ # @param caption text
14
+ # @param visually_hide_label toggle
15
+ # @param disabled toggle
16
+ def playground(
17
+ name: "my-check-box",
18
+ id: nil,
19
+ value: "picard",
20
+ label: "Jean-Luc Picard",
21
+ caption: "Make it so",
22
+ visually_hide_label: false,
23
+ disabled: false
24
+ )
25
+ system_arguments = {
26
+ name: name,
27
+ value: value,
28
+ label: label,
29
+ caption: caption,
30
+ visually_hide_label: visually_hide_label,
31
+ disabled: disabled
32
+ }
33
+
34
+ render(Primer::Alpha::CheckBox.new(**system_arguments))
35
+ end
36
+
37
+ # @label Default
38
+ def default
39
+ render(Primer::Alpha::CheckBox.new(name: "my-check-box", label: "Jean-Luc Picard"))
40
+ end
41
+
42
+ # @!group Options
43
+ #
44
+ # @label With caption
45
+ def with_caption
46
+ render(Primer::Alpha::CheckBox.new(caption: "With a caption", name: "my-check-box1", label: "Jean-Luc Picard"))
47
+ end
48
+
49
+ # @label Visually hidden label
50
+ def visually_hide_label
51
+ render(Primer::Alpha::CheckBox.new(visually_hide_label: true, name: "my-check-box2", label: "Jean-Luc Picard"))
52
+ end
53
+
54
+ # @label Disabled
55
+ def disabled
56
+ render(Primer::Alpha::CheckBox.new(disabled: true, name: "my-check-box4", label: "Jean-Luc Picard"))
57
+ end
58
+ #
59
+ # @!endgroup
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,9 @@
1
+ <%= render(Primer::Alpha::FormControl.new(**system_arguments)) do |component| %>
2
+ <% component.with_input do |input_arguments| %>
3
+ <%= render(Primer::Alpha::SegmentedControl.new("aria-label": "Best character", **input_arguments)) do |seg| %>
4
+ <% seg.with_item(label: "Han Solo", selected: true) %>
5
+ <% seg.with_item(label: "Luke Skywalker") %>
6
+ <% seg.with_item(label: "Leia Organa") %>
7
+ <% end %>
8
+ <% end %>
9
+ <% end %>
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Alpha
5
+ # @label FormControl
6
+ class FormControlPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param label text
10
+ # @param caption text
11
+ # @param validation_message text
12
+ # @param required toggle
13
+ # @param visually_hide_label toggle
14
+ # @param full_width toggle
15
+ def playground(
16
+ label: "Best character",
17
+ caption: "May the force be with you",
18
+ validation_message: "Something went wrong",
19
+ required: false,
20
+ visually_hide_label: false,
21
+ full_width: false
22
+ )
23
+ render_with_template(
24
+ locals: {
25
+ system_arguments: {
26
+ label: label,
27
+ caption: caption,
28
+ validation_message: validation_message,
29
+ required: required,
30
+ visually_hide_label: visually_hide_label,
31
+ full_width: full_width
32
+ }
33
+ }
34
+ )
35
+ end
36
+
37
+ # @label Default
38
+ def default
39
+ render_with_template(
40
+ template: "primer/alpha/form_control_preview/playground",
41
+ locals: {
42
+ system_arguments: {
43
+ label: "Best character"
44
+ }
45
+ }
46
+ )
47
+ end
48
+
49
+ # @!group Options
50
+ #
51
+ # @label With caption
52
+ def with_caption
53
+ render_with_template(
54
+ template: "primer/alpha/form_control_preview/playground",
55
+ locals: {
56
+ system_arguments: {
57
+ label: "Best character",
58
+ caption: "May the force be with you"
59
+ }
60
+ }
61
+ )
62
+ end
63
+
64
+ # @label With validation message
65
+ def with_validation_message
66
+ render_with_template(
67
+ template: "primer/alpha/form_control_preview/playground",
68
+ locals: {
69
+ system_arguments: {
70
+ label: "Best character",
71
+ validation_message: "Something went wrong"
72
+ }
73
+ }
74
+ )
75
+ end
76
+
77
+ # @label Required
78
+ def required
79
+ render_with_template(
80
+ template: "primer/alpha/form_control_preview/playground",
81
+ locals: {
82
+ system_arguments: {
83
+ label: "Best character",
84
+ required: true
85
+ }
86
+ }
87
+ )
88
+ end
89
+
90
+ # @label With visually hidden label
91
+ def with_visually_hidden_label
92
+ render_with_template(
93
+ template: "primer/alpha/form_control_preview/playground",
94
+ locals: {
95
+ system_arguments: {
96
+ label: "Best character",
97
+ visually_hide_label: true
98
+ }
99
+ }
100
+ )
101
+ end
102
+ #
103
+ # @!endgroup
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,41 @@
1
+ <em>
2
+ <p class="color-fg-accent">This select list controls which field is visible.</p>
3
+ </em>
4
+
5
+ <%= render(Primer::Alpha::Select.new(name: :dietary_pref, label: "Dietary preference")) do |c| %>
6
+ <% c.option(label: "Meatatarian", value: "meatatarian") %>
7
+ <% c.option(label: "Vegetarian", value: "vegetarian") %>
8
+ <% end %>
9
+
10
+ <hr>
11
+
12
+ <em>
13
+ <p class="color-fg-accent">This is the multi input.</p>
14
+ </em>
15
+
16
+ <%= render(Primer::Alpha::MultiInput.new(name: :dish, **system_arguments)) do |c| %>
17
+ <% c.select_list(name: :meatatarian) do |list| %>
18
+ <% list.option(label: "Steak", value: "steak") %>
19
+ <% list.option(label: "Salmon", value: "salmon") %>
20
+ <% end %>
21
+ <% c.select_list(name: :vegetarian, hidden: true) do |list| %>
22
+ <% list.option(label: "Portobello mushroom", value: "portobello") %>
23
+ <% list.option(label: "Tofu curry", value: "tofu") %>
24
+ <% end %>
25
+ <% end %>
26
+
27
+ <script type="text/javascript" data-eval="true">
28
+ const dietaryPrefList = document.querySelector("[name=dietary_pref]");
29
+ const dishMulti = document.querySelector("[data-name=dish]");
30
+
31
+ dietaryPrefList.onchange = (evt) => {
32
+ switch (evt.target.value) {
33
+ case 'meatatarian':
34
+ dishMulti.activateField('meatatarian');
35
+ break;
36
+ case 'vegetarian':
37
+ dishMulti.activateField('vegetarian');
38
+ break;
39
+ }
40
+ };
41
+ </script>
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Alpha
5
+ # @label MultiInput
6
+ class MultiInputPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param label text
10
+ # @param caption text
11
+ # @param disabled toggle
12
+ def playground(
13
+ label: "Dietary preference",
14
+ caption: "What'll ya have?",
15
+ disabled: false
16
+ )
17
+ render_with_template(
18
+ locals: {
19
+ system_arguments: {
20
+ label: label,
21
+ caption: caption,
22
+ disabled: disabled
23
+ }
24
+ }
25
+ )
26
+ end
27
+
28
+ # @label Default
29
+ def default
30
+ render_with_template(
31
+ template: "primer/alpha/multi_input_preview/playground",
32
+ locals: {
33
+ system_arguments: {
34
+ label: "Dietary preference"
35
+ }
36
+ }
37
+ )
38
+ end
39
+
40
+ # @label With caption
41
+ def with_caption
42
+ render_with_template(
43
+ template: "primer/alpha/multi_input_preview/playground",
44
+ locals: {
45
+ system_arguments: {
46
+ label: "Dietary preference",
47
+ caption: "What'll ya have?"
48
+ }
49
+ }
50
+ )
51
+ end
52
+
53
+ # @label Visually hidden label
54
+ def visually_hide_label
55
+ render_with_template(
56
+ template: "primer/alpha/multi_input_preview/playground",
57
+ locals: {
58
+ system_arguments: {
59
+ label: "Dietary preference",
60
+ visually_hide_label: true
61
+ }
62
+ }
63
+ )
64
+ end
65
+
66
+ # @label Disabled
67
+ def disabled
68
+ render_with_template(
69
+ template: "primer/alpha/multi_input_preview/playground",
70
+ locals: {
71
+ system_arguments: {
72
+ label: "Dietary preference",
73
+ disabled: true
74
+ }
75
+ }
76
+ )
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Alpha
5
+ # @label RadioButtonGroup
6
+ class RadioButtonGroupPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param name text
10
+ # @param label text
11
+ # @param caption text
12
+ # @param disabled toggle
13
+ def playground(
14
+ name: "my-radio-group",
15
+ label: "Question: what kind of bear is best?",
16
+ caption: "There are basically two schools of thought",
17
+ disabled: false
18
+ )
19
+ system_arguments = {
20
+ name: name,
21
+ label: label,
22
+ caption: caption,
23
+ disabled: disabled
24
+ }
25
+
26
+ render(Primer::Alpha::RadioButtonGroup.new(**system_arguments)) do |component|
27
+ component.radio_button(label: "Bears", value: "bears")
28
+ component.radio_button(label: "Beets", value: "beets")
29
+ component.radio_button(label: "Battlestar Galactica", value: "bsg")
30
+ end
31
+ end
32
+
33
+ # @label Default
34
+ def default
35
+ render(Primer::Alpha::RadioButtonGroup.new(name: "my-radio-group", label: "Question: what kind of bear is best?")) do |component|
36
+ component.radio_button(label: "Bears", value: "bears")
37
+ component.radio_button(label: "Beets", value: "beets")
38
+ component.radio_button(label: "Battlestar Galactica", value: "bsg")
39
+ end
40
+ end
41
+
42
+ # @!group Options
43
+ #
44
+ # @label With caption
45
+ def with_caption
46
+ render(Primer::Alpha::RadioButtonGroup.new(caption: "With a caption", name: "my-radio-group", label: "Question: what kind of bear is best?")) do |component|
47
+ component.radio_button(label: "Bears", value: "bears1")
48
+ component.radio_button(label: "Beets", value: "beets1")
49
+ component.radio_button(label: "Battlestar Galactica", value: "bsg1")
50
+ end
51
+ end
52
+
53
+ # @label Visually hidden label
54
+ def visually_hide_label
55
+ render(Primer::Alpha::RadioButtonGroup.new(visually_hide_label: true, name: "my-radio-group", label: "Question: what kind of bear is best?")) do |component|
56
+ component.radio_button(label: "Bears", value: "bears2")
57
+ component.radio_button(label: "Beets", value: "beets2")
58
+ component.radio_button(label: "Battlestar Galactica", value: "bsg2")
59
+ end
60
+ end
61
+
62
+ # @label Full width
63
+ def full_width
64
+ render(Primer::Alpha::RadioButtonGroup.new(full_width: true, name: "my-radio-group", label: "Question: what kind of bear is best?")) do |component|
65
+ component.radio_button(label: "Bears", value: "bears3")
66
+ component.radio_button(label: "Beets", value: "beets3")
67
+ component.radio_button(label: "Battlestar Galactica", value: "bsg3")
68
+ end
69
+ end
70
+
71
+ # @label Disabled
72
+ def disabled
73
+ render(Primer::Alpha::RadioButtonGroup.new(disabled: true, name: "my-radio-group", label: "Question: what kind of bear is best?")) do |component|
74
+ component.radio_button(label: "Bears", value: "bears4")
75
+ component.radio_button(label: "Beets", value: "beets4")
76
+ component.radio_button(label: "Battlestar Galactica", value: "bsg4")
77
+ end
78
+ end
79
+ #
80
+ # @!endgroup
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Alpha
5
+ # @label RadioButton
6
+ class RadioButtonPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param name text
10
+ # @param id text
11
+ # @param value text
12
+ # @param label text
13
+ # @param caption text
14
+ # @param visually_hide_label toggle
15
+ # @param disabled toggle
16
+ def playground(
17
+ name: "my-radio-button",
18
+ id: nil,
19
+ value: "bsg",
20
+ label: "Battlestar Galactica",
21
+ caption: "A pretty good show",
22
+ visually_hide_label: false,
23
+ disabled: false
24
+ )
25
+ system_arguments = {
26
+ name: name,
27
+ value: value,
28
+ label: label,
29
+ caption: caption,
30
+ visually_hide_label: visually_hide_label,
31
+ disabled: disabled
32
+ }
33
+
34
+ render(Primer::Alpha::RadioButton.new(**system_arguments))
35
+ end
36
+
37
+ # @label Default
38
+ def default
39
+ render(Primer::Alpha::RadioButton.new(name: "my-radio-button", label: "Battlestar Galactica", value: "bsg"))
40
+ end
41
+
42
+ # @!group Options
43
+ #
44
+ # @label With caption
45
+ def with_caption
46
+ render(Primer::Alpha::RadioButton.new(caption: "With a caption", name: "my-radio-button", label: "Battlestar Galactica", value: "bsg1"))
47
+ end
48
+
49
+ # @label Visually hidden label
50
+ def visually_hide_label
51
+ render(Primer::Alpha::RadioButton.new(visually_hide_label: true, name: "my-radio-button", label: "Battlestar Galactica", value: "bsg2"))
52
+ end
53
+
54
+ # @label Disabled
55
+ def disabled
56
+ render(Primer::Alpha::RadioButton.new(disabled: true, name: "my-radio-button", label: "Battlestar Galactica", value: "bsg4"))
57
+ end
58
+ #
59
+ # @!endgroup
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,9 @@
1
+ <%= render(Primer::Box.new(display: :flex, direction: :column)) do %>
2
+ <%= render(Primer::BaseComponent.new(tag: "span", id: "scLabel-horiz")) { "File view" } %>
3
+ <%= render(Primer::Alpha::SegmentedControl.new("aria-labelledby": "scLabel-horiz", "aria-describedby": "scCaption-horiz")) do |component| %>
4
+ <% component.with_item(label: "Preview", selected: true) %>
5
+ <% component.with_item(label: "Raw") %>
6
+ <% component.with_item(label: "Blame") %>
7
+ <% end %>
8
+ <%= render(Primer::Beta::Text.new(font_size: :small, mt: 1, color: :muted, id: "scCaption-horiz")) { "Change the way the file is viewed" } %>
9
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <%= render(Primer::Beta::Subhead.new) do |component| %>
2
+ <% component.with_heading(id: "scLabel-vert") { "File view" } %>
3
+ <% component.with_description(id: "scCaption-vert") { "Change the way the file is viewed" } %>
4
+ <% component.with_actions do %>
5
+ <%= render(Primer::Alpha::SegmentedControl.new("aria-labelledby": "scLabel-vert", "aria-describedby": "scCaption-vert")) do |component| %>
6
+ <% component.with_item(label: "Preview", selected: true) %>
7
+ <% component.with_item(label: "Raw") %>
8
+ <% component.with_item(label: "Blame") %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
@@ -152,13 +152,19 @@ module Primer
152
152
  # NOTE: this preview uses a group to force it's display below the other groups
153
153
  # @!group With link as tag
154
154
  def with_link_as_tag
155
- render(Primer::Alpha::SegmentedControl.new) do |component|
155
+ render(Primer::Alpha::SegmentedControl.new("aria-label": "File view")) do |component|
156
156
  component.with_item(tag: :a, href: "#", label: "Preview", icon: :eye, selected: true)
157
157
  component.with_item(tag: :a, href: "#", label: "Raw", icon: :"file-code")
158
158
  component.with_item(tag: :a, href: "#", label: "Blame", icon: :people)
159
159
  end
160
160
  end
161
161
  # @!endgroup
162
+
163
+ # @!group With aria labeled headings
164
+ def with_subhead_actions; end
165
+
166
+ def with_label_and_caption; end
167
+ # @!endgroup
162
168
  end
163
169
  end
164
170
  end