primer_view_components 0.0.43 → 0.0.44
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 +52 -4
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- data/app/components/primer/alpha/button_marketing.rb +70 -0
- data/app/components/primer/auto_complete.rb +97 -41
- data/app/components/primer/auto_complete/auto_complete.html.erb +1 -0
- data/app/components/primer/beta/text.rb +27 -0
- data/app/components/primer/blankslate_component.rb +2 -1
- data/app/components/primer/button_component.rb +3 -2
- data/app/components/primer/details_component.rb +12 -1
- data/app/components/primer/dropdown.d.ts +1 -0
- data/app/components/primer/{dropdown_component.html.erb → dropdown.html.erb} +2 -1
- data/app/components/primer/dropdown.js +1 -0
- data/app/components/primer/dropdown.rb +149 -0
- data/app/components/primer/dropdown.ts +1 -0
- data/app/components/primer/dropdown/menu.d.ts +1 -0
- data/app/components/primer/dropdown/menu.html.erb +25 -0
- data/app/components/primer/dropdown/menu.js +1 -0
- data/app/components/primer/dropdown/menu.rb +99 -0
- data/app/components/primer/dropdown/menu.ts +1 -0
- data/app/components/primer/heading_component.rb +1 -1
- data/app/components/primer/icon_button.rb +1 -1
- data/app/components/primer/navigation/tab_component.rb +2 -2
- data/app/components/primer/octicon_component.rb +3 -2
- data/app/components/primer/primer.d.ts +1 -0
- data/app/components/primer/primer.js +1 -0
- data/app/components/primer/primer.ts +1 -0
- data/app/components/primer/spinner_component.rb +2 -0
- data/lib/primer/view_components/linters/argument_mappers/button.rb +82 -0
- data/lib/primer/view_components/linters/argument_mappers/conversion_error.rb +10 -0
- data/lib/primer/view_components/linters/argument_mappers/system_arguments.rb +46 -0
- data/lib/primer/view_components/linters/button_component_migration_counter.rb +20 -1
- data/lib/primer/view_components/linters/flash_component_migration_counter.rb +1 -1
- data/lib/primer/view_components/linters/helpers.rb +7 -3
- data/lib/primer/view_components/version.rb +1 -1
- data/lib/tasks/docs.rake +111 -96
- data/lib/yard/docs_helper.rb +12 -2
- data/static/statuses.json +6 -4
- metadata +17 -8
- data/app/components/primer/button_marketing_component.rb +0 -68
- data/app/components/primer/dropdown/menu_component.html.erb +0 -12
- data/app/components/primer/dropdown/menu_component.rb +0 -46
- data/app/components/primer/dropdown_component.rb +0 -73
- data/app/components/primer/text_component.rb +0 -25
    
        data/lib/yard/docs_helper.rb
    CHANGED
    
    | @@ -3,7 +3,13 @@ | |
| 3 3 | 
             
            module YARD
         | 
| 4 4 | 
             
              # Helper methods to use for yard documentation
         | 
| 5 5 | 
             
              module DocsHelper
         | 
| 6 | 
            -
                def one_of(enumerable, lower: false)
         | 
| 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 | 
            +
             | 
| 7 13 | 
             
                  values =
         | 
| 8 14 | 
             
                    case enumerable
         | 
| 9 15 | 
             
                    when Hash
         | 
| @@ -14,7 +20,7 @@ module YARD | |
| 14 20 | 
             
                      enumerable.map do |key|
         | 
| 15 21 | 
             
                        pretty_value(key)
         | 
| 16 22 | 
             
                      end
         | 
| 17 | 
            -
             | 
| 23 | 
            +
                    end
         | 
| 18 24 |  | 
| 19 25 | 
             
                  prefix = "One of"
         | 
| 20 26 | 
             
                  prefix = prefix.downcase if lower
         | 
| @@ -22,6 +28,10 @@ module YARD | |
| 22 28 | 
             
                  "#{prefix} #{values.to_sentence(last_word_connector: ', or ')}."
         | 
| 23 29 | 
             
                end
         | 
| 24 30 |  | 
| 31 | 
            +
                def link_to_accessibility
         | 
| 32 | 
            +
                  "[Accessibility](#system-arguments)"
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 25 35 | 
             
                def link_to_system_arguments_docs
         | 
| 26 36 | 
             
                  "[System arguments](/system-arguments)"
         | 
| 27 37 | 
             
                end
         | 
    
        data/static/statuses.json
    CHANGED
    
    | @@ -1,10 +1,13 @@ | |
| 1 1 | 
             
            {
         | 
| 2 | 
            +
              "Primer::Alpha::ButtonMarketing": "alpha",
         | 
| 2 3 | 
             
              "Primer::AutoComplete": "beta",
         | 
| 4 | 
            +
              "Primer::AutoComplete::Input": "alpha",
         | 
| 3 5 | 
             
              "Primer::AutoComplete::Item": "beta",
         | 
| 4 6 | 
             
              "Primer::AvatarComponent": "beta",
         | 
| 5 7 | 
             
              "Primer::AvatarStackComponent": "beta",
         | 
| 6 8 | 
             
              "Primer::BaseButton": "beta",
         | 
| 7 9 | 
             
              "Primer::BaseComponent": "beta",
         | 
| 10 | 
            +
              "Primer::Beta::Text": "beta",
         | 
| 8 11 | 
             
              "Primer::BlankslateComponent": "beta",
         | 
| 9 12 | 
             
              "Primer::BorderBoxComponent": "beta",
         | 
| 10 13 | 
             
              "Primer::BoxComponent": "stable",
         | 
| @@ -12,13 +15,13 @@ | |
| 12 15 | 
             
              "Primer::BreadcrumbComponent::ItemComponent": "alpha",
         | 
| 13 16 | 
             
              "Primer::ButtonComponent": "beta",
         | 
| 14 17 | 
             
              "Primer::ButtonGroup": "beta",
         | 
| 15 | 
            -
              "Primer::ButtonMarketingComponent": "alpha",
         | 
| 16 18 | 
             
              "Primer::ClipboardCopy": "alpha",
         | 
| 17 19 | 
             
              "Primer::CloseButton": "beta",
         | 
| 18 20 | 
             
              "Primer::CounterComponent": "beta",
         | 
| 19 21 | 
             
              "Primer::DetailsComponent": "beta",
         | 
| 20 | 
            -
              "Primer::Dropdown | 
| 21 | 
            -
              "Primer:: | 
| 22 | 
            +
              "Primer::Dropdown": "alpha",
         | 
| 23 | 
            +
              "Primer::Dropdown::Menu": "alpha",
         | 
| 24 | 
            +
              "Primer::Dropdown::Menu::Item": "alpha",
         | 
| 22 25 | 
             
              "Primer::DropdownMenuComponent": "deprecated",
         | 
| 23 26 | 
             
              "Primer::FlashComponent": "beta",
         | 
| 24 27 | 
             
              "Primer::FlexComponent": "deprecated",
         | 
| @@ -44,7 +47,6 @@ | |
| 44 47 | 
             
              "Primer::SubheadComponent": "beta",
         | 
| 45 48 | 
             
              "Primer::TabContainerComponent": "alpha",
         | 
| 46 49 | 
             
              "Primer::TabNavComponent": "beta",
         | 
| 47 | 
            -
              "Primer::TextComponent": "beta",
         | 
| 48 50 | 
             
              "Primer::TimeAgoComponent": "beta",
         | 
| 49 51 | 
             
              "Primer::TimelineItemComponent": "beta",
         | 
| 50 52 | 
             
              "Primer::TimelineItemComponent::BadgeComponent": "alpha",
         | 
    
        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.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-06- | 
| 11 | 
            +
            date: 2021-06-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: actionview
         | 
| @@ -350,6 +350,7 @@ files: | |
| 350 350 | 
             
            - README.md
         | 
| 351 351 | 
             
            - app/assets/javascripts/primer_view_components.js
         | 
| 352 352 | 
             
            - app/assets/javascripts/primer_view_components.js.map
         | 
| 353 | 
            +
            - app/components/primer/alpha/button_marketing.rb
         | 
| 353 354 | 
             
            - app/components/primer/auto_complete.rb
         | 
| 354 355 | 
             
            - app/components/primer/auto_complete/auto_complete.d.ts
         | 
| 355 356 | 
             
            - app/components/primer/auto_complete/auto_complete.html.erb
         | 
| @@ -363,6 +364,7 @@ files: | |
| 363 364 | 
             
            - app/components/primer/avatar_stack_component.rb
         | 
| 364 365 | 
             
            - app/components/primer/base_button.rb
         | 
| 365 366 | 
             
            - app/components/primer/base_component.rb
         | 
| 367 | 
            +
            - app/components/primer/beta/text.rb
         | 
| 366 368 | 
             
            - app/components/primer/blankslate_component.html.erb
         | 
| 367 369 | 
             
            - app/components/primer/blankslate_component.rb
         | 
| 368 370 | 
             
            - app/components/primer/border_box_component.html.erb
         | 
| @@ -374,7 +376,6 @@ files: | |
| 374 376 | 
             
            - app/components/primer/button_component.rb
         | 
| 375 377 | 
             
            - app/components/primer/button_group.html.erb
         | 
| 376 378 | 
             
            - app/components/primer/button_group.rb
         | 
| 377 | 
            -
            - app/components/primer/button_marketing_component.rb
         | 
| 378 379 | 
             
            - app/components/primer/clipboard_copy.html.erb
         | 
| 379 380 | 
             
            - app/components/primer/clipboard_copy.rb
         | 
| 380 381 | 
             
            - app/components/primer/clipboard_copy_component.d.ts
         | 
| @@ -385,10 +386,16 @@ files: | |
| 385 386 | 
             
            - app/components/primer/counter_component.rb
         | 
| 386 387 | 
             
            - app/components/primer/details_component.html.erb
         | 
| 387 388 | 
             
            - app/components/primer/details_component.rb
         | 
| 388 | 
            -
            - app/components/primer/dropdown | 
| 389 | 
            -
            - app/components/primer/dropdown | 
| 390 | 
            -
            - app/components/primer/ | 
| 391 | 
            -
            - app/components/primer/ | 
| 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
         | 
| 392 399 | 
             
            - app/components/primer/dropdown_menu_component.html.erb
         | 
| 393 400 | 
             
            - app/components/primer/dropdown_menu_component.rb
         | 
| 394 401 | 
             
            - app/components/primer/flash_component.html.erb
         | 
| @@ -439,7 +446,6 @@ files: | |
| 439 446 | 
             
            - app/components/primer/tab_container_component.ts
         | 
| 440 447 | 
             
            - app/components/primer/tab_nav_component.html.erb
         | 
| 441 448 | 
             
            - app/components/primer/tab_nav_component.rb
         | 
| 442 | 
            -
            - app/components/primer/text_component.rb
         | 
| 443 449 | 
             
            - app/components/primer/time_ago_component.d.ts
         | 
| 444 450 | 
             
            - app/components/primer/time_ago_component.js
         | 
| 445 451 | 
             
            - app/components/primer/time_ago_component.rb
         | 
| @@ -470,6 +476,9 @@ files: | |
| 470 476 | 
             
            - lib/primer/view_components.rb
         | 
| 471 477 | 
             
            - lib/primer/view_components/engine.rb
         | 
| 472 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
         | 
| 473 482 | 
             
            - lib/primer/view_components/linters/button_component_migration_counter.rb
         | 
| 474 483 | 
             
            - lib/primer/view_components/linters/flash_component_migration_counter.rb
         | 
| 475 484 | 
             
            - lib/primer/view_components/linters/helpers.rb
         | 
| @@ -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,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
         | 
| @@ -1,73 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Primer
         | 
| 4 | 
            -
              # `Dropdown` is a lightweight context menu for housing navigation and actions.
         | 
| 5 | 
            -
              # They're great for instances where you don't need the full power (and code) of the select menu.
         | 
| 6 | 
            -
              class DropdownComponent < Primer::Component
         | 
| 7 | 
            -
                # Required trigger for the dropdown. Only accepts a content.
         | 
| 8 | 
            -
                # Its classes can be customized by the `summary_classes` param in the parent component
         | 
| 9 | 
            -
                renders_one :button
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                # Required context menu for the dropdown
         | 
| 12 | 
            -
                #
         | 
| 13 | 
            -
                # @param direction [Symbol] <%= one_of(Primer::Dropdown::MenuComponent::DIRECTION_OPTIONS) %>
         | 
| 14 | 
            -
                # @param scheme [Symbol] Pass `:dark` for dark mode theming
         | 
| 15 | 
            -
                # @param header [String] Optional string to display as the header
         | 
| 16 | 
            -
                # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
         | 
| 17 | 
            -
                renders_one :menu, Primer::Dropdown::MenuComponent
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                # @example Default
         | 
| 20 | 
            -
                #   <div>
         | 
| 21 | 
            -
                #     <%= render(Primer::DropdownComponent.new) do |c| %>
         | 
| 22 | 
            -
                #       <% c.button do %>
         | 
| 23 | 
            -
                #         Dropdown
         | 
| 24 | 
            -
                #       <% end %>
         | 
| 25 | 
            -
                #
         | 
| 26 | 
            -
                #       <%= c.menu(header: "Options") do |menu|
         | 
| 27 | 
            -
                #         menu.item { "Item 1" }
         | 
| 28 | 
            -
                #         menu.item { "Item 2" }
         | 
| 29 | 
            -
                #         menu.item(divider: true)
         | 
| 30 | 
            -
                #         menu.item { "Item 3" }
         | 
| 31 | 
            -
                #         menu.item { "Item 4" }
         | 
| 32 | 
            -
                #       end %>
         | 
| 33 | 
            -
                #     <% end %>
         | 
| 34 | 
            -
                #   </div>
         | 
| 35 | 
            -
                #
         | 
| 36 | 
            -
                # @example With Direction
         | 
| 37 | 
            -
                #   <div>
         | 
| 38 | 
            -
                #     <%= render(Primer::DropdownComponent.new) do |c| %>
         | 
| 39 | 
            -
                #       <% c.button do %>
         | 
| 40 | 
            -
                #         Dropdown
         | 
| 41 | 
            -
                #       <% end %>
         | 
| 42 | 
            -
                #
         | 
| 43 | 
            -
                #       <%= c.menu(header: "Options", direction: :s) do |menu|
         | 
| 44 | 
            -
                #         menu.item { "Item 1" }
         | 
| 45 | 
            -
                #         menu.item { "Item 2" }
         | 
| 46 | 
            -
                #         menu.item(divider: true)
         | 
| 47 | 
            -
                #         menu.item { "Item 3" }
         | 
| 48 | 
            -
                #         menu.item { "Item 4" }
         | 
| 49 | 
            -
                #       end %>
         | 
| 50 | 
            -
                #     <% end %>
         | 
| 51 | 
            -
                #   </div>
         | 
| 52 | 
            -
                #
         | 
| 53 | 
            -
                # @param overlay [Symbol] <%= one_of(Primer::DetailsComponent::OVERLAY_MAPPINGS.keys) %>
         | 
| 54 | 
            -
                # @param reset [Boolean] Whether to hide the default caret on the button
         | 
| 55 | 
            -
                # @param summary_classes [String] Custom classes to add to the button
         | 
| 56 | 
            -
                # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
         | 
| 57 | 
            -
                def initialize(overlay: :default, reset: true, summary_classes: "", **system_arguments)
         | 
| 58 | 
            -
                  @system_arguments = system_arguments
         | 
| 59 | 
            -
                  @system_arguments[:overlay] = overlay
         | 
| 60 | 
            -
                  @system_arguments[:reset] = reset
         | 
| 61 | 
            -
                  @system_arguments[:position] = :relative
         | 
| 62 | 
            -
                  @system_arguments[:classes] = class_names(
         | 
| 63 | 
            -
                    @system_arguments[:classes],
         | 
| 64 | 
            -
                    "dropdown"
         | 
| 65 | 
            -
                  )
         | 
| 66 | 
            -
                  @summary_classes = summary_classes
         | 
| 67 | 
            -
                end
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                def render?
         | 
| 70 | 
            -
                  button.present? && menu.present?
         | 
| 71 | 
            -
                end
         | 
| 72 | 
            -
              end
         | 
| 73 | 
            -
            end
         | 
| @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Primer
         | 
| 4 | 
            -
              # `Text` is a wrapper component that will apply typography styles to the text inside.
         | 
| 5 | 
            -
              class TextComponent < Primer::Component
         | 
| 6 | 
            -
                status :beta
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                DEFAULT_TAG = :span
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                # @example Default
         | 
| 11 | 
            -
                #   <%= render(Primer::TextComponent.new(tag: :p, font_weight: :bold)) { "Bold Text" } %>
         | 
| 12 | 
            -
                #   <%= render(Primer::TextComponent.new(tag: :p, color: :text_danger)) { "Danger Text" } %>
         | 
| 13 | 
            -
                #
         | 
| 14 | 
            -
                # @param tag [Symbol]
         | 
| 15 | 
            -
                # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
         | 
| 16 | 
            -
                def initialize(tag: DEFAULT_TAG, **system_arguments)
         | 
| 17 | 
            -
                  @system_arguments = system_arguments
         | 
| 18 | 
            -
                  @system_arguments[:tag] = tag
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                def call
         | 
| 22 | 
            -
                  render(Primer::BaseComponent.new(**@system_arguments)) { content }
         | 
| 23 | 
            -
                end
         | 
| 24 | 
            -
              end
         | 
| 25 | 
            -
            end
         |