|
|
|
@ -3,16 +3,17 @@ |
|
|
|
import { store } from "builderStore" |
|
|
|
import { notifier } from "builderStore/store/notifications" |
|
|
|
import ConfirmDialog from "components/common/ConfirmDialog.svelte" |
|
|
|
import { DropdownMenu, Modal, ModalContent } from "@budibase/bbui" |
|
|
|
import { DropdownMenu, Modal, ModalContent, Input } from "@budibase/bbui" |
|
|
|
import { DropdownContainer, DropdownItem } from "components/common/Dropdowns" |
|
|
|
import { cloneDeep } from "lodash/fp" |
|
|
|
|
|
|
|
export let layoutId |
|
|
|
export let layout |
|
|
|
|
|
|
|
let confirmDeleteDialog |
|
|
|
let editLayoutNameModal |
|
|
|
let dropdown |
|
|
|
let anchor |
|
|
|
|
|
|
|
$: layout = $store.layouts.find(layout => layout._id === layoutId) |
|
|
|
let name = layout.name |
|
|
|
|
|
|
|
const deleteLayout = async () => { |
|
|
|
try { |
|
|
|
@ -22,6 +23,17 @@ |
|
|
|
notifier.danger(`Error deleting layout: ${err.message}`) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
const saveLayout = async () => { |
|
|
|
try { |
|
|
|
const layoutToSave = cloneDeep(layout) |
|
|
|
layoutToSave.name = name |
|
|
|
await store.actions.layouts.save(layoutToSave) |
|
|
|
notifier.success(`Layout saved successfully.`) |
|
|
|
} catch (err) { |
|
|
|
notifier.danger(`Error saving layout: ${err.message}`) |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<div bind:this={anchor} on:click|stopPropagation> |
|
|
|
@ -34,6 +46,10 @@ |
|
|
|
icon="ri-delete-bin-line" |
|
|
|
title="Delete" |
|
|
|
on:click={() => confirmDeleteDialog.show()} /> |
|
|
|
<DropdownItem |
|
|
|
icon="ri-pencil-line" |
|
|
|
title="Edit" |
|
|
|
on:click={() => editLayoutNameModal.show()} /> |
|
|
|
</DropdownContainer> |
|
|
|
</DropdownMenu> |
|
|
|
</div> |
|
|
|
@ -44,6 +60,16 @@ |
|
|
|
okText="Delete Layout" |
|
|
|
onOk={deleteLayout} /> |
|
|
|
|
|
|
|
<Modal bind:this={editLayoutNameModal}> |
|
|
|
<ModalContent |
|
|
|
title="Edit Layout Name" |
|
|
|
confirmText="Save" |
|
|
|
onConfirm={saveLayout} |
|
|
|
disabled={!name}> |
|
|
|
<Input thin type="text" label="Name" bind:value={name} /> |
|
|
|
</ModalContent> |
|
|
|
</Modal> |
|
|
|
|
|
|
|
<style> |
|
|
|
.icon i { |
|
|
|
font-size: 16px; |
|
|
|
|