Skip to content

MenuButton

Satu trigger dengan caret inline yang membuka dropdown menu — tidak ada segmen aksi terpisah seperti SplitButton.

Bagian dari: vue-sabutton · Family: Menu


Import

ts
import { MenuButton } from '@bpmlib/vue-sabutton';

Instalasi: lihat Installation & Setup di halaman utama.


Usage

vue
<script setup lang="ts">
import { MenuButton } from '@bpmlib/vue-sabutton';

const menu = [
  { label: 'Profil', href: '/profile' },
  { label: 'Pengaturan', href: '/settings' },
  { label: 'Keluar', onClick: logout },
];
</script>

<template>
  <MenuButton color="secondary" :menu="menu">Menu</MenuButton>
</template>

API Reference

Cara Penggunaan:

Trigger-nya tidak pernah membawa href sendiri — tidak ada fork button-vs-link seperti SplitButton/SplitLinkButton. Caret dirender inline di dalam trigger (seperti icon external-link LinkButton), bukan sebagai segmen terpisah. Lihat Core Concepts: menu/menuFieldMap untuk kontrak item.

Accessibility:

Sama seperti SplitButton — keyboard navigation dan focus management pada dropdown identik.

Props

NameTypeDefaultDescription
colorButtonColor'secondary'Sama seperti BasicButton
outlinebooleanfalseSama seperti BasicButton
smallbooleanfalseSama seperti BasicButton
disabledbooleanfalseSatu element, satu state — kontras dengan SplitButton/SplitLinkButton's SplitDisabled yang punya dua segmen untuk di-toggle terpisah
iconIconInput-
tooltipstring-
tooltipColorButtonColormengikuti color
badgeboolean | string-
badgeColorButtonColormengikuti color
badgePositionBadgePosition'tr'
menuT[]requiredSama seperti SplitButton
menuFieldMapMenuItemFieldMap<T>-
menuPlacement'bottom-start' | 'bottom-end''bottom-start'
menuAnchorIconbooleantrue

Tidak ada expanded/onLoading/pulse/type/asSubmit/asReset/form — trigger tidak form-shaped dan tidak punya konsep "busy" terpisah dari menu terbuka/tertutup.

Slots

NamePropsDescription
default-Isi teks/konten trigger. Kosong → icon-only (caret tetap muncul)
item{ item: T, index: number }Sama seperti SplitButton

Styling

Styling sepenuhnya self-contained, memakai variable BasicButton yang sama untuk trigger, ditambah --sa-bt--menu-z (lihat SplitButton) untuk panel dropdown. Tidak ada styling seam segmen (sa-bt--split-primary/sa-bt--split-caret) karena hanya ada satu segmen.


Family Menu tidak punya anggota lain — berbagi kontrak menu/menuFieldMap dengan: