primer_view_components 0.0.49 → 0.0.53
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +158 -0
- data/app/components/primer/base_component.rb +2 -2
- data/app/components/primer/beta/avatar_stack.rb +9 -9
- data/app/components/primer/beta/truncate.html.erb +5 -0
- data/app/components/primer/beta/truncate.rb +110 -0
- data/app/components/primer/border_box_component.rb +27 -1
- data/app/components/primer/clipboard_copy.html.erb +2 -2
- data/app/components/primer/clipboard_copy.rb +1 -1
- data/app/components/primer/dropdown.rb +7 -7
- data/app/components/primer/icon_button.rb +1 -1
- data/app/components/primer/label_component.rb +13 -12
- data/app/components/primer/navigation/tab_component.rb +1 -1
- data/app/components/primer/progress_bar_component.rb +0 -3
- data/app/components/primer/tab_nav_component.rb +1 -1
- data/app/lib/primer/fetch_or_fallback_helper.rb +2 -0
- data/app/lib/primer/octicon/cache.rb +1 -1
- data/app/lib/primer/tabbed_component_helper.rb +1 -1
- data/app/lib/primer/view_helper.rb +1 -0
- data/lib/primer/classify/cache.rb +0 -5
- data/lib/primer/classify/flex.rb +1 -1
- data/lib/primer/classify/functional_colors.rb +1 -1
- data/lib/primer/classify/utilities.rb +19 -2
- data/lib/primer/classify/utilities.yml +16 -0
- data/lib/primer/classify/validation.rb +18 -0
- data/lib/primer/classify.rb +4 -18
- data/lib/primer/view_components/constants.rb +1 -1
- data/lib/primer/view_components/linters/argument_mappers/base.rb +63 -2
- data/lib/primer/view_components/linters/argument_mappers/button.rb +7 -11
- data/lib/primer/view_components/linters/argument_mappers/clipboard_copy.rb +2 -6
- data/lib/primer/view_components/linters/argument_mappers/close_button.rb +43 -0
- data/lib/primer/view_components/linters/argument_mappers/flash.rb +32 -0
- data/lib/primer/view_components/linters/argument_mappers/helpers/erb_block.rb +67 -0
- data/lib/primer/view_components/linters/argument_mappers/label.rb +5 -12
- data/lib/primer/view_components/linters/argument_mappers/system_arguments.rb +6 -5
- data/lib/primer/view_components/linters/autocorrectable.rb +6 -4
- data/lib/primer/view_components/linters/{helpers.rb → base_linter.rb} +69 -29
- data/lib/primer/view_components/linters/button_component_migration_counter.rb +4 -3
- data/lib/primer/view_components/linters/clipboard_copy_component_migration_counter.rb +3 -4
- data/lib/primer/view_components/linters/close_button_component_migration_counter.rb +123 -0
- data/lib/primer/view_components/linters/flash_component_migration_counter.rb +18 -3
- data/lib/primer/view_components/linters/label_component_migration_counter.rb +2 -3
- data/lib/primer/view_components/version.rb +1 -1
- data/lib/rubocop/config/default.yml +5 -0
- data/lib/rubocop/cop/primer/deprecated_arguments.rb +173 -0
- data/lib/rubocop/cop/primer/no_tag_memoize.rb +1 -0
- data/lib/rubocop/cop/primer/primer_octicon.rb +178 -0
- data/lib/rubocop/cop/primer/system_argument_instead_of_class.rb +12 -16
- data/lib/rubocop/cop/primer.rb +1 -2
- data/lib/tasks/coverage.rake +4 -0
- data/lib/tasks/docs.rake +3 -2
- data/lib/tasks/utilities.rake +7 -3
- data/lib/yard/docs_helper.rb +6 -3
- data/static/arguments.yml +7 -4
- data/static/classes.yml +8 -0
- data/static/constants.json +13 -1
- data/static/statuses.json +3 -1
- metadata +32 -9
@@ -3,7 +3,9 @@
|
|
3
3
|
require "rubocop"
|
4
4
|
require "primer/classify/utilities"
|
5
5
|
require "primer/view_components/statuses"
|
6
|
+
require_relative "../../../../app/lib/primer/view_helper"
|
6
7
|
|
8
|
+
# :nocov:
|
7
9
|
module RuboCop
|
8
10
|
module Cop
|
9
11
|
module Primer
|
@@ -20,8 +22,7 @@ module RuboCop
|
|
20
22
|
STR
|
21
23
|
|
22
24
|
def on_send(node)
|
23
|
-
return unless node
|
24
|
-
return unless ::Primer::ViewComponents::STATUSES.key?(node.receiver.const_name)
|
25
|
+
return unless valid_node?(node)
|
25
26
|
return unless node.arguments?
|
26
27
|
|
27
28
|
# we are looking for hash arguments and they are always last
|
@@ -48,26 +49,21 @@ module RuboCop
|
|
48
49
|
|
49
50
|
def autocorrect(node)
|
50
51
|
lambda do |corrector|
|
51
|
-
|
52
|
-
corrector.replace(node.loc.expression,
|
52
|
+
args = ::Primer::Classify::Utilities.classes_to_args(node.value.value)
|
53
|
+
corrector.replace(node.loc.expression, args)
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
56
57
|
private
|
57
58
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
when String
|
64
|
-
value.to_json
|
65
|
-
else
|
66
|
-
value
|
67
|
-
end
|
59
|
+
# We only verify SystemArguments if it's a `.new` call on a component or
|
60
|
+
# a ViewHleper call.
|
61
|
+
def valid_node?(node)
|
62
|
+
view_helpers.include?(node.method_name) || (node.method_name == :new && ::Primer::ViewComponents::STATUSES.key?(node.receiver.const_name))
|
63
|
+
end
|
68
64
|
|
69
|
-
|
70
|
-
|
65
|
+
def view_helpers
|
66
|
+
::Primer::ViewHelper::HELPERS.keys.map { |key| "primer_#{key}".to_sym }
|
71
67
|
end
|
72
68
|
end
|
73
69
|
end
|
data/lib/rubocop/cop/primer.rb
CHANGED
data/lib/tasks/coverage.rake
CHANGED
@@ -9,6 +9,10 @@ namespace :coverage do
|
|
9
9
|
|
10
10
|
SimpleCov.collate Dir["simplecov-resultset-*/.resultset.json"], "rails" do
|
11
11
|
formatter SimpleCov::Formatter::Console
|
12
|
+
|
13
|
+
add_group "Ignored Code" do |src_file|
|
14
|
+
File.readlines(src_file.filename).grep(/:nocov:/).any?
|
15
|
+
end
|
12
16
|
end
|
13
17
|
end
|
14
18
|
end
|
data/lib/tasks/docs.rake
CHANGED
@@ -74,6 +74,7 @@ namespace :docs do
|
|
74
74
|
Primer::TimelineItemComponent,
|
75
75
|
Primer::Tooltip,
|
76
76
|
Primer::Truncate,
|
77
|
+
Primer::Beta::Truncate,
|
77
78
|
Primer::UnderlineNavComponent
|
78
79
|
]
|
79
80
|
|
@@ -238,7 +239,7 @@ namespace :docs do
|
|
238
239
|
f.puts
|
239
240
|
html = view_context.render(inline: code)
|
240
241
|
html.scan(/class="([^"]*)"/) do |classnames|
|
241
|
-
classes_found_in_examples.concat(classnames[0].split
|
242
|
+
classes_found_in_examples.concat(classnames[0].split.reject { |c| c.starts_with?("octicon", "js", "my-") }.map { ".#{_1}" })
|
242
243
|
end
|
243
244
|
f.puts("<Example src=\"#{html.tr('"', "\'").delete("\n")}\" />")
|
244
245
|
f.puts
|
@@ -382,7 +383,7 @@ namespace :docs do
|
|
382
383
|
end
|
383
384
|
|
384
385
|
def pretty_default_value(tag, component)
|
385
|
-
params = tag.object.parameters.find { |param| [tag.name.to_s, tag.name
|
386
|
+
params = tag.object.parameters.find { |param| [tag.name.to_s, "#{tag.name}:"].include?(param[0]) }
|
386
387
|
default = tag.defaults&.first || params&.second
|
387
388
|
|
388
389
|
return "N/A" unless default
|
data/lib/tasks/utilities.rake
CHANGED
@@ -8,19 +8,23 @@ namespace :utilities do
|
|
8
8
|
require "primer/classify/utilities"
|
9
9
|
|
10
10
|
# Keys that are looked for to be included in the utilities.yml file
|
11
|
+
# rubocop:disable Lint/ConstantDefinitionInBlock
|
11
12
|
SUPPORTED_KEYS = %i[
|
12
13
|
anim
|
13
14
|
d
|
14
15
|
float
|
16
|
+
height
|
15
17
|
hide
|
16
18
|
m mt mr mb ml mx my
|
17
19
|
p pt pr pb pl px py
|
18
20
|
position
|
19
21
|
wb
|
22
|
+
width
|
20
23
|
v
|
21
24
|
].freeze
|
22
25
|
|
23
26
|
BREAKPOINTS = [nil, "sm", "md", "lg", "xl"].freeze
|
27
|
+
# rubocop:enable Lint/ConstantDefinitionInBlock
|
24
28
|
|
25
29
|
css_data =
|
26
30
|
JSON.parse(
|
@@ -36,7 +40,7 @@ namespace :utilities do
|
|
36
40
|
css_data.each do |selector|
|
37
41
|
selector.sub!(/^./, "")
|
38
42
|
# Next if selector has ancestors or sibling selectors
|
39
|
-
next if selector.match?(/[:><~\[
|
43
|
+
next if selector.match?(/[:><~\[.]/)
|
40
44
|
next unless SUPPORTED_KEYS.any? { |key| selector.start_with?("#{key}-") }
|
41
45
|
|
42
46
|
# Dupe so we still have the selector at the end of slicing it up
|
@@ -48,7 +52,7 @@ namespace :utilities do
|
|
48
52
|
next unless classname.match?(Regexp.new(k))
|
49
53
|
|
50
54
|
key = v
|
51
|
-
classname.sub!(Regexp.new(k
|
55
|
+
classname.sub!(Regexp.new("#{k}-"), "")
|
52
56
|
end
|
53
57
|
|
54
58
|
# If we didn't find a replacement, grab the first text before hyphen
|
@@ -64,7 +68,7 @@ namespace :utilities do
|
|
64
68
|
end
|
65
69
|
|
66
70
|
# Change the rest from hypens to underscores
|
67
|
-
classname.sub!(
|
71
|
+
classname.sub!(/-/, "_")
|
68
72
|
|
69
73
|
# convert padding/margin negative values ie n7 to -7
|
70
74
|
classname.sub!(/^n/, "-") if classname.match?(/^n[0-9]/)
|
data/lib/yard/docs_helper.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :nocov:
|
4
|
+
|
3
5
|
module YARD
|
4
6
|
# Helper methods to use for yard documentation
|
5
7
|
module DocsHelper
|
6
8
|
def one_of(enumerable, lower: false, sort: true)
|
7
9
|
# Sort the array if requested
|
8
10
|
if sort
|
9
|
-
|
10
|
-
|
11
|
+
enumerable = enumerable.sort do |a, b|
|
12
|
+
a.instance_of?(b.class) ? a <=> b : a.class.to_s <=> b.class.to_s
|
13
|
+
end
|
11
14
|
end
|
12
15
|
|
13
16
|
values =
|
@@ -58,7 +61,7 @@ module YARD
|
|
58
61
|
def status_module_and_short_name(component)
|
59
62
|
name_with_status = component.name.gsub(/Primer::|Component/, "")
|
60
63
|
|
61
|
-
m = name_with_status.match(/(?<status>Beta|Alpha|Deprecated)?(
|
64
|
+
m = name_with_status.match(/(?<status>Beta|Alpha|Deprecated)?(?<_colons>::)?(?<name>.*)/)
|
62
65
|
[m[:status]&.downcase, m[:name].gsub("::", "")]
|
63
66
|
end
|
64
67
|
|
data/static/arguments.yml
CHANGED
@@ -143,6 +143,13 @@
|
|
143
143
|
type: Hash
|
144
144
|
default: N/A
|
145
145
|
description: "[System arguments](/system-arguments)"
|
146
|
+
- component: Truncate
|
147
|
+
source: https://github.com/primer/view_components/tree/main/app/components/primer/beta/truncate.rb
|
148
|
+
parameters:
|
149
|
+
- name: system_arguments
|
150
|
+
type: Hash
|
151
|
+
default: N/A
|
152
|
+
description: "[System arguments](/system-arguments)"
|
146
153
|
- component: Blankslate
|
147
154
|
source: https://github.com/primer/view_components/tree/main/app/components/primer/blankslate_component.rb
|
148
155
|
parameters:
|
@@ -562,10 +569,6 @@
|
|
562
569
|
type: Symbol
|
563
570
|
default: "`:span`"
|
564
571
|
description: One of `:a`, `:div`, `:span`, or `:summary`.
|
565
|
-
- name: title
|
566
|
-
type: String
|
567
|
-
default: N/A
|
568
|
-
description: "`title` attribute for the component element."
|
569
572
|
- name: scheme
|
570
573
|
type: Symbol
|
571
574
|
default: "`nil`"
|
data/static/classes.yml
CHANGED
@@ -10,6 +10,9 @@
|
|
10
10
|
- ".Box-footer"
|
11
11
|
- ".Box-header"
|
12
12
|
- ".Box-row"
|
13
|
+
- ".Box-row--blue"
|
14
|
+
- ".Box-row--gray"
|
15
|
+
- ".Box-row--yellow"
|
13
16
|
- ".BtnGroup"
|
14
17
|
- ".BtnGroup-item"
|
15
18
|
- ".Counter"
|
@@ -49,6 +52,10 @@
|
|
49
52
|
- ".TimelineItem-avatar"
|
50
53
|
- ".TimelineItem-badge"
|
51
54
|
- ".TimelineItem-body"
|
55
|
+
- ".Truncate"
|
56
|
+
- ".Truncate-text"
|
57
|
+
- ".Truncate-text--expandable"
|
58
|
+
- ".Truncate-text--primary"
|
52
59
|
- ".UnderlineNav"
|
53
60
|
- ".UnderlineNav--right"
|
54
61
|
- ".UnderlineNav-actions"
|
@@ -168,6 +175,7 @@
|
|
168
175
|
- ".tabnav-tabs"
|
169
176
|
- ".text-bold"
|
170
177
|
- ".text-left"
|
178
|
+
- ".text-normal"
|
171
179
|
- ".tooltipped"
|
172
180
|
- ".tooltipped-n"
|
173
181
|
- ".tooltipped-no-delay"
|
data/static/constants.json
CHANGED
@@ -85,16 +85,28 @@
|
|
85
85
|
"Primer::Beta::Text": {
|
86
86
|
"DEFAULT_TAG": "span"
|
87
87
|
},
|
88
|
+
"Primer::Beta::Truncate": {
|
89
|
+
"TruncateText": "Primer::Beta::Truncate::TruncateText"
|
90
|
+
},
|
91
|
+
"Primer::Beta::Truncate::TruncateText": {
|
92
|
+
},
|
88
93
|
"Primer::BlankslateComponent": {
|
89
94
|
},
|
90
95
|
"Primer::BorderBoxComponent": {
|
91
96
|
"DEFAULT_PADDING": "default",
|
97
|
+
"DEFAULT_ROW_SCHEME": "default",
|
92
98
|
"PADDING_MAPPINGS": {
|
93
99
|
"default": "",
|
94
100
|
"condensed": "Box--condensed",
|
95
101
|
"spacious": "Box--spacious"
|
96
102
|
},
|
97
|
-
"PADDING_SUGGESTION": "Perhaps you could consider using :padding options of default, condensed, and spacious?"
|
103
|
+
"PADDING_SUGGESTION": "Perhaps you could consider using :padding options of default, condensed, and spacious?",
|
104
|
+
"ROW_SCHEME_MAPPINGS": {
|
105
|
+
"default": "",
|
106
|
+
"neutral": "Box-row--gray",
|
107
|
+
"info": "Box-row--blue",
|
108
|
+
"warning": "Box-row--yellow"
|
109
|
+
}
|
98
110
|
},
|
99
111
|
"Primer::BoxComponent": {
|
100
112
|
},
|
data/static/statuses.json
CHANGED
@@ -8,6 +8,8 @@
|
|
8
8
|
"Primer::Beta::Avatar": "beta",
|
9
9
|
"Primer::Beta::AvatarStack": "beta",
|
10
10
|
"Primer::Beta::Text": "beta",
|
11
|
+
"Primer::Beta::Truncate": "beta",
|
12
|
+
"Primer::Beta::Truncate::TruncateText": "alpha",
|
11
13
|
"Primer::BlankslateComponent": "beta",
|
12
14
|
"Primer::BorderBoxComponent": "beta",
|
13
15
|
"Primer::BoxComponent": "stable",
|
@@ -15,7 +17,7 @@
|
|
15
17
|
"Primer::BreadcrumbComponent::ItemComponent": "alpha",
|
16
18
|
"Primer::ButtonComponent": "beta",
|
17
19
|
"Primer::ButtonGroup": "beta",
|
18
|
-
"Primer::ClipboardCopy": "
|
20
|
+
"Primer::ClipboardCopy": "beta",
|
19
21
|
"Primer::CloseButton": "beta",
|
20
22
|
"Primer::CounterComponent": "beta",
|
21
23
|
"Primer::DetailsComponent": "beta",
|
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.0.
|
4
|
+
version: 0.0.53
|
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: 2021-
|
11
|
+
date: 2021-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|
@@ -42,16 +42,16 @@ dependencies:
|
|
42
42
|
name: octicons
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '15'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '15'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: view_component
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -218,14 +218,14 @@ dependencies:
|
|
218
218
|
requirements:
|
219
219
|
- - '='
|
220
220
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
221
|
+
version: 1.13.0
|
222
222
|
type: :development
|
223
223
|
prerelease: false
|
224
224
|
version_requirements: !ruby/object:Gem::Requirement
|
225
225
|
requirements:
|
226
226
|
- - '='
|
227
227
|
- !ruby/object:Gem::Version
|
228
|
-
version:
|
228
|
+
version: 1.13.0
|
229
229
|
- !ruby/object:Gem::Dependency
|
230
230
|
name: rubocop-github
|
231
231
|
requirement: !ruby/object:Gem::Requirement
|
@@ -324,6 +324,20 @@ dependencies:
|
|
324
324
|
- - ">="
|
325
325
|
- !ruby/object:Gem::Version
|
326
326
|
version: '0'
|
327
|
+
- !ruby/object:Gem::Dependency
|
328
|
+
name: timecop
|
329
|
+
requirement: !ruby/object:Gem::Requirement
|
330
|
+
requirements:
|
331
|
+
- - ">="
|
332
|
+
- !ruby/object:Gem::Version
|
333
|
+
version: '0'
|
334
|
+
type: :development
|
335
|
+
prerelease: false
|
336
|
+
version_requirements: !ruby/object:Gem::Requirement
|
337
|
+
requirements:
|
338
|
+
- - ">="
|
339
|
+
- !ruby/object:Gem::Version
|
340
|
+
version: '0'
|
327
341
|
- !ruby/object:Gem::Dependency
|
328
342
|
name: yard
|
329
343
|
requirement: !ruby/object:Gem::Requirement
|
@@ -367,6 +381,8 @@ files:
|
|
367
381
|
- app/components/primer/beta/avatar_stack.html.erb
|
368
382
|
- app/components/primer/beta/avatar_stack.rb
|
369
383
|
- app/components/primer/beta/text.rb
|
384
|
+
- app/components/primer/beta/truncate.html.erb
|
385
|
+
- app/components/primer/beta/truncate.rb
|
370
386
|
- app/components/primer/blankslate_component.html.erb
|
371
387
|
- app/components/primer/blankslate_component.rb
|
372
388
|
- app/components/primer/border_box_component.html.erb
|
@@ -476,6 +492,7 @@ files:
|
|
476
492
|
- lib/primer/classify/grid.rb
|
477
493
|
- lib/primer/classify/utilities.rb
|
478
494
|
- lib/primer/classify/utilities.yml
|
495
|
+
- lib/primer/classify/validation.rb
|
479
496
|
- lib/primer/view_components.rb
|
480
497
|
- lib/primer/view_components/constants.rb
|
481
498
|
- lib/primer/view_components/engine.rb
|
@@ -483,20 +500,26 @@ files:
|
|
483
500
|
- lib/primer/view_components/linters/argument_mappers/base.rb
|
484
501
|
- lib/primer/view_components/linters/argument_mappers/button.rb
|
485
502
|
- lib/primer/view_components/linters/argument_mappers/clipboard_copy.rb
|
503
|
+
- lib/primer/view_components/linters/argument_mappers/close_button.rb
|
486
504
|
- lib/primer/view_components/linters/argument_mappers/conversion_error.rb
|
505
|
+
- lib/primer/view_components/linters/argument_mappers/flash.rb
|
506
|
+
- lib/primer/view_components/linters/argument_mappers/helpers/erb_block.rb
|
487
507
|
- lib/primer/view_components/linters/argument_mappers/label.rb
|
488
508
|
- lib/primer/view_components/linters/argument_mappers/system_arguments.rb
|
489
509
|
- lib/primer/view_components/linters/autocorrectable.rb
|
510
|
+
- lib/primer/view_components/linters/base_linter.rb
|
490
511
|
- lib/primer/view_components/linters/button_component_migration_counter.rb
|
491
512
|
- lib/primer/view_components/linters/clipboard_copy_component_migration_counter.rb
|
513
|
+
- lib/primer/view_components/linters/close_button_component_migration_counter.rb
|
492
514
|
- lib/primer/view_components/linters/flash_component_migration_counter.rb
|
493
|
-
- lib/primer/view_components/linters/helpers.rb
|
494
515
|
- lib/primer/view_components/linters/label_component_migration_counter.rb
|
495
516
|
- lib/primer/view_components/statuses.rb
|
496
517
|
- lib/primer/view_components/version.rb
|
497
518
|
- lib/rubocop/config/default.yml
|
498
519
|
- lib/rubocop/cop/primer.rb
|
520
|
+
- lib/rubocop/cop/primer/deprecated_arguments.rb
|
499
521
|
- lib/rubocop/cop/primer/no_tag_memoize.rb
|
522
|
+
- lib/rubocop/cop/primer/primer_octicon.rb
|
500
523
|
- lib/rubocop/cop/primer/system_argument_instead_of_class.rb
|
501
524
|
- lib/tasks/constants.rake
|
502
525
|
- lib/tasks/coverage.rake
|