primer_view_components 0.0.47 → 0.0.51

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +113 -0
  3. data/app/components/primer/base_component.rb +2 -2
  4. data/app/components/primer/beta/auto_complete.rb +2 -2
  5. data/app/components/primer/beta/avatar.rb +1 -1
  6. data/app/components/primer/{avatar_stack_component.html.erb → beta/avatar_stack.html.erb} +0 -0
  7. data/app/components/primer/beta/avatar_stack.rb +92 -0
  8. data/app/components/primer/clipboard_copy.html.erb +2 -2
  9. data/app/components/primer/component.rb +5 -1
  10. data/app/components/primer/image_crop.html.erb +4 -4
  11. data/app/components/primer/label_component.rb +13 -12
  12. data/app/components/primer/navigation/tab_component.rb +30 -2
  13. data/app/components/primer/tab_nav_component.rb +4 -3
  14. data/app/components/primer/truncate.rb +1 -1
  15. data/app/components/primer/underline_nav_component.rb +3 -2
  16. data/app/lib/primer/octicon/cache.rb +1 -1
  17. data/lib/primer/classify.rb +0 -10
  18. data/lib/primer/classify/cache.rb +0 -5
  19. data/lib/primer/classify/utilities.rb +35 -12
  20. data/lib/primer/classify/utilities.yml +16 -0
  21. data/lib/primer/view_components.rb +34 -6
  22. data/lib/primer/view_components/constants.rb +55 -0
  23. data/lib/primer/view_components/linters/argument_mappers/base.rb +74 -0
  24. data/lib/primer/view_components/linters/argument_mappers/button.rb +32 -44
  25. data/lib/primer/view_components/linters/argument_mappers/clipboard_copy.rb +20 -0
  26. data/lib/primer/view_components/linters/argument_mappers/helpers/erb_block.rb +24 -0
  27. data/lib/primer/view_components/linters/argument_mappers/label.rb +50 -0
  28. data/lib/primer/view_components/linters/argument_mappers/system_arguments.rb +4 -1
  29. data/lib/primer/view_components/linters/autocorrectable.rb +30 -0
  30. data/lib/primer/view_components/linters/button_component_migration_counter.rb +9 -23
  31. data/lib/primer/view_components/linters/clipboard_copy_component_migration_counter.rb +21 -0
  32. data/lib/primer/view_components/linters/close_button_component_migration_counter.rb +16 -0
  33. data/lib/primer/view_components/linters/helpers.rb +42 -41
  34. data/lib/primer/view_components/linters/label_component_migration_counter.rb +25 -0
  35. data/lib/primer/view_components/version.rb +1 -1
  36. data/lib/rubocop/config/default.yml +12 -0
  37. data/lib/rubocop/cop/primer.rb +4 -0
  38. data/lib/rubocop/cop/primer/no_tag_memoize.rb +42 -0
  39. data/lib/rubocop/cop/primer/system_argument_instead_of_class.rb +85 -0
  40. data/lib/tasks/constants.rake +12 -0
  41. data/lib/tasks/docs.rake +24 -23
  42. data/lib/tasks/utilities.rake +4 -10
  43. data/lib/yard/docs_helper.rb +12 -3
  44. data/static/arguments.yml +973 -0
  45. data/static/assets/view-components.svg +18 -0
  46. data/static/classes.yml +174 -0
  47. data/static/constants.json +628 -0
  48. data/static/statuses.json +1 -1
  49. metadata +26 -8
  50. data/app/components/primer/avatar_stack_component.rb +0 -90
data/static/statuses.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "Primer::Alpha::ButtonMarketing": "alpha",
3
- "Primer::AvatarStackComponent": "beta",
4
3
  "Primer::BaseButton": "beta",
5
4
  "Primer::BaseComponent": "beta",
6
5
  "Primer::Beta::AutoComplete": "beta",
7
6
  "Primer::Beta::AutoComplete::Input": "alpha",
8
7
  "Primer::Beta::AutoComplete::Item": "beta",
9
8
  "Primer::Beta::Avatar": "beta",
9
+ "Primer::Beta::AvatarStack": "beta",
10
10
  "Primer::Beta::Text": "beta",
11
11
  "Primer::BlankslateComponent": "beta",
12
12
  "Primer::BorderBoxComponent": "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.47
4
+ version: 0.0.51
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-07-20 00:00:00.000000000 Z
11
+ date: 2021-08-05 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: 13.0.0
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: 13.0.0
54
+ version: '15'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: view_component
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -355,8 +355,6 @@ files:
355
355
  - app/components/primer/auto_complete/auto_complete.js
356
356
  - app/components/primer/auto_complete/auto_component.d.ts
357
357
  - app/components/primer/auto_complete/auto_component.js
358
- - app/components/primer/avatar_stack_component.html.erb
359
- - app/components/primer/avatar_stack_component.rb
360
358
  - app/components/primer/base_button.rb
361
359
  - app/components/primer/base_component.rb
362
360
  - app/components/primer/beta/auto_complete.rb
@@ -366,6 +364,8 @@ files:
366
364
  - app/components/primer/beta/auto_complete/auto_complete.ts
367
365
  - app/components/primer/beta/auto_complete/item.rb
368
366
  - app/components/primer/beta/avatar.rb
367
+ - app/components/primer/beta/avatar_stack.html.erb
368
+ - app/components/primer/beta/avatar_stack.rb
369
369
  - app/components/primer/beta/text.rb
370
370
  - app/components/primer/blankslate_component.html.erb
371
371
  - app/components/primer/blankslate_component.rb
@@ -477,16 +477,30 @@ files:
477
477
  - lib/primer/classify/utilities.rb
478
478
  - lib/primer/classify/utilities.yml
479
479
  - lib/primer/view_components.rb
480
+ - lib/primer/view_components/constants.rb
480
481
  - lib/primer/view_components/engine.rb
481
482
  - lib/primer/view_components/linters.rb
483
+ - lib/primer/view_components/linters/argument_mappers/base.rb
482
484
  - lib/primer/view_components/linters/argument_mappers/button.rb
485
+ - lib/primer/view_components/linters/argument_mappers/clipboard_copy.rb
483
486
  - lib/primer/view_components/linters/argument_mappers/conversion_error.rb
487
+ - lib/primer/view_components/linters/argument_mappers/helpers/erb_block.rb
488
+ - lib/primer/view_components/linters/argument_mappers/label.rb
484
489
  - lib/primer/view_components/linters/argument_mappers/system_arguments.rb
490
+ - lib/primer/view_components/linters/autocorrectable.rb
485
491
  - lib/primer/view_components/linters/button_component_migration_counter.rb
492
+ - lib/primer/view_components/linters/clipboard_copy_component_migration_counter.rb
493
+ - lib/primer/view_components/linters/close_button_component_migration_counter.rb
486
494
  - lib/primer/view_components/linters/flash_component_migration_counter.rb
487
495
  - lib/primer/view_components/linters/helpers.rb
496
+ - lib/primer/view_components/linters/label_component_migration_counter.rb
488
497
  - lib/primer/view_components/statuses.rb
489
498
  - lib/primer/view_components/version.rb
499
+ - lib/rubocop/config/default.yml
500
+ - lib/rubocop/cop/primer.rb
501
+ - lib/rubocop/cop/primer/no_tag_memoize.rb
502
+ - lib/rubocop/cop/primer/system_argument_instead_of_class.rb
503
+ - lib/tasks/constants.rake
490
504
  - lib/tasks/coverage.rake
491
505
  - lib/tasks/docs.rake
492
506
  - lib/tasks/statuses.rake
@@ -494,6 +508,10 @@ files:
494
508
  - lib/yard/docs_helper.rb
495
509
  - lib/yard/renders_many_handler.rb
496
510
  - lib/yard/renders_one_handler.rb
511
+ - static/arguments.yml
512
+ - static/assets/view-components.svg
513
+ - static/classes.yml
514
+ - static/constants.json
497
515
  - static/statuses.json
498
516
  homepage: https://github.com/primer/view_components
499
517
  licenses:
@@ -1,90 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Primer
4
- # Use `AvatarStack` to stack multiple avatars together.
5
- class AvatarStackComponent < Primer::Component
6
- status :beta
7
-
8
- ALIGN_DEFAULT = :left
9
- ALIGN_OPTIONS = [ALIGN_DEFAULT, :right].freeze
10
-
11
- DEFAULT_TAG = :div
12
- TAG_OPTIONS = [DEFAULT_TAG, :span].freeze
13
-
14
- DEFAULT_BODY_TAG = :div
15
- BODY_TAG_OPTIONS = TAG_OPTIONS = [DEFAULT_TAG, :span].freeze
16
- # Required list of stacked avatars.
17
- #
18
- # @param kwargs [Hash] The same arguments as <%= link_to_component(Primer::Beta::Avatar) %>.
19
- renders_many :avatars, "Primer::Beta::Avatar"
20
-
21
- # @example Default
22
- # <%= render(Primer::AvatarStackComponent.new) do |c| %>
23
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
24
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
25
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
26
- # <% end %>
27
- #
28
- # @example Align right
29
- # <%= render(Primer::AvatarStackComponent.new(align: :right)) do |c| %>
30
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
31
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
32
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
33
- # <% end %>
34
- #
35
- # @example With tooltip
36
- # <%= render(Primer::AvatarStackComponent.new(tooltipped: true, body_arguments: { label: 'This is a tooltip!' })) do |c| %>
37
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
38
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
39
- # <%= c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %>
40
- # <% end %>
41
- #
42
- # @param tag [Symbol] <%= one_of(Primer::AvatarStackComponent::TAG_OPTIONS) %>
43
- # @param align [Symbol] <%= one_of(Primer::AvatarStackComponent::ALIGN_OPTIONS) %>
44
- # @param tooltipped [Boolean] Whether to add a tooltip to the stack or not.
45
- # @param body_arguments [Hash] Parameters to add to the Body. If `tooltipped` is set, has the same arguments as <%= link_to_component(Primer::Tooltip) %>.
46
- # The default tag is <%= pretty_value(Primer::AvatarStackComponent::DEFAULT_BODY_TAG) %> but can be changed using `tag:`
47
- # to <%= one_of(Primer::AvatarStackComponent::BODY_TAG_OPTIONS, lower: true) %>
48
- # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
49
- def initialize(tag: DEFAULT_TAG, align: ALIGN_DEFAULT, tooltipped: false, body_arguments: {}, **system_arguments)
50
- @align = fetch_or_fallback(ALIGN_OPTIONS, align, ALIGN_DEFAULT)
51
- @system_arguments = system_arguments
52
- @tooltipped = tooltipped
53
- @body_arguments = body_arguments
54
-
55
- body_tag = @body_arguments[:tag] || DEFAULT_BODY_TAG
56
- @body_arguments[:tag] = fetch_or_fallback(BODY_TAG_OPTIONS, body_tag, DEFAULT_BODY_TAG)
57
- @body_arguments[:classes] = class_names(
58
- "AvatarStack-body",
59
- @body_arguments[:classes]
60
- )
61
-
62
- @system_arguments[:tag] = fetch_or_fallback(TAG_OPTIONS, tag, DEFAULT_TAG)
63
- @system_arguments[:classes] = class_names(
64
- "AvatarStack",
65
- system_arguments[:classes],
66
- "AvatarStack--right" => @align == :right
67
- )
68
- end
69
-
70
- def body_component
71
- if @tooltipped
72
- Primer::Tooltip.new(**@body_arguments)
73
- else
74
- Primer::BaseComponent.new(**@body_arguments)
75
- end
76
- end
77
-
78
- def before_render
79
- @system_arguments[:classes] = class_names(
80
- @system_arguments[:classes],
81
- "AvatarStack--two" => avatars.size == 2,
82
- "AvatarStack--three-plus" => avatars.size > 2
83
- )
84
- end
85
-
86
- def render?
87
- avatars.any?
88
- end
89
- end
90
- end