Context Menu
Displays a menu to the user — such as a set of actions or functions — triggered by right click.
Loading preview…
1<script lang="ts">
2 import * as ContextMenu from './index.js';
3
4 let showBookmarks = $state(false);
5 let showFullURLs = $state(true);
6 let value = $state('pedro');
7</script>
8
9<ContextMenu.Root>
10 <ContextMenu.Trigger
11 class="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm"
12 >
13 Right click here
14 </ContextMenu.Trigger>
15 <ContextMenu.Content class="w-52">
16 <ContextMenu.Item inset>
17 Back
18 <ContextMenu.Shortcut>⌘[</ContextMenu.Shortcut>
19 </ContextMenu.Item>
20 <ContextMenu.Item inset disabled>
21 Forward
22 <ContextMenu.Shortcut>⌘]</ContextMenu.Shortcut>
23 </ContextMenu.Item>
24 <ContextMenu.Item inset>
25 Reload
26 <ContextMenu.Shortcut>⌘R</ContextMenu.Shortcut>
27 </ContextMenu.Item>
28 <ContextMenu.Sub>
29 <ContextMenu.SubTrigger inset>More Tools</ContextMenu.SubTrigger>
30 <ContextMenu.SubContent class="w-48">
31 <ContextMenu.Item>
32 Save Page As...
33 <ContextMenu.Shortcut>⇧⌘S</ContextMenu.Shortcut>
34 </ContextMenu.Item>
35 <ContextMenu.Item>Create Shortcut...</ContextMenu.Item>
36 <ContextMenu.Item>Name Window...</ContextMenu.Item>
37 <ContextMenu.Separator />
38 <ContextMenu.Item>Developer Tools</ContextMenu.Item>
39 </ContextMenu.SubContent>
40 </ContextMenu.Sub>
41 <ContextMenu.Separator />
42 <ContextMenu.CheckboxItem bind:checked={showBookmarks}>Show Bookmarks</ContextMenu.CheckboxItem>
43 <ContextMenu.CheckboxItem bind:checked={showFullURLs}>Show Full URLs</ContextMenu.CheckboxItem>
44 <ContextMenu.Separator />
45 <ContextMenu.RadioGroup bind:value>
46 <ContextMenu.Group>
47 <ContextMenu.GroupHeading inset>People</ContextMenu.GroupHeading>
48 <ContextMenu.RadioItem value="pedro">Pedro Duarte</ContextMenu.RadioItem>
49 <ContextMenu.RadioItem value="colm">Colm Tuite</ContextMenu.RadioItem>
50 </ContextMenu.Group>
51 </ContextMenu.RadioGroup>
52 </ContextMenu.Content>
53</ContextMenu.Root>
54Installation
1. Install dependencies
2. Copy these files into your project
- ~/components/context-menu/index.ts
- ~/components/context-menu/context-menu.svelte
- ~/components/context-menu/context-menu-trigger.svelte
- ~/components/context-menu/context-menu-portal.svelte
- ~/components/context-menu/context-menu-content.svelte
- ~/components/context-menu/context-menu-item.svelte
- ~/components/context-menu/context-menu-checkbox-item.svelte
- ~/components/context-menu/context-menu-radio-group.svelte
- ~/components/context-menu/context-menu-radio-item.svelte
- ~/components/context-menu/context-menu-group.svelte
- ~/components/context-menu/context-menu-group-heading.svelte
- ~/components/context-menu/context-menu-label.svelte
- ~/components/context-menu/context-menu-separator.svelte
- ~/components/context-menu/context-menu-shortcut.svelte
- ~/components/context-menu/context-menu-sub.svelte
- ~/components/context-menu/context-menu-sub-trigger.svelte
- ~/components/context-menu/context-menu-sub-content.svelte
Usage
Use context menu for actions opened with a right click. Compose trigger, content, items, checkboxes, radios, and nested submenus.
1<script lang="ts">
2 import * as ContextMenu from '~/components/context-menu';
3</script>
4
5<ContextMenu.Root>
6 <ContextMenu.Trigger>Right click</ContextMenu.Trigger>
7 <ContextMenu.Content>
8 <ContextMenu.Item>Profile</ContextMenu.Item>
9 <ContextMenu.Item>Billing</ContextMenu.Item>
10 <ContextMenu.Item>Team</ContextMenu.Item>
11 <ContextMenu.Item>Subscription</ContextMenu.Item>
12 </ContextMenu.Content>
13</ContextMenu.Root>