Speed Dial

Floating action button that expands to reveal a set of related actions. Supports directions, labels, hover trigger, and sizes.

This component requires softui.js for interactive behavior.

Default

<!-- Fixed to bottom-right corner -->
<div class="sui-speed-dial sui-speed-dial-br">
  <button class="sui-speed-dial-trigger">
    <svg viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
  </button>
  <div class="sui-speed-dial-actions">
    <button class="sui-speed-dial-action">
      <svg viewBox="0 0 24 24"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22 6 12 13 2 6"/></svg>
    </button>
    <button class="sui-speed-dial-action">
      <svg viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
    </button>
    <button class="sui-speed-dial-action">
      <svg viewBox="0 0 24 24"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"/><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"/></svg>
    </button>
  </div>
</div>

<!-- Position classes: sui-speed-dial-br, sui-speed-dial-bl, sui-speed-dial-tr, sui-speed-dial-tl -->

With Labels

<div class="sui-speed-dial sui-speed-dial-br">
  <button class="sui-speed-dial-trigger">
    <svg viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
  </button>
  <div class="sui-speed-dial-actions">
    <button class="sui-speed-dial-action" data-label="Compose">
      <svg viewBox="0 0 24 24"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22 6 12 13 2 6"/></svg>
    </button>
    <button class="sui-speed-dial-action" data-label="Edit">
      <svg viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
    </button>
    <button class="sui-speed-dial-action" data-label="Share">
      <svg viewBox="0 0 24 24"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"/><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"/></svg>
    </button>
    <button class="sui-speed-dial-action" data-label="Upload">
      <svg viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>
    </button>
  </div>
</div>

Directions

Up (default)
Down
Left
Right
<!-- Up (default) -->
<div class="sui-speed-dial sui-speed-dial-br">
  <button class="sui-speed-dial-trigger">
    <svg viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
  </button>
  <div class="sui-speed-dial-actions">
    <button class="sui-speed-dial-action"><!-- icon --></button>
    <button class="sui-speed-dial-action"><!-- icon --></button>
  </div>
</div>

<!-- Down -->
<div class="sui-speed-dial sui-speed-dial-tr sui-speed-dial-down">
  <!-- same structure -->
</div>

<!-- Left -->
<div class="sui-speed-dial sui-speed-dial-br sui-speed-dial-left">
  <!-- same structure -->
</div>

<!-- Right -->
<div class="sui-speed-dial sui-speed-dial-bl sui-speed-dial-right">
  <!-- same structure -->
</div>

Hover Trigger

<!-- Add sui-speed-dial-hover to open on hover instead of click -->
<div class="sui-speed-dial sui-speed-dial-br sui-speed-dial-hover">
  <button class="sui-speed-dial-trigger">
    <svg viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
  </button>
  <div class="sui-speed-dial-actions">
    <button class="sui-speed-dial-action" data-label="Copy">
      <svg viewBox="0 0 24 24"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>
    </button>
    <button class="sui-speed-dial-action" data-label="Edit">
      <svg viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
    </button>
    <button class="sui-speed-dial-action" data-label="Delete">
      <svg viewBox="0 0 24 24"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"/></svg>
    </button>
  </div>
</div>

Colors

Primary
Success
Danger
<!-- Primary (default) -->
<div class="sui-speed-dial sui-speed-dial-br">
  <button class="sui-speed-dial-trigger">
    <svg viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
  </button>
  <div class="sui-speed-dial-actions">
    <button class="sui-speed-dial-action"><!-- icon --></button>
  </div>
</div>

<!-- Success -->
<div class="sui-speed-dial sui-speed-dial-br sui-speed-dial-success">
  <!-- same structure -->
</div>

<!-- Danger -->
<div class="sui-speed-dial sui-speed-dial-br sui-speed-dial-danger">
  <!-- same structure -->
</div>

Sizes

Small
Default
Large
<!-- Small -->
<div class="sui-speed-dial sui-speed-dial-br sui-speed-dial-sm">
  <button class="sui-speed-dial-trigger">
    <svg viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
  </button>
  <div class="sui-speed-dial-actions">
    <button class="sui-speed-dial-action"><!-- icon --></button>
  </div>
</div>

<!-- Default -->
<div class="sui-speed-dial sui-speed-dial-br">
  <!-- same structure -->
</div>

<!-- Large -->
<div class="sui-speed-dial sui-speed-dial-br sui-speed-dial-lg">
  <!-- same structure -->
</div>

Delete this item?

This action cannot be undone. This will permanently delete the item and remove all associated data.