primer_view_components 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -0
  3. data/README.md +1 -1
  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 -3
  7. data/app/assets/styles/primer_view_components.css.map +1 -1
  8. data/app/components/primer/alpha/action_list/item.rb +3 -5
  9. data/app/components/primer/alpha/action_list.css +1 -1
  10. data/app/components/primer/alpha/action_list.css.json +16 -16
  11. data/app/components/primer/alpha/action_list.css.map +1 -1
  12. data/app/components/primer/alpha/action_list.pcss +145 -145
  13. data/app/components/primer/alpha/action_list.rb +30 -15
  14. data/app/components/primer/alpha/action_menu/action_menu_element.d.ts +2 -1
  15. data/app/components/primer/alpha/action_menu/action_menu_element.js +44 -34
  16. data/app/components/primer/alpha/action_menu/action_menu_element.ts +32 -30
  17. data/app/components/primer/alpha/action_menu/list.rb +6 -1
  18. data/app/components/primer/alpha/action_menu.rb +1 -1
  19. data/app/components/primer/alpha/auto_complete.css +1 -1
  20. data/app/components/primer/alpha/auto_complete.css.map +1 -1
  21. data/app/components/primer/alpha/auto_complete.pcss +3 -3
  22. data/app/components/primer/alpha/banner.css +1 -1
  23. data/app/components/primer/alpha/banner.css.map +1 -1
  24. data/app/components/primer/alpha/banner.pcss +11 -11
  25. data/app/components/primer/alpha/button_marketing.css.map +1 -1
  26. data/app/components/primer/alpha/button_marketing.pcss +5 -12
  27. data/app/components/primer/alpha/button_marketing.rb +3 -0
  28. data/app/components/primer/alpha/dialog.css +1 -1
  29. data/app/components/primer/alpha/dialog.css.map +1 -1
  30. data/app/components/primer/alpha/dialog.pcss +36 -36
  31. data/app/components/primer/alpha/dropdown.css +1 -1
  32. data/app/components/primer/alpha/dropdown.css.map +1 -1
  33. data/app/components/primer/alpha/dropdown.pcss +12 -12
  34. data/app/components/primer/alpha/form_control.html.erb +1 -1
  35. data/app/components/primer/alpha/hellip_button.rb +3 -1
  36. data/app/components/primer/alpha/layout.css +1 -1
  37. data/app/components/primer/alpha/layout.css.map +1 -1
  38. data/app/components/primer/alpha/layout.pcss +4 -4
  39. data/app/components/primer/alpha/menu.css +1 -1
  40. data/app/components/primer/alpha/menu.css.map +1 -1
  41. data/app/components/primer/alpha/menu.pcss +21 -21
  42. data/app/components/primer/alpha/modal_dialog.js +17 -4
  43. data/app/components/primer/alpha/modal_dialog.ts +17 -4
  44. data/app/components/primer/alpha/nav_list/item.rb +2 -0
  45. data/app/components/primer/alpha/nav_list.js +6 -0
  46. data/app/components/primer/alpha/nav_list.rb +55 -36
  47. data/app/components/primer/alpha/nav_list.ts +8 -0
  48. data/app/components/primer/alpha/octicon_symbols.html.erb +1 -1
  49. data/app/components/primer/alpha/overlay/header.html.erb +5 -3
  50. data/app/components/primer/alpha/overlay/header.rb +4 -1
  51. data/app/components/primer/alpha/overlay.css +1 -1
  52. data/app/components/primer/alpha/overlay.css.json +1 -2
  53. data/app/components/primer/alpha/overlay.css.map +1 -1
  54. data/app/components/primer/alpha/overlay.pcss +14 -4
  55. data/app/components/primer/alpha/overlay.rb +1 -0
  56. data/app/components/primer/alpha/segmented_control.css +1 -1
  57. data/app/components/primer/alpha/segmented_control.css.map +1 -1
  58. data/app/components/primer/alpha/segmented_control.pcss +24 -33
  59. data/app/components/primer/alpha/tab_nav.css +1 -1
  60. data/app/components/primer/alpha/tab_nav.css.map +1 -1
  61. data/app/components/primer/alpha/tab_nav.pcss +12 -12
  62. data/app/components/primer/alpha/text_field.css +1 -3
  63. data/app/components/primer/alpha/text_field.css.json +1 -0
  64. data/app/components/primer/alpha/text_field.css.map +1 -1
  65. data/app/components/primer/alpha/text_field.pcss +87 -83
  66. data/app/components/primer/alpha/toggle_switch.css +1 -1
  67. data/app/components/primer/alpha/toggle_switch.css.json +11 -11
  68. data/app/components/primer/alpha/toggle_switch.css.map +1 -1
  69. data/app/components/primer/alpha/toggle_switch.d.ts +1 -1
  70. data/app/components/primer/alpha/toggle_switch.html.erb +2 -2
  71. data/app/components/primer/alpha/toggle_switch.js +44 -42
  72. data/app/components/primer/alpha/toggle_switch.pcss +16 -16
  73. data/app/components/primer/alpha/toggle_switch.rb +7 -0
  74. data/app/components/primer/alpha/toggle_switch.ts +50 -41
  75. data/app/components/primer/alpha/underline_nav.css +1 -1
  76. data/app/components/primer/alpha/underline_nav.css.map +1 -1
  77. data/app/components/primer/alpha/underline_nav.pcss +11 -11
  78. data/app/components/primer/beta/auto_complete.rb +1 -1
  79. data/app/components/primer/beta/avatar.css +1 -1
  80. data/app/components/primer/beta/avatar.css.map +1 -1
  81. data/app/components/primer/beta/avatar.pcss +18 -18
  82. data/app/components/primer/beta/avatar_stack.css +1 -1
  83. data/app/components/primer/beta/avatar_stack.css.map +1 -1
  84. data/app/components/primer/beta/avatar_stack.pcss +5 -5
  85. data/app/components/primer/beta/base_button.rb +11 -0
  86. data/app/components/primer/beta/blankslate.css +1 -1
  87. data/app/components/primer/beta/blankslate.css.map +1 -1
  88. data/app/components/primer/beta/blankslate.pcss +16 -16
  89. data/app/components/primer/beta/border_box.css +1 -1
  90. data/app/components/primer/beta/border_box.css.json +1 -1
  91. data/app/components/primer/beta/border_box.css.map +1 -1
  92. data/app/components/primer/beta/border_box.pcss +40 -42
  93. data/app/components/primer/beta/button.css +1 -1
  94. data/app/components/primer/beta/button.css.json +4 -0
  95. data/app/components/primer/beta/button.css.map +1 -1
  96. data/app/components/primer/beta/button.pcss +39 -24
  97. data/app/components/primer/beta/button.rb +3 -0
  98. data/app/components/primer/beta/button_group.css +1 -0
  99. data/app/components/primer/beta/button_group.css.json +14 -0
  100. data/app/components/primer/beta/button_group.css.map +1 -0
  101. data/app/components/primer/beta/button_group.pcss +27 -0
  102. data/app/components/primer/beta/button_group.rb +19 -19
  103. data/app/components/primer/beta/close_button.rb +3 -1
  104. data/app/components/primer/beta/counter.css +1 -1
  105. data/app/components/primer/beta/counter.css.map +1 -1
  106. data/app/components/primer/beta/counter.pcss +5 -5
  107. data/app/components/primer/beta/details.html.erb +6 -2
  108. data/app/components/primer/beta/details.rb +18 -10
  109. data/app/components/primer/beta/flash.css +1 -1
  110. data/app/components/primer/beta/flash.css.map +1 -1
  111. data/app/components/primer/beta/flash.pcss +12 -12
  112. data/app/components/primer/beta/icon_button.rb +7 -3
  113. data/app/components/primer/beta/label.css +1 -1
  114. data/app/components/primer/beta/label.css.map +1 -1
  115. data/app/components/primer/beta/label.pcss +3 -3
  116. data/app/components/primer/beta/popover.css +1 -1
  117. data/app/components/primer/beta/popover.css.map +1 -1
  118. data/app/components/primer/beta/popover.pcss +4 -4
  119. data/app/components/primer/beta/state.css +1 -1
  120. data/app/components/primer/beta/state.css.map +1 -1
  121. data/app/components/primer/beta/state.pcss +7 -7
  122. data/app/components/primer/beta/subhead.css +1 -1
  123. data/app/components/primer/beta/subhead.css.map +1 -1
  124. data/app/components/primer/beta/subhead.pcss +9 -9
  125. data/app/components/primer/beta/timeline_item.css +1 -1
  126. data/app/components/primer/beta/timeline_item.css.map +1 -1
  127. data/app/components/primer/beta/timeline_item.pcss +18 -18
  128. data/app/components/primer/beta/truncate.css +1 -1
  129. data/app/components/primer/beta/truncate.css.map +1 -1
  130. data/app/components/primer/beta/truncate.pcss +1 -1
  131. data/app/components/primer/focus_group.js +8 -13
  132. data/app/components/primer/focus_group.ts +8 -12
  133. data/app/components/primer/primer.d.ts +1 -0
  134. data/app/components/primer/primer.js +1 -0
  135. data/app/components/primer/primer.pcss +1 -0
  136. data/app/components/primer/primer.ts +1 -0
  137. data/lib/postcss_mixins/activeIndicatorLine.pcss +4 -4
  138. data/lib/primer/accessibility.rb +74 -0
  139. data/lib/primer/forms/dsl/input.rb +4 -8
  140. data/lib/primer/forms/dsl/text_field_input.rb +0 -4
  141. data/lib/primer/forms/dsl/toggle_switch_input.rb +4 -0
  142. data/lib/primer/forms/form_control.html.erb +3 -5
  143. data/lib/primer/forms/primer_base_component_wrapper.html.erb +3 -0
  144. data/lib/primer/forms/primer_base_component_wrapper.rb +24 -0
  145. data/lib/primer/forms/toggle_switch.html.erb +3 -3
  146. data/lib/primer/forms/toggle_switch.rb +6 -2
  147. data/lib/primer/forms/toggle_switch_input.js +7 -2
  148. data/lib/primer/forms/toggle_switch_input.ts +9 -2
  149. data/lib/primer/static/generate_info_arch.rb +3 -0
  150. data/lib/primer/static/generate_previews.rb +15 -8
  151. data/lib/primer/view_components/linters/deprecated_components_counter.rb +37 -13
  152. data/lib/primer/view_components/version.rb +2 -2
  153. data/lib/primer/yard/component_manifest.rb +1 -1
  154. data/lib/primer/yard/lookbook_pages_backend.rb +8 -2
  155. data/lib/primer/yard/registry.rb +4 -0
  156. data/previews/pages/forms/03_caption_templates.md.erb +1 -1
  157. data/previews/pages/forms/04_after_content.md.erb +1 -1
  158. data/previews/pages/forms/06_miscellaneous_inputs.md.erb +1 -1
  159. data/previews/pages/forms/07_toggle_switch_forms.md.erb +1 -1
  160. data/previews/primer/alpha/action_menu_preview/two_menus.html.erb +13 -0
  161. data/previews/primer/alpha/action_menu_preview/with_actions.html.erb +21 -0
  162. data/previews/primer/alpha/action_menu_preview.rb +5 -13
  163. data/previews/primer/alpha/button_marketing_preview.rb +3 -2
  164. data/previews/primer/alpha/dialog_preview.rb +4 -3
  165. data/previews/primer/alpha/hellip_button_preview.rb +3 -2
  166. data/previews/primer/alpha/nav_list_preview.rb +1 -1
  167. data/previews/primer/alpha/overlay_preview/middle_of_page_with_relative_container.html.erb +19 -0
  168. data/previews/primer/alpha/overlay_preview.rb +31 -0
  169. data/previews/primer/beta/base_button_preview.rb +9 -2
  170. data/previews/primer/beta/button_group_preview/action_menus.html.erb +8 -0
  171. data/previews/primer/beta/button_group_preview.rb +49 -11
  172. data/previews/primer/beta/button_preview/trailing_counter.html.erb +1 -1
  173. data/previews/primer/beta/button_preview.rb +5 -2
  174. data/previews/primer/beta/close_button_preview.rb +3 -2
  175. data/previews/primer/beta/details_preview.rb +11 -8
  176. data/previews/primer/forms_preview.rb +44 -0
  177. data/static/arguments.json +11 -5
  178. data/static/classes.json +378 -372
  179. data/static/constants.json +0 -1
  180. data/static/info_arch.json +5457 -1364
  181. data/static/previews.json +5197 -1428
  182. metadata +40 -36
  183. data/lib/tasks/docs.rake +0 -185
  184. data/lib/tasks/helpers/ast_processor.rb +0 -44
  185. data/lib/tasks/helpers/ast_traverser.rb +0 -77
  186. data/lib/tasks/primer_view_components.rake +0 -47
  187. data/lib/tasks/static.rake +0 -29
  188. data/lib/tasks/test.rake +0 -83
  189. data/lib/tasks/utilities.rake +0 -109
  190. data/previews/primer/forms/forms_preview.rb +0 -48
  191. /data/previews/primer/{forms/forms_preview → forms_preview}/after_content_form.html.erb +0 -0
  192. /data/previews/primer/{forms/forms_preview → forms_preview}/array_check_box_group_form.html.erb +0 -0
  193. /data/previews/primer/{forms/forms_preview → forms_preview}/caption_template_form.html.erb +0 -0
  194. /data/previews/primer/{forms/forms_preview → forms_preview}/check_box_group_form.html.erb +0 -0
  195. /data/previews/primer/{forms/forms_preview → forms_preview}/check_box_with_nested_form.html.erb +0 -0
  196. /data/previews/primer/{forms/forms_preview → forms_preview}/composed_form.html.erb +0 -0
  197. /data/previews/primer/{forms/forms_preview → forms_preview}/example_toggle_switch_form.html.erb +0 -0
  198. /data/previews/primer/{forms/forms_preview → forms_preview}/horizontal_form.html.erb +0 -0
  199. /data/previews/primer/{forms/forms_preview → forms_preview}/immediate_validation_form.html.erb +0 -0
  200. /data/previews/primer/{forms/forms_preview → forms_preview}/invalid_form.html.erb +0 -0
  201. /data/previews/primer/{forms/forms_preview → forms_preview}/multi_input_form.html.erb +0 -0
  202. /data/previews/primer/{forms/forms_preview → forms_preview}/multi_text_field_form.html.erb +0 -0
  203. /data/previews/primer/{forms/forms_preview → forms_preview}/name_with_question_mark_form.html.erb +0 -0
  204. /data/previews/primer/{forms/forms_preview → forms_preview}/radio_button_group_form.html.erb +0 -0
  205. /data/previews/primer/{forms/forms_preview → forms_preview}/radio_button_with_nested_form.html.erb +0 -0
  206. /data/previews/primer/{forms/forms_preview → forms_preview}/select_form.html.erb +0 -0
  207. /data/previews/primer/{forms/forms_preview → forms_preview}/single_text_field_form.html.erb +0 -0
  208. /data/previews/primer/{forms/forms_preview → forms_preview}/submit_button_form.html.erb +0 -0
  209. /data/previews/primer/{forms/forms_preview → forms_preview}/text_field_and_checkbox_form.html.erb +0 -0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primer_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Open Source
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-03 00:00:00.000000000 Z
11
+ date: 2023-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -56,9 +56,9 @@ dependencies:
56
56
  name: view_component
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '2.0'
61
+ version: '3.1'
62
62
  - - "<"
63
63
  - !ruby/object:Gem::Version
64
64
  version: '4.0'
@@ -66,9 +66,9 @@ dependencies:
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - ">"
69
+ - - ">="
70
70
  - !ruby/object:Gem::Version
71
- version: '2.0'
71
+ version: '3.1'
72
72
  - - "<"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '4.0'
@@ -162,14 +162,14 @@ dependencies:
162
162
  requirements:
163
163
  - - '='
164
164
  - !ruby/object:Gem::Version
165
- version: 0.1.0
165
+ version: 0.4.0
166
166
  type: :development
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - '='
171
171
  - !ruby/object:Gem::Version
172
- version: 0.1.0
172
+ version: 0.4.0
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: listen
175
175
  requirement: !ruby/object:Gem::Requirement
@@ -614,7 +614,11 @@ files:
614
614
  - app/components/primer/beta/button.html.erb
615
615
  - app/components/primer/beta/button.pcss
616
616
  - app/components/primer/beta/button.rb
617
+ - app/components/primer/beta/button_group.css
618
+ - app/components/primer/beta/button_group.css.json
619
+ - app/components/primer/beta/button_group.css.map
617
620
  - app/components/primer/beta/button_group.html.erb
621
+ - app/components/primer/beta/button_group.pcss
618
622
  - app/components/primer/beta/button_group.rb
619
623
  - app/components/primer/beta/clipboard_copy.d.ts
620
624
  - app/components/primer/beta/clipboard_copy.html.erb
@@ -775,6 +779,7 @@ files:
775
779
  - lib/postcss_mixins/focusOutlineOnEmphasis.pcss
776
780
  - lib/postcss_mixins/minTouchTarget.js
777
781
  - lib/postcss_mixins/targetBoxShadow.pcss
782
+ - lib/primer/accessibility.rb
778
783
  - lib/primer/classify.rb
779
784
  - lib/primer/classify/utilities.rb
780
785
  - lib/primer/classify/utilities.yml
@@ -826,6 +831,8 @@ files:
826
831
  - lib/primer/forms/hidden_field.rb
827
832
  - lib/primer/forms/multi.html.erb
828
833
  - lib/primer/forms/multi.rb
834
+ - lib/primer/forms/primer_base_component_wrapper.html.erb
835
+ - lib/primer/forms/primer_base_component_wrapper.rb
829
836
  - lib/primer/forms/primer_multi_input.d.ts
830
837
  - lib/primer/forms/primer_multi_input.js
831
838
  - lib/primer/forms/primer_multi_input.ts
@@ -926,13 +933,6 @@ files:
926
933
  - lib/rubocop/cop/primer/system_argument_instead_of_class.rb
927
934
  - lib/rubocop/cop/primer/test_selector.rb
928
935
  - lib/tasks/custom_utilities.yml
929
- - lib/tasks/docs.rake
930
- - lib/tasks/helpers/ast_processor.rb
931
- - lib/tasks/helpers/ast_traverser.rb
932
- - lib/tasks/primer_view_components.rake
933
- - lib/tasks/static.rake
934
- - lib/tasks/test.rake
935
- - lib/tasks/utilities.rake
936
936
  - previews/pages/forms/01_introduction.md.erb
937
937
  - previews/pages/forms/02_getting_started.md.erb
938
938
  - previews/pages/forms/03_caption_templates.md.erb
@@ -950,6 +950,8 @@ files:
950
950
  - previews/primer/alpha/action_menu_preview/opens_dialog.html.erb
951
951
  - previews/primer/alpha/action_menu_preview/single_select_form.html.erb
952
952
  - previews/primer/alpha/action_menu_preview/submitting_forms.html.erb
953
+ - previews/primer/alpha/action_menu_preview/two_menus.html.erb
954
+ - previews/primer/alpha/action_menu_preview/with_actions.html.erb
953
955
  - previews/primer/alpha/auto_complete_preview.rb
954
956
  - previews/primer/alpha/banner_preview.rb
955
957
  - previews/primer/alpha/banner_preview/with_action_button.html.erb
@@ -981,6 +983,7 @@ files:
981
983
  - previews/primer/alpha/nav_list_preview/trailing_action.html.erb
982
984
  - previews/primer/alpha/overlay_preview.rb
983
985
  - previews/primer/alpha/overlay_preview/middle_of_page.html.erb
986
+ - previews/primer/alpha/overlay_preview/middle_of_page_with_relative_container.html.erb
984
987
  - previews/primer/alpha/radio_button_group_preview.rb
985
988
  - previews/primer/alpha/radio_button_preview.rb
986
989
  - previews/primer/alpha/segmented_control_preview.rb
@@ -1014,6 +1017,7 @@ files:
1014
1017
  - previews/primer/beta/border_box_preview.rb
1015
1018
  - previews/primer/beta/breadcrumbs_preview.rb
1016
1019
  - previews/primer/beta/button_group_preview.rb
1020
+ - previews/primer/beta/button_group_preview/action_menus.html.erb
1017
1021
  - previews/primer/beta/button_preview.rb
1018
1022
  - previews/primer/beta/button_preview/all_schemes.html.erb
1019
1023
  - previews/primer/beta/button_preview/invisible_all_visuals.html.erb
@@ -1045,26 +1049,26 @@ files:
1045
1049
  - previews/primer/beta/timeline_item_preview.rb
1046
1050
  - previews/primer/beta/truncate_preview.rb
1047
1051
  - previews/primer/box_preview.rb
1048
- - previews/primer/forms/forms_preview.rb
1049
- - previews/primer/forms/forms_preview/after_content_form.html.erb
1050
- - previews/primer/forms/forms_preview/array_check_box_group_form.html.erb
1051
- - previews/primer/forms/forms_preview/caption_template_form.html.erb
1052
- - previews/primer/forms/forms_preview/check_box_group_form.html.erb
1053
- - previews/primer/forms/forms_preview/check_box_with_nested_form.html.erb
1054
- - previews/primer/forms/forms_preview/composed_form.html.erb
1055
- - previews/primer/forms/forms_preview/example_toggle_switch_form.html.erb
1056
- - previews/primer/forms/forms_preview/horizontal_form.html.erb
1057
- - previews/primer/forms/forms_preview/immediate_validation_form.html.erb
1058
- - previews/primer/forms/forms_preview/invalid_form.html.erb
1059
- - previews/primer/forms/forms_preview/multi_input_form.html.erb
1060
- - previews/primer/forms/forms_preview/multi_text_field_form.html.erb
1061
- - previews/primer/forms/forms_preview/name_with_question_mark_form.html.erb
1062
- - previews/primer/forms/forms_preview/radio_button_group_form.html.erb
1063
- - previews/primer/forms/forms_preview/radio_button_with_nested_form.html.erb
1064
- - previews/primer/forms/forms_preview/select_form.html.erb
1065
- - previews/primer/forms/forms_preview/single_text_field_form.html.erb
1066
- - previews/primer/forms/forms_preview/submit_button_form.html.erb
1067
- - previews/primer/forms/forms_preview/text_field_and_checkbox_form.html.erb
1052
+ - previews/primer/forms_preview.rb
1053
+ - previews/primer/forms_preview/after_content_form.html.erb
1054
+ - previews/primer/forms_preview/array_check_box_group_form.html.erb
1055
+ - previews/primer/forms_preview/caption_template_form.html.erb
1056
+ - previews/primer/forms_preview/check_box_group_form.html.erb
1057
+ - previews/primer/forms_preview/check_box_with_nested_form.html.erb
1058
+ - previews/primer/forms_preview/composed_form.html.erb
1059
+ - previews/primer/forms_preview/example_toggle_switch_form.html.erb
1060
+ - previews/primer/forms_preview/horizontal_form.html.erb
1061
+ - previews/primer/forms_preview/immediate_validation_form.html.erb
1062
+ - previews/primer/forms_preview/invalid_form.html.erb
1063
+ - previews/primer/forms_preview/multi_input_form.html.erb
1064
+ - previews/primer/forms_preview/multi_text_field_form.html.erb
1065
+ - previews/primer/forms_preview/name_with_question_mark_form.html.erb
1066
+ - previews/primer/forms_preview/radio_button_group_form.html.erb
1067
+ - previews/primer/forms_preview/radio_button_with_nested_form.html.erb
1068
+ - previews/primer/forms_preview/select_form.html.erb
1069
+ - previews/primer/forms_preview/single_text_field_form.html.erb
1070
+ - previews/primer/forms_preview/submit_button_form.html.erb
1071
+ - previews/primer/forms_preview/text_field_and_checkbox_form.html.erb
1068
1072
  - previews/primer/url_helpers.rb
1069
1073
  - static/arguments.json
1070
1074
  - static/assets/view-components.svg
@@ -1094,7 +1098,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1094
1098
  - !ruby/object:Gem::Version
1095
1099
  version: '0'
1096
1100
  requirements: []
1097
- rubygems_version: 3.2.33
1101
+ rubygems_version: 3.4.10
1098
1102
  signing_key:
1099
1103
  specification_version: 4
1100
1104
  summary: ViewComponents for the Primer Design System
data/lib/tasks/docs.rake DELETED
@@ -1,185 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "active_support/inflector"
4
-
5
- task :init_pvc do
6
- ENV["RAILS_ENV"] = "test"
7
- ENV["VC_COMPAT_PATCH_ENABLED"] = "true"
8
-
9
- require File.expand_path("./../../demo/config/environment.rb", __dir__)
10
- Dir[File.expand_path("../../app/components/primer/**/*.rb", __dir__)].sort.each { |file| require file }
11
- end
12
-
13
- namespace :docs do
14
- task :livereload do
15
- require "listen"
16
-
17
- Rake::Task["docs:build"].execute
18
-
19
- puts "Listening for changes to documentation..."
20
-
21
- listener = Listen.to("app") do |modified, added, removed|
22
- puts "modified absolute path: #{modified}"
23
- puts "added absolute path: #{added}"
24
- puts "removed absolute path: #{removed}"
25
-
26
- Rake::Task["docs:build"].execute
27
- end
28
- listener.start # not blocking
29
- sleep
30
- end
31
-
32
- task build: [:build_gatsby_pages, :build_gatsby_adrs, :build_lookbook_pages]
33
-
34
- task build_gatsby_pages: :build_yard_registry do
35
- require "primer/yard"
36
-
37
- registry = Primer::Yard::Registry.make
38
-
39
- require "primer/yard/legacy_gatsby_backend"
40
- require "primer/yard/component_manifest"
41
-
42
- puts "Converting YARD documentation to Markdown files."
43
-
44
- # Deletes docs before regenerating them, guaranteeing that we don't keep stale docs.
45
- components_content_glob = File.join(*%w[docs content components ** *.md])
46
- FileUtils.rm_rf(components_content_glob)
47
-
48
- manifest = Primer::Yard::ComponentManifest.where(published: true)
49
- backend = Primer::Yard::LegacyGatsbyBackend.new(registry, manifest)
50
- errors = backend.generate
51
-
52
- unless errors.empty?
53
- puts "==============================================="
54
- puts "===================== ERRORS =================="
55
- puts "===============================================\n\n"
56
- puts JSON.pretty_generate(errors)
57
- puts "\n\n==============================================="
58
- puts "==============================================="
59
- puts "==============================================="
60
-
61
- raise
62
- end
63
-
64
- puts "Markdown compiled."
65
-
66
- all_components = Primer::Component.descendants - [Primer::BaseComponent]
67
- components_needing_docs = all_components - Primer::Yard::ComponentManifest::COMPONENTS.keys
68
-
69
- if components_needing_docs.any?
70
- puts
71
- puts "The following components need docs. Care to contribute them? #{components_needing_docs.map(&:name).join(', ')}"
72
- end
73
- end
74
-
75
- task build_lookbook_pages: :build_yard_registry do
76
- require "primer/yard"
77
-
78
- registry = Primer::Yard::Registry.make
79
- manifest = Primer::Yard::ComponentManifest.where(form_component: true)
80
- backend = Primer::Yard::LookbookPagesBackend.new(registry, manifest)
81
- backend.generate
82
- end
83
-
84
- task :build_gatsby_adrs do
85
- adr_content_dir = File.join(*%w[docs content adr])
86
-
87
- FileUtils.rm_rf(File.join(adr_content_dir))
88
- FileUtils.mkdir(adr_content_dir)
89
-
90
- nav_entries = Dir[File.join(*%w[docs adr *.md])].sort.map do |orig_path|
91
- orig_file_name = File.basename(orig_path)
92
- url_name = orig_file_name.chomp(".md")
93
-
94
- file_contents = File.read(orig_path)
95
- file_contents = <<~CONTENTS.sub(/\n+\z/, "\n")
96
- <!-- Warning: AUTO-GENERATED file, do not edit. Make changes to the files in the adr/ directory instead. -->
97
- #{file_contents}
98
- CONTENTS
99
-
100
- title_match = /^# (.+)/.match(file_contents)
101
- title = title_match[1]
102
-
103
- # Don't include initial ADR for recording ADRs
104
- next nil if title == "Record architecture decisions"
105
-
106
- File.write(File.join(adr_content_dir, orig_file_name), file_contents)
107
- puts "Copied #{orig_path}"
108
-
109
- { "title" => title, "url" => "/adr/#{url_name}" }
110
- end
111
-
112
- nav_yaml_file = File.join(*%w[docs src @primer gatsby-theme-doctocat nav.yml])
113
- nav_yaml = YAML.load_file(nav_yaml_file)
114
- adr_entry = {
115
- "title" => "Architecture decisions",
116
- "children" => nav_entries.compact
117
- }
118
-
119
- existing_index = nav_yaml.index { |entry| entry["title"] == "Architecture decisions" }
120
- if existing_index
121
- nav_yaml[existing_index] = adr_entry
122
- else
123
- nav_yaml << adr_entry
124
- end
125
-
126
- File.write(nav_yaml_file, YAML.dump(nav_yaml))
127
- end
128
-
129
- task preview: :build_yard_registry do
130
- require "primer/yard"
131
-
132
- FileUtils.rm_rf("previews/primer/docs/")
133
-
134
- registry = Primer::Yard::Registry.make
135
-
136
- # Generate previews from documentation examples
137
- Primer::Yard::ComponentManifest.all.each do |component_ref|
138
- component = component_ref.klass
139
- docs = registry.find(component)
140
- next unless docs.constructor&.tags(:example)&.any?
141
-
142
- yard_example_tags = docs.constructor.tags(:example)
143
-
144
- path = Pathname.new("previews/docs/#{docs.short_name.underscore}_preview.rb")
145
- path.dirname.mkdir unless path.dirname.exist?
146
-
147
- File.open(path, "w") do |f|
148
- f.puts("module Docs")
149
- f.puts(" class #{docs.short_name}Preview < ViewComponent::Preview")
150
-
151
- yard_example_tags.each_with_index do |tag, index|
152
- name, _, code = Primer::Yard::LegacyGatsbyBackend.parse_example_tag(tag)
153
- method_name = name.split("|").first.downcase.parameterize.underscore
154
- f.puts(" def #{method_name}; end")
155
- f.puts unless index == yard_example_tags.size - 1
156
- path = Pathname.new("previews/docs/#{docs.short_name.underscore}_preview/#{method_name}.html.erb")
157
- path.dirname.mkdir unless path.dirname.exist?
158
- File.open(path, "w") do |view_file|
159
- view_file.puts(code.to_s)
160
- end
161
- end
162
-
163
- f.puts(" end")
164
- f.puts("end")
165
- end
166
- end
167
- end
168
-
169
- task build_yard_registry: :init_pvc do
170
- require "primer/yard"
171
-
172
- ::YARD::Rake::YardocTask.new do |task|
173
- task.options << "--no-output"
174
- end
175
-
176
- # Custom tags for yard
177
- ::YARD::Tags::Library.define_tag("Accessibility", :accessibility)
178
- ::YARD::Tags::Library.define_tag("Deprecation", :deprecation)
179
- ::YARD::Tags::Library.define_tag("Parameter", :param, :with_types_name_and_default)
180
- ::YARD::Tags::Library.define_tag("Form Usage", :form_usage)
181
-
182
- puts "Building YARD documentation."
183
- Rake::Task["yard"].execute
184
- end
185
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "ast_traverser"
4
-
5
- # :nodoc:
6
- class AstProcessor
7
- class << self
8
- def increment(stats, component, arg_name, value)
9
- stats[component][:arguments][arg_name][value] = 0 unless stats[component][:arguments][arg_name][value]
10
- stats[component][:arguments][arg_name][value] += 1
11
- end
12
-
13
- def process_ast(ast, stats)
14
- traverser = AstTraverser.new
15
- traverser.walk(ast)
16
-
17
- return if traverser.stats.empty?
18
-
19
- traverser.stats.each do |component, component_info|
20
- stats[component] ||= {
21
- paths: []
22
- }
23
-
24
- stats[component][:paths] << component_info[:path]
25
- stats[component][:paths].uniq!
26
- stats[component][:arguments] ||= {}
27
-
28
- component_info[:arguments]&.each do |arg, value|
29
- arg_name = arg.to_s
30
- stats[component][:arguments][arg_name] ||= {}
31
-
32
- # we want to count each class separately
33
- if arg_name == "classes"
34
- value.split.each do |val|
35
- increment(stats, component, arg_name, val)
36
- end
37
- else
38
- increment(stats, component, arg_name, value)
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,77 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "primer/view_components/statuses"
4
- require_relative "../../../app/lib/primer/view_helper"
5
-
6
- # :nodoc:
7
- class AstTraverser
8
- include RuboCop::AST::Traversal
9
-
10
- attr_reader :stats
11
-
12
- def initialize
13
- @stats = {}
14
- end
15
-
16
- def on_send(node)
17
- return super(node) unless component_node?(node)
18
-
19
- name = component_name(node)
20
- args = extract_arguments(node, name)
21
-
22
- @stats[name] = { path: node.loc.expression.source_buffer.name }
23
- @stats[name][:arguments] = args unless args.empty?
24
-
25
- super(node) # recursively iterate over children
26
- end
27
-
28
- def view_helpers
29
- @view_helpers ||= ::Primer::ViewHelper::HELPERS.keys.map { |key| "primer_#{key}".to_sym }
30
- end
31
-
32
- def component_node?(node)
33
- view_helpers.include?(node.method_name) || (node.method_name == :new && !node.receiver.nil? && ::Primer::ViewComponents::STATUSES.key?(node.receiver.const_name))
34
- end
35
-
36
- def component_name(node)
37
- return node.receiver.const_name if node.method_name == :new
38
-
39
- helper_key = node.method_name.to_s.gsub("primer_", "").to_sym
40
- Primer::ViewHelper::HELPERS[helper_key]
41
- end
42
-
43
- def extract_arguments(node, name)
44
- args = node.arguments
45
- res = {}
46
-
47
- return res if args.empty?
48
-
49
- kwargs = args.last
50
- if kwargs.respond_to?(:pairs)
51
- res = kwargs.pairs.each_with_object({}) do |pair, h|
52
- h.merge!(extract_values(pair))
53
- end
54
- end
55
-
56
- # Octicon is the only component that accepts positional arguments.
57
- res[:icon] = args.first.source if name == "Primer::Beta::Octicon" && args.size > 1
58
-
59
- res
60
- end
61
-
62
- def extract_values(pair)
63
- return { pair.key.value => pair.value.source } unless pair.value.type == :hash
64
-
65
- flatten_pairs(pair, prefix: "#{pair.key.value}-")
66
- end
67
-
68
- def flatten_pairs(pair, prefix: "")
69
- pair.value.pairs.each_with_object({}) do |value_pair, h|
70
- if value_pair.value.type == :hash
71
- h.merge!(flatten_pairs(value_pair, prefix: "#{prefix}#{value_pair.key.value}-"))
72
- else
73
- h.merge!("#{prefix}#{value_pair.key.value}" => value_pair.value.source)
74
- end
75
- end
76
- end
77
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ERB_GLOB = "**/*.html{+*,}.erb"
4
- RB_GLOB = "**/*.rb"
5
- BLOCK_EXPR = /\s*((\s+|\))do|\{)(\s*\|[^|]*\|)?\s*\Z/.freeze # copied from Rails: action_view/template/handlers/erb/erubi.rb
6
-
7
- namespace :primer_view_components do
8
- desc "Report arguments used in each component"
9
- task :report, [:paths] do |_, args|
10
- require "rubocop"
11
- require "better_html"
12
- require "better_html/parser"
13
- require "erb_lint/processed_source"
14
- require_relative "helpers/ast_processor"
15
-
16
- paths = args[:paths].split
17
- stats = {}
18
-
19
- rb_files = paths.reduce([]) { |mem, path| mem + Dir[File.join(path, RB_GLOB)] }
20
-
21
- rb_files.each do |f|
22
- ast = RuboCop::AST::ProcessedSource.from_file(f, RUBY_VERSION.to_f).ast
23
- AstProcessor.process_ast(ast, stats)
24
- end
25
-
26
- erb_files = paths.reduce([]) { |mem, path| mem + Dir[File.join(path, ERB_GLOB)] }
27
-
28
- erb_files.each do |f|
29
- erb_ast = ERBLint::ProcessedSource.new(f, File.read(f)).ast
30
-
31
- erb_ast.descendants(:erb).each do |erb_node|
32
- indicator, _, code_node, = *erb_node
33
-
34
- next if indicator&.children&.first == "#" # don't analyze comments
35
-
36
- trimmed_source = code_node.loc.source.sub(BLOCK_EXPR, "").strip
37
- ast = RuboCop::AST::ProcessedSource.new(trimmed_source, RUBY_VERSION.to_f).ast
38
- AstProcessor.process_ast(ast, stats)
39
- end
40
- end
41
-
42
- File.open(".primer-view-components-report.json", "w") do |f|
43
- f.write(JSON.pretty_generate(stats))
44
- f.write($INPUT_RECORD_SEPARATOR)
45
- end
46
- end
47
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :static do
4
- task dump: [:dump_statuses, :dump_constants, :dump_audited_at, :dump_previews, :dump_arguments, :dump_info_arch]
5
-
6
- task dump_statuses: :init_pvc do
7
- Primer::Static.dump(:statuses)
8
- end
9
-
10
- task dump_constants: :init_pvc do
11
- Primer::Static.dump(:constants)
12
- end
13
-
14
- task dump_audited_at: :init_pvc do
15
- Primer::Static.dump(:audited_at)
16
- end
17
-
18
- task dump_previews: :init_pvc do
19
- Primer::Static.dump(:previews)
20
- end
21
-
22
- task dump_arguments: ["docs:build_yard_registry", :init_pvc] do
23
- Primer::Static.dump(:arguments)
24
- end
25
-
26
- task dump_info_arch: ["docs:build_yard_registry", :dump_previews, :dump_arguments] do
27
- Primer::Static.dump(:info_arch)
28
- end
29
- end
data/lib/tasks/test.rake DELETED
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rake/testtask"
4
-
5
- namespace :test do
6
- desc "Run all tests"
7
- task all: [
8
- :components,
9
- :lib,
10
- :system,
11
- :accessibility,
12
- :performance
13
- ]
14
-
15
- Rake::TestTask.new(:single) do |t|
16
- t.warning = false
17
- t.libs << "test"
18
- t.libs << "lib"
19
- t.test_files = FileList[ENV["TEST"]]
20
- end
21
-
22
- Rake::TestTask.new(:components) do |t|
23
- t.warning = false
24
- t.libs << "test"
25
- t.test_files = FileList[
26
- "test/components/**/*_test.rb"
27
- ]
28
- end
29
-
30
- Rake::TestTask.new(:component_css) do |t|
31
- t.warning = false
32
- t.libs << "test"
33
- t.test_files = FileList[
34
- "test/css/**/*_test.rb"
35
- ]
36
- end
37
-
38
- Rake::TestTask.new(:lib) do |t|
39
- t.warning = false
40
- t.libs << "test"
41
- t.libs << "lib"
42
- t.test_files = FileList[
43
- "test/lib/**/*_test.rb"
44
- ]
45
- end
46
-
47
- Rake::TestTask.new(:system) do |t|
48
- t.warning = false
49
- t.libs << "test"
50
- t.test_files = FileList["test/system/**/*_test.rb"]
51
- end
52
-
53
- Rake::TestTask.new(:performance) do |t|
54
- t.warning = false
55
- t.verbose = true
56
- t.libs << "test"
57
- t.test_files = FileList[
58
- "test/performance/**/*_test.rb",
59
- "test/performance/**/bench_*.rb"
60
- ]
61
- end
62
-
63
- Rake::TestTask.new(:accessibility) do |t|
64
- t.warning = false
65
- t.libs << "test"
66
- t.test_files = FileList["test/accessibility_test.rb"]
67
- end
68
-
69
- task :coverage do
70
- require "simplecov"
71
-
72
- SimpleCov.minimum_coverage 100
73
- SimpleCov.collate Dir["coverage/.resultset.json"], "rails"
74
- end
75
- end
76
-
77
- task :test do
78
- if ENV["TEST"]
79
- Rake::Task["test:single"].invoke
80
- else
81
- Rake::Task["test:all"].invoke
82
- end
83
- end