carbon-components-svelte/tests/ContextMenu.test.svelte
2024-11-09 10:07:46 -08:00

61 lines
2 KiB
Svelte

<script lang="ts">
import {
ContextMenu,
ContextMenuDivider,
ContextMenuOption,
ContextMenuRadioGroup,
ContextMenuGroup,
} from "carbon-components-svelte";
import CopyFile from "carbon-icons-svelte/lib/CopyFile.svelte";
import Cut from "carbon-icons-svelte/lib/Cut.svelte";
import type { ComponentProps } from "svelte";
let ref: HTMLElement;
let selectedId = "0";
let selectedIds: ComponentProps<ContextMenuGroup>["selectedIds"] = [];
$: console.log("selectedId", selectedId);
</script>
<div bind:this="{ref}"></div>
<ContextMenu target="{null}" open on:open="{(e) => console.log(e.detail)}">
<ContextMenuOption
kind="danger"
indented
labelText="Copy"
shortcutText="⌘C"
icon="{CopyFile}"
/>
<ContextMenuOption indented labelText="Cut" shortcutText="⌘X" icon="{Cut}" />
<ContextMenuDivider />
<ContextMenuOption indented labelText="Export as">
<ContextMenuGroup
labelText="Export options"
bind:selectedIds="{selectedIds}"
>
<ContextMenuOption id="pdf" labelText="PDF" />
<ContextMenuOption id="txt" labelText="TXT" />
<ContextMenuOption id="mp3" labelText="MP3" />
</ContextMenuGroup>
</ContextMenuOption>
<ContextMenuDivider />
<ContextMenuOption selectable labelText="Remove metadata" />
<ContextMenuDivider />
<ContextMenuGroup labelText="Style options">
<ContextMenuOption id="0" labelText="Font smoothing" selected />
<ContextMenuOption id="1" labelText="Reduce noise" />
<ContextMenuOption id="2" labelText="Auto-sharpen" />
</ContextMenuGroup>
</ContextMenu>
<ContextMenu target="{[null, ref]}" on:open on:close>
<ContextMenuOption indented labelText="Open" />
<ContextMenuDivider />
<ContextMenuRadioGroup bind:selectedId="{selectedId}" labelText="Radio group">
<ContextMenuOption id="0" labelText="Set as foreground" />
<ContextMenuOption id="1" labelText="Set as background" />
</ContextMenuRadioGroup>
<ContextMenuDivider />
<ContextMenuOption indented labelText="Lock layer" />
</ContextMenu>