mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-18 19:46:36 +00:00
59 lines
1.1 KiB
Svelte
59 lines
1.1 KiB
Svelte
<script>
|
|
import {
|
|
ContextMenuDivider,
|
|
ContextMenuOption,
|
|
ContextMenuInner,
|
|
} from "carbon-components-svelte";
|
|
import CopyFile16 from "carbon-icons-svelte/lib/CopyFile16";
|
|
import Cut16 from "carbon-icons-svelte/lib/Cut16";
|
|
|
|
let ref;
|
|
let open = false;
|
|
let x = 0;
|
|
let y = 0;
|
|
</script>
|
|
|
|
<svelte:window
|
|
on:click="{(e) => {
|
|
if (e.target.contains(ref)) open = false;
|
|
}}"
|
|
on:keydown="{(e) => {
|
|
if (open && e.key === 'Escape') open = false;
|
|
}}"
|
|
/>
|
|
|
|
<div
|
|
on:contextmenu|preventDefault="{(e) => {
|
|
x = e.x;
|
|
y = e.y;
|
|
open = true;
|
|
}}"
|
|
></div>
|
|
|
|
<ContextMenuInner bind:ref bind:open bind:x bind:y>
|
|
<ContextMenuOption
|
|
indented
|
|
labelText="Copy"
|
|
shortcutText="Ctrl+C"
|
|
icon="{CopyFile16}"
|
|
/>
|
|
<ContextMenuOption
|
|
indented
|
|
labelText="Cut"
|
|
shortcutText="Ctrl+X"
|
|
icon="{Cut16}"
|
|
/>
|
|
<ContextMenuDivider />
|
|
<ContextMenuOption indented kind="danger" labelText="Delete" />
|
|
</ContextMenuInner>
|
|
|
|
<style>
|
|
div {
|
|
position: absolute;
|
|
width: 50%;
|
|
height: 50%;
|
|
left: 25%;
|
|
top: 25%;
|
|
background-color: black;
|
|
}
|
|
</style>
|