Budibase is an open-source low-code platform for creating internal apps in minutes. Supports PostgreSQL, MySQL, MSSQL, MongoDB, Rest API, Docker, K8s 🚀
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

68 lines
1.3 KiB

<script>
import getIcon from "./icon";
export let iconName;
export let actions = []; // [ {label: "Action Name", onclick: () => {...} } ]
let isDroppedDown = false;
</script>
<div class="root" on:click={() => isDroppedDown = !isDroppedDown}>
{@html getIcon(iconName)}
<div class="dropdown-background" on:click|stopPropagation={() => isDroppedDown = false} style="display: {isDroppedDown ? 'block' : 'none'}"></div>
<div class="dropdown-content" style="display: {isDroppedDown ? 'inline-block' : 'none'}">
{#each actions as action}
<div class="action-row" on:click={action.onclick}>
{action.label}
</div>
{/each}
</div>
</div>
<style>
.dropdown-background {
position: fixed;
top:0;
left:0;
width:100vw;
height:100vh;
}
.root {
cursor: pointer;
z-index: 1;
}
.dropdown-content {
position: absolute;
background-color: var(--white);
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
font-weight: normal;
border-style: solid;
border-width: 1px;
border-color: var(--secondary10);
}
.dropdown-content:not(:focus) {
display: none;
}
.action-row {
padding: 7px 10px;
cursor:pointer;
}
.action-row:hover {
background-color: var(--primary100);
color:var(--white);
}
</style>