primer_view_components 0.5.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +90 -0
  3. data/app/assets/javascripts/app/components/primer/alpha/action_menu/action_menu_element.d.ts +3 -2
  4. data/app/assets/javascripts/app/components/primer/alpha/x_banner.d.ts +3 -1
  5. data/app/assets/javascripts/primer_view_components.js +1 -1
  6. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  7. data/app/assets/styles/primer_view_components.css +1 -1
  8. data/app/assets/styles/primer_view_components.css.map +1 -1
  9. data/app/components/primer/alpha/action_bar.rb +0 -8
  10. data/app/components/primer/alpha/action_list/item.rb +17 -6
  11. data/app/components/primer/alpha/action_list.css +1 -1
  12. data/app/components/primer/alpha/action_list.css.json +2 -0
  13. data/app/components/primer/alpha/action_list.css.map +1 -1
  14. data/app/components/primer/alpha/action_list.pcss +4 -2
  15. data/app/components/primer/alpha/action_list.rb +61 -6
  16. data/app/components/primer/alpha/action_menu/action_menu_element.d.ts +3 -2
  17. data/app/components/primer/alpha/action_menu/action_menu_element.js +17 -3
  18. data/app/components/primer/alpha/action_menu/action_menu_element.ts +20 -6
  19. data/app/components/primer/alpha/action_menu/list.rb +63 -34
  20. data/app/components/primer/alpha/action_menu.rb +12 -269
  21. data/app/components/primer/alpha/auto_complete/item.rb +0 -12
  22. data/app/components/primer/alpha/auto_complete.css +1 -1
  23. data/app/components/primer/alpha/auto_complete.css.map +1 -1
  24. data/app/components/primer/alpha/auto_complete.rb +0 -47
  25. data/app/components/primer/alpha/banner.css +1 -1
  26. data/app/components/primer/alpha/banner.css.map +1 -1
  27. data/app/components/primer/alpha/banner.html.erb +1 -1
  28. data/app/components/primer/alpha/banner.rb +12 -39
  29. data/app/components/primer/alpha/button_marketing.rb +0 -12
  30. data/app/components/primer/alpha/dialog.css +1 -1
  31. data/app/components/primer/alpha/dialog.css.map +1 -1
  32. data/app/components/primer/alpha/dialog.pcss +1 -1
  33. data/app/components/primer/alpha/dialog.rb +2 -18
  34. data/app/components/primer/alpha/dropdown.css +1 -1
  35. data/app/components/primer/alpha/dropdown.css.map +1 -1
  36. data/app/components/primer/alpha/dropdown.rb +0 -105
  37. data/app/components/primer/alpha/form_control.rb +0 -11
  38. data/app/components/primer/alpha/hellip_button.rb +0 -9
  39. data/app/components/primer/alpha/hidden_text_expander.rb +0 -9
  40. data/app/components/primer/alpha/image.rb +0 -16
  41. data/app/components/primer/alpha/image_crop.rb +0 -11
  42. data/app/components/primer/alpha/layout.css +1 -1
  43. data/app/components/primer/alpha/layout.css.map +1 -1
  44. data/app/components/primer/alpha/layout.pcss +1 -1
  45. data/app/components/primer/alpha/layout.rb +0 -118
  46. data/app/components/primer/alpha/menu.css +1 -1
  47. data/app/components/primer/alpha/menu.css.map +1 -1
  48. data/app/components/primer/alpha/menu.rb +0 -19
  49. data/app/components/primer/alpha/multi_input.rb +0 -33
  50. data/app/components/primer/alpha/nav_list/group.rb +12 -3
  51. data/app/components/primer/alpha/nav_list.rb +79 -84
  52. data/app/components/primer/alpha/navigation/tab.rb +0 -35
  53. data/app/components/primer/alpha/octicon_symbols.rb +0 -6
  54. data/app/components/primer/alpha/overlay.rb +0 -14
  55. data/app/components/primer/alpha/segmented_control.css +1 -1
  56. data/app/components/primer/alpha/segmented_control.css.map +1 -1
  57. data/app/components/primer/alpha/segmented_control.rb +0 -61
  58. data/app/components/primer/alpha/tab_container.rb +0 -18
  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.rb +0 -63
  62. data/app/components/primer/alpha/tab_panels.rb +0 -16
  63. data/app/components/primer/alpha/text_field.css +1 -1
  64. data/app/components/primer/alpha/text_field.css.map +1 -1
  65. data/app/components/primer/alpha/text_field.rb +0 -68
  66. data/app/components/primer/alpha/toggle_switch.css +1 -1
  67. data/app/components/primer/alpha/toggle_switch.css.map +1 -1
  68. data/app/components/primer/alpha/toggle_switch.rb +0 -18
  69. data/app/components/primer/alpha/tool_tip.js +3 -3
  70. data/app/components/primer/alpha/tool_tip.ts +3 -3
  71. data/app/components/primer/alpha/tooltip.rb +1 -69
  72. data/app/components/primer/alpha/underline_nav.css +1 -1
  73. data/app/components/primer/alpha/underline_nav.css.map +1 -1
  74. data/app/components/primer/alpha/underline_nav.rb +0 -61
  75. data/app/components/primer/alpha/underline_panels.rb +0 -19
  76. data/app/components/primer/alpha/x_banner.d.ts +3 -1
  77. data/app/components/primer/alpha/x_banner.js +24 -10
  78. data/app/components/primer/alpha/x_banner.ts +14 -12
  79. data/app/components/primer/base_component.rb +1 -1
  80. data/app/components/primer/beta/auto_complete/item.rb +0 -8
  81. data/app/components/primer/beta/auto_complete.rb +0 -56
  82. data/app/components/primer/beta/avatar.css +1 -1
  83. data/app/components/primer/beta/avatar.css.map +1 -1
  84. data/app/components/primer/beta/avatar.rb +1 -19
  85. data/app/components/primer/beta/avatar_stack.css +1 -1
  86. data/app/components/primer/beta/avatar_stack.css.map +1 -1
  87. data/app/components/primer/beta/avatar_stack.rb +0 -21
  88. data/app/components/primer/beta/base_button.rb +0 -4
  89. data/app/components/primer/beta/blankslate.css +1 -1
  90. data/app/components/primer/beta/blankslate.css.map +1 -1
  91. data/app/components/primer/beta/blankslate.rb +0 -104
  92. data/app/components/primer/beta/border_box/header.rb +4 -11
  93. data/app/components/primer/beta/border_box.css +1 -1
  94. data/app/components/primer/beta/border_box.css.map +1 -1
  95. data/app/components/primer/beta/border_box.html.erb +2 -2
  96. data/app/components/primer/beta/border_box.rb +11 -55
  97. data/app/components/primer/beta/breadcrumbs.rb +0 -7
  98. data/app/components/primer/beta/button.css +1 -1
  99. data/app/components/primer/beta/button.css.map +1 -1
  100. data/app/components/primer/beta/button.pcss +3 -3
  101. data/app/components/primer/beta/button.rb +2 -43
  102. data/app/components/primer/beta/button_group.css +1 -1
  103. data/app/components/primer/beta/button_group.css.map +1 -1
  104. data/app/components/primer/beta/button_group.rb +0 -16
  105. data/app/components/primer/beta/clipboard_copy.rb +0 -12
  106. data/app/components/primer/beta/close_button.rb +0 -3
  107. data/app/components/primer/beta/counter.rb +0 -8
  108. data/app/components/primer/beta/details.rb +0 -11
  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.rb +1 -23
  112. data/app/components/primer/beta/heading.rb +0 -8
  113. data/app/components/primer/beta/icon_button.rb +0 -21
  114. data/app/components/primer/beta/label.css +1 -1
  115. data/app/components/primer/beta/label.css.map +1 -1
  116. data/app/components/primer/beta/label.rb +0 -20
  117. data/app/components/primer/beta/link.rb +0 -22
  118. data/app/components/primer/beta/markdown.rb +1 -262
  119. data/app/components/primer/beta/octicon.rb +0 -10
  120. data/app/components/primer/beta/popover.css +1 -1
  121. data/app/components/primer/beta/popover.css.map +1 -1
  122. data/app/components/primer/beta/popover.rb +0 -43
  123. data/app/components/primer/beta/progress_bar.rb +1 -22
  124. data/app/components/primer/beta/relative_time.rb +0 -9
  125. data/app/components/primer/beta/spinner.rb +2 -10
  126. data/app/components/primer/beta/state.rb +0 -13
  127. data/app/components/primer/beta/subhead.rb +0 -55
  128. data/app/components/primer/beta/text.rb +0 -4
  129. data/app/components/primer/beta/timeline_item.css +1 -1
  130. data/app/components/primer/beta/timeline_item.css.map +1 -1
  131. data/app/components/primer/beta/timeline_item.rb +0 -9
  132. data/app/components/primer/beta/truncate.rb +0 -50
  133. data/app/components/primer/blankslate_component.rb +0 -76
  134. data/app/components/primer/box.rb +0 -6
  135. data/app/components/primer/button_component.rb +0 -49
  136. data/app/components/primer/conditional_wrapper.rb +2 -17
  137. data/app/components/primer/icon_button.rb +0 -30
  138. data/app/components/primer/layout_component.rb +0 -12
  139. data/app/components/primer/tooltip.rb +0 -27
  140. data/app/components/primer/truncate.rb +0 -19
  141. data/app/forms/submit_button_form.rb +1 -1
  142. data/lib/primer/accessibility.rb +1 -1
  143. data/lib/primer/classify/utilities.yml +2 -0
  144. data/lib/primer/deprecations.yml +3 -3
  145. data/lib/primer/forms/button.rb +0 -5
  146. data/lib/primer/forms/dsl/input.rb +3 -0
  147. data/lib/primer/static/generate_info_arch.rb +1 -0
  148. data/lib/primer/view_components/linters/details_menu_migration.rb +1 -1
  149. data/lib/primer/view_components/linters/migrations/truncate_component.rb +45 -0
  150. data/lib/primer/view_components/linters/tooltipped_migration.rb +1 -1
  151. data/lib/primer/view_components/linters.rb +1 -0
  152. data/lib/primer/view_components/version.rb +2 -2
  153. data/lib/primer/yard/lookbook_pages_backend.rb +31 -0
  154. data/lib/primer/yard.rb +8 -9
  155. data/lib/tasks/custom_utilities.yml +2 -0
  156. data/previews/primer/alpha/action_list_preview.rb +89 -17
  157. data/previews/primer/alpha/action_menu_preview.rb +79 -37
  158. data/previews/primer/alpha/banner_preview/with_action_button.html.erb +1 -1
  159. data/previews/primer/alpha/banner_preview/with_action_content.html.erb +1 -1
  160. data/previews/primer/alpha/banner_preview.rb +11 -14
  161. data/previews/primer/alpha/nav_list_preview.rb +17 -0
  162. data/previews/primer/alpha/tooltip_preview/with_multiple_on_a_page.html.erb +3 -3
  163. data/previews/primer/alpha/tooltip_preview.rb +11 -23
  164. data/static/arguments.json +18 -13
  165. data/static/constants.json +6 -0
  166. data/static/info_arch.json +493 -36
  167. data/static/previews.json +15 -15
  168. metadata +3 -3
  169. data/lib/primer/yard/legacy_gatsby_backend.rb +0 -233
data/static/previews.json CHANGED
@@ -182,6 +182,19 @@
182
182
  ]
183
183
  }
184
184
  },
185
+ {
186
+ "preview_path": "primer/alpha/action_list/avatar_item",
187
+ "name": "avatar_item",
188
+ "snapshot": "false",
189
+ "skip_rules": {
190
+ "wont_fix": [
191
+ "region"
192
+ ],
193
+ "will_fix": [
194
+ "color-contrast"
195
+ ]
196
+ }
197
+ },
185
198
  {
186
199
  "preview_path": "primer/alpha/action_list/item_default",
187
200
  "name": "item_default",
@@ -1401,8 +1414,8 @@
1401
1414
  }
1402
1415
  },
1403
1416
  {
1404
- "preview_path": "primer/alpha/banner/dismissable",
1405
- "name": "dismissable",
1417
+ "preview_path": "primer/alpha/banner/dismissible",
1418
+ "name": "dismissible",
1406
1419
  "snapshot": "true",
1407
1420
  "skip_rules": {
1408
1421
  "wont_fix": [
@@ -6145,19 +6158,6 @@
6145
6158
  ]
6146
6159
  }
6147
6160
  },
6148
- {
6149
- "preview_path": "primer/alpha/tooltip/label_tooltip_on_button_with_existing_labelledby",
6150
- "name": "label_tooltip_on_button_with_existing_labelledby",
6151
- "snapshot": "false",
6152
- "skip_rules": {
6153
- "wont_fix": [
6154
- "region"
6155
- ],
6156
- "will_fix": [
6157
- "color-contrast"
6158
- ]
6159
- }
6160
- },
6161
6161
  {
6162
6162
  "preview_path": "primer/alpha/tooltip/description_tooltip_on_button_with_existing_describedby",
6163
6163
  "name": "description_tooltip_on_button_with_existing_describedby",
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.5.1
4
+ version: 0.7.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-07-25 00:00:00.000000000 Z
11
+ date: 2023-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -935,6 +935,7 @@ files:
935
935
  - lib/primer/view_components/linters/helpers/rule_helpers.rb
936
936
  - lib/primer/view_components/linters/label_component_migration_counter.rb
937
937
  - lib/primer/view_components/linters/migrate_deprecated_flash_arguments.rb
938
+ - lib/primer/view_components/linters/migrations/truncate_component.rb
938
939
  - lib/primer/view_components/linters/severity_schema.rb
939
940
  - lib/primer/view_components/linters/subhead_component_migration_counter.rb
940
941
  - lib/primer/view_components/linters/super_in_component_templates.rb
@@ -949,7 +950,6 @@ files:
949
950
  - lib/primer/yard/component_ref.rb
950
951
  - lib/primer/yard/docs_helper.rb
951
952
  - lib/primer/yard/info_arch_docs_helper.rb
952
- - lib/primer/yard/legacy_gatsby_backend.rb
953
953
  - lib/primer/yard/lookbook_docs_helper.rb
954
954
  - lib/primer/yard/lookbook_pages_backend.rb
955
955
  - lib/primer/yard/registry.rb
@@ -1,233 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # rubocop:disable Naming/MethodParameterName
4
-
5
- # :nocov:
6
- module Primer
7
- module Yard
8
- # Backend that generates documentation for the legacy, Gatsby-powered PVC docsite.
9
- class LegacyGatsbyBackend < Backend
10
- class << self
11
- def parse_example_tag(tag)
12
- name = tag.name
13
- description = nil
14
- code = nil
15
-
16
- if tag.text.include?("@description")
17
- splitted = tag.text.split(/@description|@code/)
18
- description = splitted.second.gsub(/^[ \t]{2}/, "").strip
19
- code = splitted.last.gsub(/^[ \t]{2}/, "").strip
20
- else
21
- code = tag.text
22
- end
23
-
24
- [name, description, code]
25
- end
26
- end
27
-
28
- attr_reader :registry, :manifest
29
-
30
- def initialize(registry, manifest)
31
- @registry = registry
32
- @manifest = manifest
33
- end
34
-
35
- def generate
36
- errors = []
37
-
38
- each_component do |component_ref|
39
- component = component_ref.klass
40
- docs = registry.find(component)
41
- status_path = docs.status_module.nil? ? "" : "#{docs.status_module}/"
42
-
43
- metadata = docs.metadata.merge(
44
- source: component_ref.source_url,
45
- lookbook: component_ref.lookbook_url,
46
- path: "docs/content/components/#{status_path}#{docs.short_name.downcase}.md",
47
- example_path: example_path(component),
48
- require_js_path: require_js_path(component)
49
- )
50
-
51
- path = Pathname.new(metadata[:path])
52
- path.dirname.mkpath unless path.dirname.exist?
53
-
54
- File.open(path, "w") do |f|
55
- f.puts("---")
56
- f.puts("title: #{metadata[:title]}")
57
- f.puts("componentId: #{metadata[:component_id]}")
58
- f.puts("status: #{metadata[:status]}")
59
- f.puts("source: #{metadata[:source]}")
60
- f.puts("a11yReviewed: #{metadata[:a11y_reviewed]}")
61
- f.puts("lookbook: #{metadata[:lookbook]}") if preview_exists?(component)
62
- f.puts("---")
63
- f.puts
64
- f.puts("import Example from '#{metadata[:example_path]}'")
65
-
66
- if component_ref.requires_js?
67
- f.puts("import RequiresJSFlash from '#{metadata[:require_js_path]}'")
68
- f.puts
69
- f.puts("<RequiresJSFlash />")
70
- end
71
-
72
- f.puts
73
- f.puts("<!-- Warning: AUTO-GENERATED file, do not edit. Add code comments to your Ruby instead <3 -->")
74
- f.puts
75
- f.puts(view_context.render(inline: docs.base_docstring))
76
-
77
- if docs.tags(:deprecated).any?
78
- f.puts
79
- f.puts("## Deprecation")
80
- docs.tags(:deprecated).each do |tag|
81
- f.puts
82
- f.puts view_context.render(inline: tag.text)
83
- end
84
- end
85
-
86
- if docs.tags(:accessibility).any?
87
- f.puts
88
- f.puts("## Accessibility")
89
- docs.tags(:accessibility).each do |tag|
90
- f.puts
91
- f.puts view_context.render(inline: tag.text)
92
- end
93
- end
94
-
95
- errors << { component.name => { arguments: "No argument documentation found" } } unless docs.params.any?
96
-
97
- f.puts
98
- f.puts("## Arguments")
99
- f.puts
100
- f.puts("| Name | Type | Default | Description |")
101
- f.puts("| :- | :- | :- | :- |")
102
-
103
- documented_params = docs.params.map(&:name)
104
- component_params = component.instance_method(:initialize).parameters.map { |p| p.last.to_s }
105
-
106
- if (documented_params & component_params).size != component_params.size
107
- err = { arguments: {} }
108
- (component_params - documented_params).each do |arg|
109
- err[:arguments][arg] = "Not documented"
110
- end
111
-
112
- errors << { component.name => err }
113
- end
114
-
115
- docs.params.each do |tag|
116
- default_value = pretty_default_value(tag, component)
117
- f.puts("| `#{tag.name}` | `#{tag.types.join(', ')}` | #{default_value} | #{view_context.render(inline: tag.text.squish)} |")
118
- end
119
-
120
- if docs.slot_methods.any?
121
- f.puts
122
- f.puts("## Slots")
123
-
124
- docs.slot_methods.each do |slot_docs|
125
- emit_method(slot_docs, component, f)
126
- end
127
- end
128
-
129
- example_tags = docs.constructor.tags(:example)
130
-
131
- if example_tags.any?
132
- f.puts
133
- f.puts("## Examples")
134
-
135
- example_tags.each do |tag|
136
- name, description, code = parse_example_tag(tag)
137
- f.puts
138
- f.puts("### #{name}")
139
- if description
140
- f.puts
141
- f.puts(view_context.render(inline: description.squish))
142
- end
143
- f.puts
144
- html = view_context.render(inline: code)
145
- f.puts("<Example src=\"#{html.tr('"', "\'").delete("\n")}\" />")
146
- f.puts
147
- f.puts("```erb")
148
- f.puts(code.to_s)
149
- f.puts("```")
150
- end
151
- elsif component_ref.should_have_examples?
152
- errors << { component.name => { example: "No examples found" } }
153
- end
154
- end
155
- end
156
-
157
- # Build system arguments docs from BaseComponent
158
- system_args_docs = registry.find(Primer::BaseComponent)
159
-
160
- File.open("docs/content/system-arguments.md", "w") do |f|
161
- f.puts("---")
162
- f.puts("title: System arguments")
163
- f.puts("---")
164
- f.puts
165
- f.puts("<!-- Warning: AUTO-GENERATED file, do not edit. Add code comments to your Ruby instead <3 -->")
166
- f.puts
167
- f.puts(system_args_docs.base_docstring)
168
- f.puts
169
-
170
- f.puts(view_context.render(inline: system_args_docs.constructor.base_docstring))
171
- end
172
-
173
- errors
174
- end
175
-
176
- private
177
-
178
- def emit_method(method_docs, component, f)
179
- f.puts
180
- f.puts("### `#{method_docs.name}`")
181
-
182
- if method_docs.base_docstring.to_s.present?
183
- f.puts
184
- f.puts(view_context.render(inline: method_docs.base_docstring))
185
- end
186
-
187
- param_tags = method_docs.tags(:param)
188
- if param_tags.any?
189
- f.puts
190
- f.puts("| Name | Type | Default | Description |")
191
- f.puts("| :- | :- | :- | :- |")
192
- end
193
-
194
- param_tags.each do |tag|
195
- f.puts("| `#{tag.name}` | `#{tag.types.join(', ')}` | #{pretty_default_value(tag, component)} | #{view_context.render(inline: tag.text)} |")
196
- end
197
- end
198
-
199
- def each_component(&block)
200
- manifest.each(&block)
201
- end
202
-
203
- def example_path(component)
204
- example_path = "../../src/@primer/gatsby-theme-doctocat/components/example"
205
- example_path = "../#{example_path}" if status_module?(component)
206
- example_path
207
- end
208
-
209
- def require_js_path(component)
210
- require_js_path = "../../src/@primer/gatsby-theme-doctocat/components/requires-js-flash"
211
- require_js_path = "../#{require_js_path}" if status_module?(component)
212
- require_js_path
213
- end
214
-
215
- def preview_exists?(component)
216
- path = component.name.underscore
217
-
218
- File.exist?("previews/#{path}_preview.rb")
219
- end
220
-
221
- def status_module?(component)
222
- (%w[Alpha Beta] & component.name.split("::")).any?
223
- end
224
-
225
- def parse_example_tag(tag)
226
- self.class.parse_example_tag(tag)
227
- end
228
- end
229
- end
230
- end
231
- # :nocov:
232
-
233
- # rubocop:enable Naming/MethodParameterName