mirror of https://github.com/Budibase/budibase.git
committed by
GitHub
6 changed files with 118 additions and 47 deletions
@ -0,0 +1,50 @@ |
|||
<script> |
|||
import { List } from "../List"; |
|||
import { MDCMenu } from "@material/menu"; |
|||
import { onMount, setContext } from "svelte"; |
|||
export let items = []; |
|||
export let singleSelection = true; |
|||
export let width = "400px"; |
|||
export let open = true; |
|||
export let useFixedPosition = false; |
|||
export let useAbsolutePosition = false; |
|||
//{x: number, y: number} |
|||
export let absolutePositionCoords = null; |
|||
|
|||
let menu = null; |
|||
let instance = null; |
|||
|
|||
onMount(() => { |
|||
if (!!menu) { |
|||
instance = new MDCMenu(menu); |
|||
instance.open = open; |
|||
if (useFixedPosition) { |
|||
instance.setFixedPosition(true); |
|||
} else if (useAbsolutePosition) { |
|||
let { x, y } = absolutePositionCoords; |
|||
instance.setAbsolutePosition(x | 0, y | 0); |
|||
} |
|||
} |
|||
setContext("BBMD:list:context", "menu"); |
|||
}); |
|||
</script> |
|||
|
|||
{#if useFixedPosition || useAbsolutePosition} |
|||
<div |
|||
bind:this={menu} |
|||
class="mdc-menu mdc-menu-surface" |
|||
style={`width: ${width}`}> |
|||
<List {items} {singleSelection} /> |
|||
</div> |
|||
{:else} |
|||
<div class="mdc-menu-surface--anchor"> |
|||
<!-- Will automatically anchor to slotted element --> |
|||
<slot /> |
|||
<div |
|||
bind:this={menu} |
|||
class="mdc-menu mdc-menu-surface" |
|||
style={`width: ${width}`}> |
|||
<List {items} {singleSelection} /> |
|||
</div> |
|||
</div> |
|||
{/if} |
|||
@ -0,0 +1,2 @@ |
|||
@import "@material/menu-surface/mdc-menu-surface.scss"; |
|||
@import "@material/menu/mdc-menu.scss"; |
|||
@ -0,0 +1,2 @@ |
|||
import "./_styles.scss"; |
|||
export { default as Menu } from "./Menu.svelte"; |
|||
Loading…
Reference in new issue