primer_view_components 0.0.39 → 0.0.44

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +269 -3
  3. data/app/assets/javascripts/primer_view_components.js +1 -1
  4. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  5. data/app/components/primer/alpha/button_marketing.rb +70 -0
  6. data/app/components/primer/auto_complete.rb +99 -41
  7. data/app/components/primer/auto_complete/auto_complete.html.erb +1 -0
  8. data/app/components/primer/avatar_stack_component.rb +7 -4
  9. data/app/components/primer/base_component.rb +17 -7
  10. data/app/components/primer/beta/text.rb +27 -0
  11. data/app/components/primer/blankslate_component.html.erb +1 -0
  12. data/app/components/primer/blankslate_component.rb +68 -49
  13. data/app/components/primer/button_component.rb +3 -2
  14. data/app/components/primer/button_group.rb +2 -2
  15. data/app/components/primer/clipboard_copy_component.js +13 -2
  16. data/app/components/primer/clipboard_copy_component.ts +15 -2
  17. data/app/components/primer/component.rb +6 -1
  18. data/app/components/primer/counter_component.rb +6 -1
  19. data/app/components/primer/details_component.rb +12 -1
  20. data/app/components/primer/dropdown.d.ts +1 -0
  21. data/app/components/primer/{dropdown_component.html.erb → dropdown.html.erb} +2 -1
  22. data/app/components/primer/dropdown.js +1 -0
  23. data/app/components/primer/dropdown.rb +149 -0
  24. data/app/components/primer/dropdown.ts +1 -0
  25. data/app/components/primer/dropdown/menu.d.ts +1 -0
  26. data/app/components/primer/dropdown/menu.html.erb +25 -0
  27. data/app/components/primer/dropdown/menu.js +1 -0
  28. data/app/components/primer/dropdown/menu.rb +99 -0
  29. data/app/components/primer/dropdown/menu.ts +1 -0
  30. data/app/components/primer/flash_component.rb +2 -2
  31. data/app/components/primer/flex_component.rb +27 -0
  32. data/app/components/primer/flex_item_component.rb +1 -1
  33. data/app/components/primer/heading_component.rb +11 -18
  34. data/app/components/primer/hidden_text_expander.rb +3 -3
  35. data/app/components/primer/icon_button.rb +20 -3
  36. data/app/components/primer/image.rb +46 -0
  37. data/app/components/primer/image_crop.d.ts +1 -0
  38. data/app/components/primer/image_crop.html.erb +12 -0
  39. data/app/components/primer/image_crop.js +1 -0
  40. data/app/components/primer/image_crop.rb +36 -0
  41. data/app/components/primer/image_crop.ts +1 -0
  42. data/app/components/primer/label_component.rb +6 -2
  43. data/app/components/primer/local_time.d.ts +1 -0
  44. data/app/components/primer/local_time.js +1 -0
  45. data/app/components/primer/local_time.rb +59 -0
  46. data/app/components/primer/local_time.ts +1 -0
  47. data/app/components/primer/{markdown_component.rb → markdown.rb} +11 -6
  48. data/app/components/primer/navigation/tab_component.rb +10 -3
  49. data/app/components/primer/octicon_component.html.erb +7 -0
  50. data/app/components/primer/octicon_component.rb +25 -15
  51. data/app/components/primer/octicon_symbols_component.html.erb +3 -0
  52. data/app/components/primer/octicon_symbols_component.rb +61 -0
  53. data/app/components/primer/primer.d.ts +3 -0
  54. data/app/components/primer/primer.js +3 -0
  55. data/app/components/primer/primer.ts +3 -0
  56. data/app/components/primer/spinner_component.rb +4 -2
  57. data/app/components/primer/subhead_component.rb +34 -4
  58. data/app/components/primer/tab_nav_component.html.erb +5 -1
  59. data/app/components/primer/tab_nav_component.rb +62 -9
  60. data/app/components/primer/{tooltip_component.rb → tooltip.rb} +10 -8
  61. data/app/components/primer/truncate.rb +6 -2
  62. data/app/components/primer/underline_nav_component.html.erb +1 -1
  63. data/app/components/primer/underline_nav_component.rb +17 -1
  64. data/app/lib/primer/classify.rb +21 -8
  65. data/app/lib/primer/classify/cache.rb +16 -1
  66. data/app/lib/primer/classify/grid.rb +45 -0
  67. data/app/lib/primer/octicon/cache.rb +4 -0
  68. data/app/lib/primer/tabbed_component_helper.rb +2 -2
  69. data/app/lib/primer/view_helper.rb +2 -1
  70. data/lib/primer/view_components.rb +1 -1
  71. data/lib/primer/view_components/engine.rb +2 -0
  72. data/lib/primer/view_components/linters.rb +3 -0
  73. data/lib/primer/view_components/linters/argument_mappers/button.rb +82 -0
  74. data/lib/primer/view_components/linters/argument_mappers/conversion_error.rb +10 -0
  75. data/lib/primer/view_components/linters/argument_mappers/system_arguments.rb +46 -0
  76. data/lib/primer/view_components/linters/button_component_migration_counter.rb +35 -0
  77. data/lib/primer/view_components/linters/flash_component_migration_counter.rb +16 -0
  78. data/lib/primer/view_components/linters/helpers.rb +93 -0
  79. data/lib/primer/view_components/version.rb +1 -1
  80. data/lib/tasks/coverage.rake +14 -0
  81. data/lib/tasks/docs.rake +387 -0
  82. data/lib/tasks/statuses.rake +12 -0
  83. data/lib/yard/docs_helper.rb +67 -0
  84. data/static/statuses.json +56 -1
  85. metadata +72 -13
  86. data/app/components/primer/button_marketing_component.rb +0 -68
  87. data/app/components/primer/dropdown/menu_component.html.erb +0 -12
  88. data/app/components/primer/dropdown/menu_component.rb +0 -46
  89. data/app/components/primer/dropdown_component.rb +0 -73
  90. data/app/components/primer/text_component.rb +0 -22
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :statuses do
4
+ task :dump do
5
+ require File.expand_path("./../../demo/config/environment.rb", __dir__)
6
+ require "primer/view_components"
7
+ # Loads all components for `.descendants` to work properly
8
+ Dir["./app/components/primer/**/*.rb"].sort.each { |file| require file }
9
+
10
+ Primer::ViewComponents.dump_statuses
11
+ end
12
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module YARD
4
+ # Helper methods to use for yard documentation
5
+ module DocsHelper
6
+ def one_of(enumerable, lower: false, sort: true)
7
+ # Sort the array if requested
8
+ if sort
9
+ compare = ->(a, b) { a.class == b.class ? a <=> b : a.class.to_s <=> b.class.to_s }
10
+ enumerable = enumerable.sort { |a, b| compare.call(a, b) }
11
+ end
12
+
13
+ values =
14
+ case enumerable
15
+ when Hash
16
+ enumerable.map do |key, value|
17
+ "#{pretty_value(key)} (#{pretty_value(value)})"
18
+ end
19
+ else
20
+ enumerable.map do |key|
21
+ pretty_value(key)
22
+ end
23
+ end
24
+
25
+ prefix = "One of"
26
+ prefix = prefix.downcase if lower
27
+
28
+ "#{prefix} #{values.to_sentence(last_word_connector: ', or ')}."
29
+ end
30
+
31
+ def link_to_accessibility
32
+ "[Accessibility](#system-arguments)"
33
+ end
34
+
35
+ def link_to_system_arguments_docs
36
+ "[System arguments](/system-arguments)"
37
+ end
38
+
39
+ def link_to_typography_docs
40
+ "[Typography](/system-arguments#typography)"
41
+ end
42
+
43
+ def link_to_component(component)
44
+ short_name = component.name.gsub(/Primer|::|Component/, "")
45
+ "[#{short_name}](/components/#{short_name.downcase})"
46
+ end
47
+
48
+ def link_to_octicons
49
+ "[Octicon](https://primer.style/octicons/)"
50
+ end
51
+
52
+ def link_to_heading_practices
53
+ "[Learn more about best heading practices (WAI Headings)](https://www.w3.org/WAI/tutorials/page-structure/headings/)"
54
+ end
55
+
56
+ def pretty_value(val)
57
+ case val
58
+ when nil
59
+ "`nil`"
60
+ when Symbol
61
+ "`:#{val}`"
62
+ else
63
+ "`#{val}`"
64
+ end
65
+ end
66
+ end
67
+ end
data/static/statuses.json CHANGED
@@ -1 +1,56 @@
1
- {"Primer::AutoComplete":"beta","Primer::AutoComplete::Item":"beta","Primer::AvatarComponent":"beta","Primer::AvatarStackComponent":"beta","Primer::BaseButton":"beta","Primer::BaseComponent":"beta","Primer::BlankslateComponent":"beta","Primer::BorderBoxComponent":"beta","Primer::BoxComponent":"stable","Primer::BreadcrumbComponent":"beta","Primer::BreadcrumbComponent::ItemComponent":"alpha","Primer::ButtonComponent":"beta","Primer::ButtonGroup":"beta","Primer::ButtonMarketingComponent":"alpha","Primer::ClipboardCopy":"alpha","Primer::CloseButton":"beta","Primer::CounterComponent":"beta","Primer::DetailsComponent":"beta","Primer::Dropdown::MenuComponent":"alpha","Primer::DropdownComponent":"alpha","Primer::DropdownMenuComponent":"deprecated","Primer::FlashComponent":"beta","Primer::FlexComponent":"alpha","Primer::FlexItemComponent":"deprecated","Primer::HeadingComponent":"beta","Primer::HiddenTextExpander":"alpha","Primer::IconButton":"alpha","Primer::LabelComponent":"beta","Primer::LayoutComponent":"alpha","Primer::LinkComponent":"beta","Primer::MarkdownComponent":"alpha","Primer::MenuComponent":"alpha","Primer::Navigation::TabComponent":"alpha","Primer::OcticonComponent":"beta","Primer::PopoverComponent":"beta","Primer::ProgressBarComponent":"beta","Primer::SpinnerComponent":"beta","Primer::StateComponent":"beta","Primer::SubheadComponent":"beta","Primer::TabContainerComponent":"alpha","Primer::TabNavComponent":"alpha","Primer::TextComponent":"beta","Primer::TimeAgoComponent":"beta","Primer::TimelineItemComponent":"beta","Primer::TimelineItemComponent::BadgeComponent":"alpha","Primer::TooltipComponent":"alpha","Primer::Truncate":"beta","Primer::UnderlineNavComponent":"alpha"}
1
+ {
2
+ "Primer::Alpha::ButtonMarketing": "alpha",
3
+ "Primer::AutoComplete": "beta",
4
+ "Primer::AutoComplete::Input": "alpha",
5
+ "Primer::AutoComplete::Item": "beta",
6
+ "Primer::AvatarComponent": "beta",
7
+ "Primer::AvatarStackComponent": "beta",
8
+ "Primer::BaseButton": "beta",
9
+ "Primer::BaseComponent": "beta",
10
+ "Primer::Beta::Text": "beta",
11
+ "Primer::BlankslateComponent": "beta",
12
+ "Primer::BorderBoxComponent": "beta",
13
+ "Primer::BoxComponent": "stable",
14
+ "Primer::BreadcrumbComponent": "beta",
15
+ "Primer::BreadcrumbComponent::ItemComponent": "alpha",
16
+ "Primer::ButtonComponent": "beta",
17
+ "Primer::ButtonGroup": "beta",
18
+ "Primer::ClipboardCopy": "alpha",
19
+ "Primer::CloseButton": "beta",
20
+ "Primer::CounterComponent": "beta",
21
+ "Primer::DetailsComponent": "beta",
22
+ "Primer::Dropdown": "alpha",
23
+ "Primer::Dropdown::Menu": "alpha",
24
+ "Primer::Dropdown::Menu::Item": "alpha",
25
+ "Primer::DropdownMenuComponent": "deprecated",
26
+ "Primer::FlashComponent": "beta",
27
+ "Primer::FlexComponent": "deprecated",
28
+ "Primer::FlexItemComponent": "deprecated",
29
+ "Primer::HeadingComponent": "beta",
30
+ "Primer::HiddenTextExpander": "alpha",
31
+ "Primer::IconButton": "beta",
32
+ "Primer::Image": "alpha",
33
+ "Primer::ImageCrop": "alpha",
34
+ "Primer::LabelComponent": "beta",
35
+ "Primer::LayoutComponent": "alpha",
36
+ "Primer::LinkComponent": "beta",
37
+ "Primer::LocalTime": "alpha",
38
+ "Primer::Markdown": "beta",
39
+ "Primer::MenuComponent": "alpha",
40
+ "Primer::Navigation::TabComponent": "alpha",
41
+ "Primer::OcticonComponent": "beta",
42
+ "Primer::OcticonSymbolsComponent": "alpha",
43
+ "Primer::PopoverComponent": "beta",
44
+ "Primer::ProgressBarComponent": "beta",
45
+ "Primer::SpinnerComponent": "beta",
46
+ "Primer::StateComponent": "beta",
47
+ "Primer::SubheadComponent": "beta",
48
+ "Primer::TabContainerComponent": "alpha",
49
+ "Primer::TabNavComponent": "beta",
50
+ "Primer::TimeAgoComponent": "beta",
51
+ "Primer::TimelineItemComponent": "beta",
52
+ "Primer::TimelineItemComponent::BadgeComponent": "alpha",
53
+ "Primer::Tooltip": "beta",
54
+ "Primer::Truncate": "beta",
55
+ "Primer::UnderlineNavComponent": "alpha"
56
+ }
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.39
4
+ version: 0.0.44
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-04-29 00:00:00.000000000 Z
11
+ date: 2021-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -86,6 +86,20 @@ dependencies:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 0.6.3
89
+ - !ruby/object:Gem::Dependency
90
+ name: axe-core-api
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '4.1'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '4.1'
89
103
  - !ruby/object:Gem::Dependency
90
104
  name: benchmark-ips
91
105
  requirement: !ruby/object:Gem::Requirement
@@ -120,14 +134,28 @@ dependencies:
120
134
  requirements:
121
135
  - - '='
122
136
  - !ruby/object:Gem::Version
123
- version: '0.11'
137
+ version: '0.13'
124
138
  type: :development
125
139
  prerelease: false
126
140
  version_requirements: !ruby/object:Gem::Requirement
127
141
  requirements:
128
142
  - - '='
129
143
  - !ruby/object:Gem::Version
130
- version: '0.11'
144
+ version: '0.13'
145
+ - !ruby/object:Gem::Dependency
146
+ name: erb_lint
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
131
159
  - !ruby/object:Gem::Dependency
132
160
  name: listen
133
161
  requirement: !ruby/object:Gem::Requirement
@@ -322,6 +350,7 @@ files:
322
350
  - README.md
323
351
  - app/assets/javascripts/primer_view_components.js
324
352
  - app/assets/javascripts/primer_view_components.js.map
353
+ - app/components/primer/alpha/button_marketing.rb
325
354
  - app/components/primer/auto_complete.rb
326
355
  - app/components/primer/auto_complete/auto_complete.d.ts
327
356
  - app/components/primer/auto_complete/auto_complete.html.erb
@@ -335,6 +364,7 @@ files:
335
364
  - app/components/primer/avatar_stack_component.rb
336
365
  - app/components/primer/base_button.rb
337
366
  - app/components/primer/base_component.rb
367
+ - app/components/primer/beta/text.rb
338
368
  - app/components/primer/blankslate_component.html.erb
339
369
  - app/components/primer/blankslate_component.rb
340
370
  - app/components/primer/border_box_component.html.erb
@@ -346,7 +376,6 @@ files:
346
376
  - app/components/primer/button_component.rb
347
377
  - app/components/primer/button_group.html.erb
348
378
  - app/components/primer/button_group.rb
349
- - app/components/primer/button_marketing_component.rb
350
379
  - app/components/primer/clipboard_copy.html.erb
351
380
  - app/components/primer/clipboard_copy.rb
352
381
  - app/components/primer/clipboard_copy_component.d.ts
@@ -357,10 +386,16 @@ files:
357
386
  - app/components/primer/counter_component.rb
358
387
  - app/components/primer/details_component.html.erb
359
388
  - app/components/primer/details_component.rb
360
- - app/components/primer/dropdown/menu_component.html.erb
361
- - app/components/primer/dropdown/menu_component.rb
362
- - app/components/primer/dropdown_component.html.erb
363
- - app/components/primer/dropdown_component.rb
389
+ - app/components/primer/dropdown.d.ts
390
+ - app/components/primer/dropdown.html.erb
391
+ - app/components/primer/dropdown.js
392
+ - app/components/primer/dropdown.rb
393
+ - app/components/primer/dropdown.ts
394
+ - app/components/primer/dropdown/menu.d.ts
395
+ - app/components/primer/dropdown/menu.html.erb
396
+ - app/components/primer/dropdown/menu.js
397
+ - app/components/primer/dropdown/menu.rb
398
+ - app/components/primer/dropdown/menu.ts
364
399
  - app/components/primer/dropdown_menu_component.html.erb
365
400
  - app/components/primer/dropdown_menu_component.rb
366
401
  - app/components/primer/flash_component.html.erb
@@ -370,16 +405,29 @@ files:
370
405
  - app/components/primer/heading_component.rb
371
406
  - app/components/primer/hidden_text_expander.rb
372
407
  - app/components/primer/icon_button.rb
408
+ - app/components/primer/image.rb
409
+ - app/components/primer/image_crop.d.ts
410
+ - app/components/primer/image_crop.html.erb
411
+ - app/components/primer/image_crop.js
412
+ - app/components/primer/image_crop.rb
413
+ - app/components/primer/image_crop.ts
373
414
  - app/components/primer/label_component.rb
374
415
  - app/components/primer/layout_component.html.erb
375
416
  - app/components/primer/layout_component.rb
376
417
  - app/components/primer/link_component.rb
377
- - app/components/primer/markdown_component.rb
418
+ - app/components/primer/local_time.d.ts
419
+ - app/components/primer/local_time.js
420
+ - app/components/primer/local_time.rb
421
+ - app/components/primer/local_time.ts
422
+ - app/components/primer/markdown.rb
378
423
  - app/components/primer/menu_component.html.erb
379
424
  - app/components/primer/menu_component.rb
380
425
  - app/components/primer/navigation/tab_component.html.erb
381
426
  - app/components/primer/navigation/tab_component.rb
427
+ - app/components/primer/octicon_component.html.erb
382
428
  - app/components/primer/octicon_component.rb
429
+ - app/components/primer/octicon_symbols_component.html.erb
430
+ - app/components/primer/octicon_symbols_component.rb
383
431
  - app/components/primer/popover_component.html.erb
384
432
  - app/components/primer/popover_component.rb
385
433
  - app/components/primer/primer.d.ts
@@ -398,14 +446,13 @@ files:
398
446
  - app/components/primer/tab_container_component.ts
399
447
  - app/components/primer/tab_nav_component.html.erb
400
448
  - app/components/primer/tab_nav_component.rb
401
- - app/components/primer/text_component.rb
402
449
  - app/components/primer/time_ago_component.d.ts
403
450
  - app/components/primer/time_ago_component.js
404
451
  - app/components/primer/time_ago_component.rb
405
452
  - app/components/primer/time_ago_component.ts
406
453
  - app/components/primer/timeline_item_component.html.erb
407
454
  - app/components/primer/timeline_item_component.rb
408
- - app/components/primer/tooltip_component.rb
455
+ - app/components/primer/tooltip.rb
409
456
  - app/components/primer/truncate.rb
410
457
  - app/components/primer/underline_nav_component.html.erb
411
458
  - app/components/primer/underline_nav_component.rb
@@ -417,6 +464,7 @@ files:
417
464
  - app/lib/primer/classify/functional_border_colors.rb
418
465
  - app/lib/primer/classify/functional_colors.rb
419
466
  - app/lib/primer/classify/functional_text_colors.rb
467
+ - app/lib/primer/classify/grid.rb
420
468
  - app/lib/primer/classify/spacing.rb
421
469
  - app/lib/primer/fetch_or_fallback_helper.rb
422
470
  - app/lib/primer/join_style_arguments_helper.rb
@@ -427,7 +475,18 @@ files:
427
475
  - app/lib/primer/view_helper.rb
428
476
  - lib/primer/view_components.rb
429
477
  - lib/primer/view_components/engine.rb
478
+ - lib/primer/view_components/linters.rb
479
+ - lib/primer/view_components/linters/argument_mappers/button.rb
480
+ - lib/primer/view_components/linters/argument_mappers/conversion_error.rb
481
+ - lib/primer/view_components/linters/argument_mappers/system_arguments.rb
482
+ - lib/primer/view_components/linters/button_component_migration_counter.rb
483
+ - lib/primer/view_components/linters/flash_component_migration_counter.rb
484
+ - lib/primer/view_components/linters/helpers.rb
430
485
  - lib/primer/view_components/version.rb
486
+ - lib/tasks/coverage.rake
487
+ - lib/tasks/docs.rake
488
+ - lib/tasks/statuses.rake
489
+ - lib/yard/docs_helper.rb
431
490
  - lib/yard/renders_many_handler.rb
432
491
  - lib/yard/renders_one_handler.rb
433
492
  - static/statuses.json
@@ -451,7 +510,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
451
510
  - !ruby/object:Gem::Version
452
511
  version: '0'
453
512
  requirements: []
454
- rubygems_version: 3.1.2
513
+ rubygems_version: 3.0.3
455
514
  signing_key:
456
515
  specification_version: 4
457
516
  summary: ViewComponents for the Primer Design System
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Primer
4
- # Use `ButtonMarketing` for actions (e.g. in forms). Use links for destinations, or moving from one page to another.
5
- class ButtonMarketingComponent < Primer::Component
6
- DEFAULT_SCHEME = :default
7
- SCHEME_MAPPINGS = {
8
- DEFAULT_SCHEME => "",
9
- :primary => "btn-primary-mktg",
10
- :outline => "btn-outline-mktg",
11
- :transparent => "btn-transparent"
12
- }.freeze
13
- SCHEME_OPTIONS = SCHEME_MAPPINGS.keys
14
-
15
- DEFAULT_VARIANT = :default
16
- VARIANT_MAPPINGS = {
17
- DEFAULT_VARIANT => "",
18
- :large => "btn-large-mktg"
19
- }.freeze
20
- VARIANT_OPTIONS = VARIANT_MAPPINGS.keys
21
-
22
- DEFAULT_TAG = :button
23
- TAG_OPTIONS = [DEFAULT_TAG, :a].freeze
24
-
25
- DEFAULT_TYPE = :button
26
- TYPE_OPTIONS = [DEFAULT_TYPE, :submit].freeze
27
-
28
- # @example Schemes
29
- # <%= render(Primer::ButtonMarketingComponent.new(mr: 2)) { "Default" } %>
30
- # <%= render(Primer::ButtonMarketingComponent.new(scheme: :primary, mr: 2)) { "Primary" } %>
31
- # <%= render(Primer::ButtonMarketingComponent.new(scheme: :outline)) { "Outline" } %>
32
- # <div class="color-bg-canvas-inverse">
33
- # <%= render(Primer::ButtonMarketingComponent.new(scheme: :transparent)) { "Transparent" } %>
34
- # </div>
35
- #
36
- # @example Sizes
37
- # <%= render(Primer::ButtonMarketingComponent.new(mr: 2)) { "Default" } %>
38
- # <%= render(Primer::ButtonMarketingComponent.new(variant: :large)) { "Large" } %>
39
- #
40
- # @param scheme [Symbol] <%= one_of(Primer::ButtonMarketingComponent::SCHEME_OPTIONS) %>
41
- # @param variant [Symbol] <%= one_of(Primer::ButtonMarketingComponent::VARIANT_OPTIONS) %>
42
- # @param tag [Symbol] <%= one_of(Primer::ButtonMarketingComponent::TAG_OPTIONS) %>
43
- # @param type [Symbol] <%= one_of(Primer::ButtonMarketingComponent::TYPE_OPTIONS) %>
44
- # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
45
- def initialize(
46
- scheme: DEFAULT_SCHEME,
47
- variant: DEFAULT_VARIANT,
48
- tag: DEFAULT_TAG,
49
- type: DEFAULT_TYPE,
50
- **system_arguments
51
- )
52
- @system_arguments = system_arguments
53
- @system_arguments[:block] = false
54
- @system_arguments[:tag] = fetch_or_fallback(TAG_OPTIONS, tag, DEFAULT_TAG)
55
- @system_arguments[:type] = fetch_or_fallback(TYPE_OPTIONS, type, DEFAULT_TYPE)
56
- @system_arguments[:classes] = class_names(
57
- "btn-mktg",
58
- SCHEME_MAPPINGS[fetch_or_fallback(SCHEME_OPTIONS, scheme, DEFAULT_SCHEME)],
59
- VARIANT_MAPPINGS[fetch_or_fallback(VARIANT_OPTIONS, variant, DEFAULT_VARIANT)],
60
- system_arguments[:classes]
61
- )
62
- end
63
-
64
- def call
65
- render(Primer::BaseButton.new(**@system_arguments)) { content }
66
- end
67
- end
68
- end
@@ -1,12 +0,0 @@
1
- <%= render Primer::BaseComponent.new(**@system_arguments) do %>
2
- <% if @header.present? %>
3
- <div class="dropdown-header">
4
- <%= @header %>
5
- </div>
6
- <% end %>
7
- <ul>
8
- <% items.each do |item| %>
9
- <%= item %>
10
- <% end %>
11
- </ul>
12
- <% end %>
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Primer
4
- module Dropdown
5
- # This component is part of `Dropdown` and should not be
6
- # used as a standalone component.
7
- class MenuComponent < Primer::Component
8
- SCHEME_DEFAULT = :default
9
- SCHEME_MAPPINGS = {
10
- SCHEME_DEFAULT => "",
11
- :dark => "dropdown-menu-dark"
12
- }.freeze
13
-
14
- DIRECTION_DEFAULT = :se
15
- DIRECTION_OPTIONS = [DIRECTION_DEFAULT, :sw, :w, :e, :ne, :s].freeze
16
-
17
- renders_many :items, lambda { |divider: false, **system_arguments|
18
- system_arguments[:tag] = :li
19
- system_arguments[:role] = :none if divider
20
- system_arguments[:classes] = class_names(
21
- system_arguments[:classes],
22
- "dropdown-item" => !divider,
23
- "dropdown-divider" => divider
24
- )
25
-
26
- Primer::BaseComponent.new(**system_arguments)
27
- }
28
-
29
- def initialize(direction: DIRECTION_DEFAULT, scheme: SCHEME_DEFAULT, header: nil, **system_arguments)
30
- @header = header
31
- @direction = direction
32
- @system_arguments = system_arguments
33
-
34
- @system_arguments[:tag] = "details-menu"
35
- @system_arguments[:role] = "menu"
36
-
37
- @system_arguments[:classes] = class_names(
38
- @system_arguments[:classes],
39
- "dropdown-menu",
40
- "dropdown-menu-#{fetch_or_fallback(DIRECTION_OPTIONS, direction, DIRECTION_DEFAULT)}",
41
- SCHEME_MAPPINGS[fetch_or_fallback(SCHEME_MAPPINGS.keys, scheme, SCHEME_DEFAULT)]
42
- )
43
- end
44
- end
45
- end
46
- end