Skip to content

Context Menu

Hiển thị menu cho người dùng—chẳng hạn như một tập hợp các hành động hoặc chức năng—được kích hoạt bằng cách nhấp chuột phải.

Chỉ dành cho Web

Component này chỉ khả dụng cho các framework web (Vue, React, Angular). Tương tác chuột phải không có trên nền tảng mobile.

Right click here

Cài đặt

bash
npx @galaxy-stack/nebula-cli@latest add context-menu
bash
pnpm dlx @galaxy-stack/nebula-cli@latest add context-menu
bash
yarn dlx @galaxy-stack/nebula-cli@latest add context-menu
bash
bunx @galaxy-stack/nebula-cli@latest add context-menu

Sử dụng

Vue

vue
<script setup lang="ts">
import {
  ContextMenu,
  ContextMenuTrigger,
  ContextMenuContent,
  ContextMenuItem
} from '@/components/ui'
</script>

<template>
  <ContextMenu>
    <ContextMenuTrigger>Nhấp chuột phải vào đây</ContextMenuTrigger>
    <ContextMenuContent>
      <ContextMenuItem>Hồ sơ</ContextMenuItem>
      <ContextMenuItem>Cài đặt</ContextMenuItem>
      <ContextMenuItem>Đăng xuất</ContextMenuItem>
    </ContextMenuContent>
  </ContextMenu>
</template>

React

tsx
import {
  ContextMenu,
  ContextMenuTrigger,
  ContextMenuContent,
  ContextMenuItem,
  ContextMenuSeparator,
  ContextMenuShortcut,
} from "@/components/ui/context-menu"

export default function App() {
  return (
    <ContextMenu>
      <ContextMenuTrigger>Nhấp chuột phải vào đây</ContextMenuTrigger>
      <ContextMenuContent>
        <ContextMenuItem>
          Hồ sơ
          <ContextMenuShortcut>⌘P</ContextMenuShortcut>
        </ContextMenuItem>
        <ContextMenuItem>Cài đặt</ContextMenuItem>
        <ContextMenuSeparator />
        <ContextMenuItem>Đăng xuất</ContextMenuItem>
      </ContextMenuContent>
    </ContextMenu>
  )
}

Angular

typescript
import { Component } from '@angular/core';
import { ContextMenuComponent } from '@/components/ui/context-menu';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [ContextMenuComponent],
  template: `
    <ui-context-menu>
      <div trigger>Nhấp chuột phải vào đây</div>
      <div content>
        <ui-context-menu-item>Hồ sơ</ui-context-menu-item>
        <ui-context-menu-item>Cài đặt</ui-context-menu-item>
        <ui-context-menu-separator />
        <ui-context-menu-item>Đăng xuất</ui-context-menu-item>
      </div>
    </ui-context-menu>
  `
})
export class AppComponent {}

API Reference

Props

PropKiểuMặc địnhMô tảFrameworks
modalbooleantrueTương tác bên ngoài có bị vô hiệu hóa khi menu mở khôngReact, Vue, Angular
childrenReactNode-Nội dung composition của context menuReact, Vue, Angular

Sub-components

ContextMenuTrigger

PropKiểuMặc địnhMô tảFrameworks
disabledbooleanfalseVô hiệu hóa triggerReact, Vue, Angular
asChildbooleanfalseRender trigger như một phần tử conReact, Vue

ContextMenuContent

PropKiểuMặc địnhMô tảFrameworks
side'top' | 'right' | 'bottom' | 'left''bottom'Vị trí ưu tiên cho nội dung menuReact, Vue, Angular
align'start' | 'center' | 'end''center'Căn chỉnh dọc theo cạnhReact, Vue, Angular
sideOffsetnumber5Offset tính bằng pixels từ triggerReact, Vue, Angular
alignOffsetnumber0Offset tính bằng pixels từ cạnh căn chỉnhReact, Vue, Angular
avoidCollisionsbooleantrueTránh va chạm với viewport edgesReact, Vue, Angular
className / classstring-Tên CSS classReact (className), Vue/Angular (class)

ContextMenuItem

PropKiểuMặc địnhMô tảFrameworks
disabledbooleanfalseVô hiệu hóa itemReact, Vue, Angular
onSelect(event: Event) => void-Được gọi khi item được chọnReact, Vue, Angular
textValuestring-Giá trị văn bản dùng cho typeahead matchingReact, Vue, Angular
className / classstring-Tên CSS classReact (className), Vue/Angular (class)

Khả năng truy cập

  • Điều hướng bàn phím: [TODO]
  • Đọc màn hình: [TODO]
  • Quản lý focus: [TODO]
  • Tuân thủ WCAG: Tuân thủ WCAG 2.1 cấp độ AA

Tác giả

Bùi Trọng Hiếu (kevinbui)

Giấy phép

MIT © 2025 Bùi Trọng Hiếu (kevinbui)

Phát hành theo Giấy phép MIT.