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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
|
---
id: Overflow menu
section: components
cssPrefix: pf-v6-c-overflow-menu
---import './overflow-menu.css'
## Introduction
The overflow menu component condenses actions inside `.pf-v6-c-overflow-menu__content` container into a single menu button wrapped in `.pf-v6-c-overflow-menu__control`.
The overflow menu relies on groups (`.pf-v6-c-overflow-menu__group`) and items (`.pf-v6-c-overflow-menu__item`), with default spacer values. Groups and items can be siblings and/or items can be nested within groups. Modifier selectors adjust spacing based on the type of group. Each modifier applies a unique CSS variable, therefore, the base spacer value for all elements can be customized and item/groups spacers can be themed individually. The default spacer value for items and groups is set to `--pf-v6-c-toolbar--spacer--base`, whose value is `--pf-v6-global--spacer--md` or 16px.
### Simple condensed
```html
<div class="pf-v6-c-overflow-menu" id="overflow-menu-simple">
<div class="pf-v6-c-overflow-menu__control">
<button
class="pf-v6-c-menu-toggle pf-m-plain"
type="button"
aria-expanded="false"
aria-label="Generic options"
id="overflow-menu-simple-toggle"
>
<span class="pf-v6-c-menu-toggle__icon">
<i class="fas fa-ellipsis-v" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
```
### Simple
```html
<div class="pf-v6-c-overflow-menu" id="overflow-menu-simple-expanded">
<div class="pf-v6-c-overflow-menu__content">
<div class="pf-v6-c-overflow-menu__item">Item 1</div>
<div class="pf-v6-c-overflow-menu__item">Item 2</div>
<div class="pf-v6-c-overflow-menu__group">
<div class="pf-v6-c-overflow-menu__item">Item 3</div>
<div class="pf-v6-c-overflow-menu__item">Item 4</div>
<div class="pf-v6-c-overflow-menu__item">Item 5</div>
</div>
</div>
</div>
```
### Default spacing for items and groups:
| Class | CSS Variable | Computed Value |
| -- | -- | -- |
| `.pf-v6-c-overflow-menu__group` | `--pf-v6-c-overflow-menu__group--spacer` | `16px` |
| `.pf-v6-c-overflow-menu__item` | `--pf-v6-c-overflow-menu__item--spacer` | `16px` |
### Overflow menu item types
| Class | Applied to | Outcome |
| -- | -- | -- |
| `.pf-v6-c-overflow-menu` | `<div>` | Initiates an overflow menu. **Required** |
| `.pf-v6-c-overflow-menu__content` | `<div>` | Initiates an overflow menu content section. **Required** |
| `.pf-v6-c-overflow-menu__control` | `<div>` | Initiates the overflow menu control. **Required** |
| `.pf-v6-c-overflow-menu__group` | `<div>` | Initiates an overflow menu group. |
| `.pf-v6-c-overflow-menu__item` | `<div>` | Initiates an overflow menu item. **Required** |
### Group types
```html
<div class="pf-v6-c-overflow-menu" id="overflow-menu-button-group-example">
<div class="pf-v6-c-overflow-menu__content">
<div class="pf-v6-c-overflow-menu__group">
<div class="pf-v6-c-overflow-menu__item">Item 1</div>
<div class="pf-v6-c-overflow-menu__item">Item 2</div>
<div class="pf-v6-c-overflow-menu__item">Item 3</div>
</div>
<div class="pf-v6-c-overflow-menu__group pf-m-button-group">
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-primary" type="button">
<span class="pf-v6-c-button__text">Primary</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-secondary" type="button">
<span class="pf-v6-c-button__text">Secondary</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-tertiary" type="button">
<span class="pf-v6-c-button__text">Tertiary</span>
</button>
</div>
</div>
<div class="pf-v6-c-overflow-menu__group pf-m-icon-button-group">
<div class="pf-v6-c-overflow-menu__item">
<button
class="pf-v6-c-button pf-m-plain"
type="button"
aria-label="Align left"
>
<span class="pf-v6-c-button__icon">
<i class="fas fa-align-left" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button
class="pf-v6-c-button pf-m-plain"
type="button"
aria-label="Align center"
>
<span class="pf-v6-c-button__icon">
<i class="fas fa-align-center" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button
class="pf-v6-c-button pf-m-plain"
type="button"
aria-label="Align right"
>
<span class="pf-v6-c-button__icon">
<i class="fas fa-align-right" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
</div>
</div>
```
The action group consists of a primary and secondary action. Any additional actions are part of the overflow control menu.
### Overflow menu group types
| Class | Applied to | Outcome |
| -- | -- | -- |
| `.pf-v6-c-overflow-menu__group` | `<div>` | Initiates an overflow menu component group. |
| `.pf-m-button-group` | `.pf-v6-c-overflow-menu__group` | Modifies overflow menu group spacing. Spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-button-group--spacer)`. Child `.pf-v6-c-button` spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-button-group--space-items)`. |
| `.pf-m-icon-button-group` | `.pf-v6-c-overflow-menu__group` | Modifies overflow menu group spacing. Spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-icon-button-group--spacer)`. Child `.pf-v6-c-button.pf-m-button-plain` spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-icon-button-group--space-items)`. |
### Additional options in menu (hidden)
```html
<div
class="pf-v6-c-overflow-menu"
id="overflow-menu-simple-additional-options-hidden"
>
<div class="pf-v6-c-overflow-menu__control">
<button
class="pf-v6-c-menu-toggle pf-m-plain"
type="button"
aria-expanded="false"
aria-label="Additional options in menu toggle"
id="overflow-menu-simple-additional-options-hidden-toggle"
>
<span class="pf-v6-c-menu-toggle__icon">
<i class="fas fa-ellipsis-v" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
```
### Additional options in menu
```html
<div
class="pf-v6-c-overflow-menu"
id="overflow-menu-simple-additional-options-visible"
>
<div class="pf-v6-c-overflow-menu__content">
<div class="pf-v6-c-overflow-menu__group pf-m-button-group">
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-primary" type="button">
<span class="pf-v6-c-button__text">Primary</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-secondary" type="button">
<span class="pf-v6-c-button__text">Secondary</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-tertiary" type="button">
<span class="pf-v6-c-button__text">Tertiary</span>
</button>
</div>
</div>
<div class="pf-v6-c-overflow-menu__group pf-m-icon-button-group">
<div class="pf-v6-c-overflow-menu__item">
<button
class="pf-v6-c-button pf-m-plain"
type="button"
aria-label="Align left"
>
<span class="pf-v6-c-button__icon">
<i class="fas fa-align-left" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button
class="pf-v6-c-button pf-m-plain"
type="button"
aria-label="Align center"
>
<span class="pf-v6-c-button__icon">
<i class="fas fa-align-center" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button
class="pf-v6-c-button pf-m-plain"
type="button"
aria-label="Align right"
>
<span class="pf-v6-c-button__icon">
<i class="fas fa-align-right" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
</div>
<div class="pf-v6-c-overflow-menu__control">
<button
class="pf-v6-c-menu-toggle pf-m-plain"
type="button"
aria-expanded="false"
aria-label="Additional options toggle"
id="overflow-menu-simple-additional-options-visible-toggle"
>
<span class="pf-v6-c-menu-toggle__icon">
<i class="fas fa-ellipsis-v" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
```
## Persistent configuration
### Persistent additional options (hidden)
```html
<div class="pf-v6-c-overflow-menu" id="overflow-menu-persistent-hidden">
<div class="pf-v6-c-overflow-menu__content">
<div class="pf-v6-c-overflow-menu__group pf-m-button-group">
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-primary" type="button">
<span class="pf-v6-c-button__text">Primary</span>
</button>
</div>
</div>
</div>
<div class="pf-v6-c-overflow-menu__control">
<button
class="pf-v6-c-menu-toggle pf-m-plain"
type="button"
aria-expanded="false"
aria-label="menu with additional options"
id="overflow-menu-persistent-hidden-toggle"
>
<span class="pf-v6-c-menu-toggle__icon">
<i class="fas fa-ellipsis-v" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
```
### Persistent additional options (visible)
```html
<div
class="pf-v6-c-overflow-menu"
id="overflow-menu-persistent-visible-example"
>
<div class="pf-v6-c-overflow-menu__content">
<div class="pf-v6-c-overflow-menu__group pf-m-button-group">
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-primary" type="button">
<span class="pf-v6-c-button__text">Primary</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-secondary" type="button">
<span class="pf-v6-c-button__text">Secondary</span>
</button>
</div>
<div class="pf-v6-c-overflow-menu__item">
<button class="pf-v6-c-button pf-m-tertiary" type="button">
<span class="pf-v6-c-button__text">Tertiary</span>
</button>
</div>
</div>
</div>
<div class="pf-v6-c-overflow-menu__control">
<button
class="pf-v6-c-menu-toggle pf-m-plain"
type="button"
aria-expanded="false"
aria-label="Persistent options toggle"
id="overflow-menu-persistent-visible-example-toggle"
>
<span class="pf-v6-c-menu-toggle__icon">
<i class="fas fa-ellipsis-v" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
```
### Usage
| Class | Applied to | Outcome |
| -- | -- | -- |
| `.pf-v6-c-overflow-menu` | `<div>` | Initiates an overflow menu. **Required** |
| `.pf-v6-c-overflow-menu__content` | `<div>` | Initiates an overflow menu content section. **Required** |
| `.pf-v6-c-overflow-menu__control` | `<div>` | Initiates the overflow menu control. **Required** |
| `.pf-v6-c-overflow-menu__group` | `<div>` | Initiates an overflow menu group. |
| `.pf-v6-c-overflow-menu__item` | `<div>` | Initiates an overflow menu item. **Required** |
| `.pf-m-button-group` | `.pf-v6-c-overflow-menu__group` | Modifies overflow menu group spacing. Spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-button-group--spacer)`. Child spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-button-group--space-items)`. |
| `.pf-m-icon-button-group` | `.pf-v6-c-overflow-menu__group` | Modifies overflow menu group spacing. Spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-icon-button-group--spacer)`. Child spacer value is set to `var(--pf-v6-c-overflow-menu__group--m-icon-button-group--space-items)`. |
|