|
|
|
@ -6,7 +6,6 @@ |
|
|
|
|
|
|
|
export let onSelect = selectedItems => {} |
|
|
|
|
|
|
|
export let singleSelection = true |
|
|
|
export let width = "400px" |
|
|
|
export let open = true |
|
|
|
export let useFixedPosition = false |
|
|
|
@ -17,21 +16,16 @@ |
|
|
|
export let _bb |
|
|
|
|
|
|
|
let menu = null |
|
|
|
let menuList = null |
|
|
|
let instance = null |
|
|
|
let selectedItemsStore |
|
|
|
|
|
|
|
function createOrAcceptItemStore() { |
|
|
|
let store = _bb.getContext("BBMD:list:selectItemStore") |
|
|
|
if (!!store) { |
|
|
|
selectedItemsStore = store |
|
|
|
} else { |
|
|
|
selectedItemsStore = createItemsStore(() => onSelect($selectedItemsStore)) |
|
|
|
_bb.setContext("BBMD:list:selectItemStore", selectedItemsStore) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
onMount(() => { |
|
|
|
createOrAcceptItemStore() |
|
|
|
_bb.setContext("BBMD:list:context", "menu") |
|
|
|
_bb.setContext("BBMD:list:props", { singleSelection: true }) |
|
|
|
|
|
|
|
selectedItemsStore = createItemsStore(() => onSelect($selectedItemsStore)) |
|
|
|
_bb.setContext("BBMD:list:selectItemStore", selectedItemsStore) |
|
|
|
|
|
|
|
if (!!menu) { |
|
|
|
instance = new MDCMenu(menu) |
|
|
|
@ -43,8 +37,9 @@ |
|
|
|
instance.setAbsolutePosition(x | 0, y | 0) |
|
|
|
} |
|
|
|
} |
|
|
|
setContext("BBMD:list:context", "menu") |
|
|
|
}) |
|
|
|
|
|
|
|
$: menuList && _bb.attachChildren(menuList) |
|
|
|
</script> |
|
|
|
|
|
|
|
{#if useFixedPosition || useAbsolutePosition} |
|
|
|
@ -52,17 +47,17 @@ |
|
|
|
bind:this={menu} |
|
|
|
class="mdc-menu mdc-menu-surface" |
|
|
|
style={`width: ${width}`}> |
|
|
|
<List {singleSelection} {_bb} /> |
|
|
|
<ul bind:this={menuList} class="mdc-list" role="menu" /> |
|
|
|
</div> |
|
|
|
{:else} |
|
|
|
<div class="mdc-menu-surface--anchor"> |
|
|
|
<!-- Will automatically anchor to slotted element --> |
|
|
|
<!--TODO: Will automatically anchor to slotted element. Not sure how this would be achieved with Budibase though --> |
|
|
|
<slot /> |
|
|
|
<div |
|
|
|
bind:this={menu} |
|
|
|
class="mdc-menu mdc-menu-surface" |
|
|
|
style={`width: ${width}`}> |
|
|
|
<List {singleSelection} {_bb} /> |
|
|
|
<ul bind:this={menuList} class="mdc-list" role="menu" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{/if} |
|
|
|
|