<script> import { getContext } from "svelte" import { backendUiStore } from "builderStore" import { DropdownMenu, Button, Icon, Input, Select } from "@budibase/bbui" import { FIELDS } from "constants/backend" import DeleteTableModal from "components/database/DataTable/modals/DeleteTable.svelte" const { open, close } = getContext("simple-modal") export let table let anchor let dropdown let editing function showEditor() { editing = true } function hideEditor() { dropdown.hide() editing = false close() } const deleteTable = () => { open( DeleteTableModal, { onClosed: close, table, }, { styleContent: { padding: "0" } } ) } function save() { backendUiStore.actions.models.save(table) hideEditor() } </script> <div bind:this={anchor} on:click={dropdown.show}> <i class="ri-more-line" /> </div> <DropdownMenu bind:this={dropdown} {anchor} align="left"> {#if editing} <h5>Edit Table</h5> <div class="container"> <Input placeholder="Table Name" thin bind:value={table.name} /> </div> <footer> <div class="button-margin-3"> <Button secondary on:click={hideEditor}>Cancel</Button> </div> <div class="button-margin-4"> <Button primary on:click={save}>Save</Button> </div> </footer> {:else} <ul> <li on:click={showEditor}> <Icon name="edit" /> Edit </li> <li data-cy="delete-table" on:click={deleteTable}> <Icon name="delete" /> Delete </li> </ul> {/if} </DropdownMenu> <style> h5 { padding: var(--spacing-xl) 0 0 var(--spacing-xl); margin: 0; font-weight: 500; } .container { padding: var(--spacing-xl); } ul { padding: var(--spacing-xl) 0 0 var(--spacing-xl); list-style: none; padding-left: 0; margin: 0; padding: var(--spacing-s) 0; } li { display: flex; font-family: var(--font-sans); font-size: var(--font-size-xs); color: var(--ink); padding: var(--spacing-s) var(--spacing-m); margin: auto 0px; align-items: center; cursor: pointer; } li:hover { background-color: var(--grey-2); } li:active { color: var(--blue); } footer { padding: 20px; display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 20px; background: var(--grey-1); border-bottom-left-radius: 0.5rem; border-bottom-left-radius: 0.5rem; } .button-margin-1 { grid-column-start: 1; display: grid; } .button-margin-3 { grid-column-start: 3; display: grid; } .button-margin-4 { grid-column-start: 4; display: grid; } </style>