x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<div data-view-component="true" class="ButtonGroup"> <div> <button type="button" data-view-component="true" class="Button--secondary Button--medium Button"> <span class="Button-content"> <span class="Button-label">Main menu</span> </span> </button> </div> <div> <action-menu data-select-variant="none" data-view-component="true"> <focus-group direction="vertical" mnemonics retain> <button id="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-button" popovertarget="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-overlay" aria-controls="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-list" aria-haspopup="true" aria-labelledby="tooltip-9cd71fc6-c5c3-46cf-9145-92c97820f6e9" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down Button-visual"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </button><tool-tip id="tooltip-9cd71fc6-c5c3-46cf-9145-92c97820f6e9" for="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">secondary menu</tool-tip> <anchored-position id="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-overlay" anchor="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-button" align="end" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true"> <div data-view-component="true" class="Overlay Overlay--size-auto"> <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list> <div data-view-component="true"> <ul aria-labelledby="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-button" id="action-menu-8a7f1f09-dd9e-47c0-aae9-d96947f44ad4-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap"> <li data-targets="action-list.items" data-item-id="item1" role="none" data-view-component="true" class="ActionListItem"> <button tabindex="-1" id="item-f8c3e525-43dd-480c-b27d-b6edbbea4bc9" type="button" role="menuitem" data-view-component="true" class="ActionListContent"> <span data-view-component="true" class="ActionListItem-label"> Item 1 </span> </button> </li> <li data-targets="action-list.items" data-item-id="item2" role="none" data-view-component="true" class="ActionListItem"> <button tabindex="-1" id="item-68db2145-0ef4-42d6-a844-6536df931a4f" type="button" role="menuitem" data-view-component="true" class="ActionListContent"> <span data-view-component="true" class="ActionListItem-label"> Item 2 </span> </button> </li> </ul> </div> </action-list> </div> </div> </anchored-position> </focus-group> </action-menu> </div></div>
1
2
3
4
5
6
7
<%= render(Primer::Beta::ButtonGroup.new(scheme: scheme, size: size)) do |component| %> <% component.with_button { "Main menu" } %> <% component.with_menu_button(button_arguments: { "aria-label": "secondary menu" }, menu_arguments: { anchor_align: :end }) do |menu, button| %> <% menu.with_item(label: "Item 1", item_id: :item1) %> <% menu.with_item(label: "Item 2", item_id: :item2) %> <% end %><% end %>
No notes provided.
app/components/primer/beta/button_group.css
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.ButtonGroup { display: inline-flex;}.ButtonGroup .Button { /* stylelint-disable-next-line primer/spacing */ margin-inline-end: -1px; position: relative; border-radius: 0; }:is(.ButtonGroup .Button):focus,:is(.ButtonGroup .Button):active,:is(.ButtonGroup .Button):hover { z-index: 1; }.ButtonGroup > :first-child .Button { border-top-left-radius: var(--borderRadius-medium); border-bottom-left-radius: var(--borderRadius-medium); }.ButtonGroup > :last-child .Button { border-top-right-radius: var(--borderRadius-medium); border-bottom-right-radius: var(--borderRadius-medium); }