From 3a1e561a27ccead181230aa6ce22d70504b135a4 Mon Sep 17 00:00:00 2001 From: Eric Y Liu Date: Fri, 19 Mar 2021 13:25:45 -0700 Subject: [PATCH] feat(context-menu): add initial ContextMenu --- docs/src/pages/_layout.svelte | 14 +- src/ContextMenu/ContextMenu.svelte | 99 ++++++++++ src/ContextMenu/ContextMenuDivider.svelte | 1 + src/ContextMenu/ContextMenuGroup.svelte | 35 ++++ src/ContextMenu/ContextMenuOption.svelte | 182 +++++++++++++++++++ src/ContextMenu/ContextMenuRadioGroup.svelte | 24 +++ src/ContextMenu/index.js | 5 + src/index.js | 7 + 8 files changed, 364 insertions(+), 3 deletions(-) create mode 100644 src/ContextMenu/ContextMenu.svelte create mode 100644 src/ContextMenu/ContextMenuDivider.svelte create mode 100644 src/ContextMenu/ContextMenuGroup.svelte create mode 100644 src/ContextMenu/ContextMenuOption.svelte create mode 100644 src/ContextMenu/ContextMenuRadioGroup.svelte create mode 100644 src/ContextMenu/index.js diff --git a/docs/src/pages/_layout.svelte b/docs/src/pages/_layout.svelte index 162e382b..bb4359af 100644 --- a/docs/src/pages/_layout.svelte +++ b/docs/src/pages/_layout.svelte @@ -20,7 +20,7 @@ import Footer from "../components/Footer.svelte"; const deprecated = ["ToggleSmall", "Icon"]; - const new_components = ["Popover"]; + const new_components = ["Popover", "ContextMenu"]; let isOpen = false; let isSideNavOpen = true; @@ -105,10 +105,18 @@ > {child.title} {#if deprecated.includes(child.title)} - Deprecated + + Deprecated + {/if} {#if new_components.includes(child.title)} - New + + New + {/if} {/each} diff --git a/src/ContextMenu/ContextMenu.svelte b/src/ContextMenu/ContextMenu.svelte new file mode 100644 index 00000000..81d8b90b --- /dev/null +++ b/src/ContextMenu/ContextMenu.svelte @@ -0,0 +1,99 @@ + + + + + diff --git a/src/ContextMenu/ContextMenuDivider.svelte b/src/ContextMenu/ContextMenuDivider.svelte new file mode 100644 index 00000000..98605565 --- /dev/null +++ b/src/ContextMenu/ContextMenuDivider.svelte @@ -0,0 +1 @@ +
  • diff --git a/src/ContextMenu/ContextMenuGroup.svelte b/src/ContextMenu/ContextMenuGroup.svelte new file mode 100644 index 00000000..68781d1f --- /dev/null +++ b/src/ContextMenu/ContextMenuGroup.svelte @@ -0,0 +1,35 @@ + + +
  • +
      + +
    +
  • diff --git a/src/ContextMenu/ContextMenuOption.svelte b/src/ContextMenu/ContextMenuOption.svelte new file mode 100644 index 00000000..95cb7f30 --- /dev/null +++ b/src/ContextMenu/ContextMenuOption.svelte @@ -0,0 +1,182 @@ + + +
  • + {#if subOptions} +
    + {#if indented} +
    + +
    + {/if} + + {label} + +
    +
    + + + + + {:else} +
    + {#if indented} +
    + +
    + {/if} + + {label} + +
    {shortcut}
    +
    + {/if} +
  • diff --git a/src/ContextMenu/ContextMenuRadioGroup.svelte b/src/ContextMenu/ContextMenuRadioGroup.svelte new file mode 100644 index 00000000..5b72f30a --- /dev/null +++ b/src/ContextMenu/ContextMenuRadioGroup.svelte @@ -0,0 +1,24 @@ + + + + + diff --git a/src/ContextMenu/index.js b/src/ContextMenu/index.js new file mode 100644 index 00000000..3b04911f --- /dev/null +++ b/src/ContextMenu/index.js @@ -0,0 +1,5 @@ +export { default as ContextMenu } from "./ContextMenu.svelte"; +export { default as ContextMenuDivider } from "./ContextMenuDivider.svelte"; +export { default as ContextMenuGroup } from "./ContextMenuGroup.svelte"; +export { default as ContextMenuOption } from "./ContextMenuOption.svelte"; +export { default as ContextMenuRadioGroup } from "./ContextMenuRadioGroup.svelte"; diff --git a/src/index.js b/src/index.js index d849dea7..f3a347f4 100644 --- a/src/index.js +++ b/src/index.js @@ -4,6 +4,13 @@ export { Breadcrumb, BreadcrumbItem, BreadcrumbSkeleton } from "./Breadcrumb"; export { Button, ButtonSkeleton, ButtonSet } from "./Button"; export { Checkbox, CheckboxSkeleton } from "./Checkbox"; export { ContentSwitcher, Switch } from "./ContentSwitcher"; +export { + ContextMenu, + ContextMenuDivider, + ContextMenuGroup, + ContextMenuOption, + ContextMenuRadioGroup, +} from "./ContextMenu"; export { Copy } from "./Copy"; export { CopyButton } from "./CopyButton"; export { ComboBox } from "./ComboBox";