Use explicit actions for opening and closing side panels, and automatically close side panels when using form blocks

This commit is contained in:
Andrew Kingston 2022-11-15 11:54:20 +00:00
parent 8b941df5ff
commit e37027f808
6 changed files with 35 additions and 37 deletions

View File

@ -0,0 +1,8 @@
<div class="root">This action doesn't require any settings.</div>
<style>
.root {
max-width: 400px;
margin: 0 auto;
}
</style>

View File

@ -1,22 +1,10 @@
<script> <script>
import { Select, Label } from "@budibase/bbui" import { Select, Label } from "@budibase/bbui"
import { onMount } from "svelte"
import { selectedScreen } from "builderStore" import { selectedScreen } from "builderStore"
import { findAllMatchingComponents } from "builderStore/componentUtils" import { findAllMatchingComponents } from "builderStore/componentUtils"
export let parameters export let parameters
const typeOptions = [
{
label: "Show side panel",
value: "show",
},
{
label: "Hide side panel",
value: "hide",
},
]
$: sidePanelOptions = getSidePanelOptions($selectedScreen) $: sidePanelOptions = getSidePanelOptions($selectedScreen)
const getSidePanelOptions = screen => { const getSidePanelOptions = screen => {
@ -29,25 +17,11 @@
value: sidePanel._id, value: sidePanel._id,
})) }))
} }
onMount(() => {
if (!parameters.type) {
parameters.type = "show"
}
})
</script> </script>
<div class="root"> <div class="root">
<Label small>Type</Label>
<Select
placeholder={null}
bind:value={parameters.type}
options={typeOptions}
/>
{#if parameters.type === "show"}
<Label small>Side Panel</Label> <Label small>Side Panel</Label>
<Select bind:value={parameters.id} options={sidePanelOptions} /> <Select bind:value={parameters.id} options={sidePanelOptions} />
{/if}
</div> </div>
<style> <style>

View File

@ -16,4 +16,5 @@ export { default as ExportData } from "./ExportData.svelte"
export { default as ContinueIf } from "./ContinueIf.svelte" export { default as ContinueIf } from "./ContinueIf.svelte"
export { default as UpdateFieldValue } from "./UpdateFieldValue.svelte" export { default as UpdateFieldValue } from "./UpdateFieldValue.svelte"
export { default as ShowNotification } from "./ShowNotification.svelte" export { default as ShowNotification } from "./ShowNotification.svelte"
export { default as UpdateSidePanel } from "./UpdateSidePanel.svelte" export { default as OpenSidePanel } from "./OpenSidePanel.svelte"
export { default as CloseSidePanel } from "./CloseSidePanel.svelte"

View File

@ -118,9 +118,15 @@
"dependsOnFeature": "showNotificationAction" "dependsOnFeature": "showNotificationAction"
}, },
{ {
"name": "Update Side Panel", "name": "Open Side Panel",
"type": "application", "type": "application",
"component": "UpdateSidePanel", "component": "OpenSidePanel",
"dependsOnFeature": "sidePanel"
},
{
"name": "Close Side Panel",
"type": "application",
"component": "CloseSidePanel",
"dependsOnFeature": "sidePanel" "dependsOnFeature": "sidePanel"
} }
] ]

View File

@ -49,6 +49,9 @@
{ {
"##eventHandlerType": "Close Screen Modal", "##eventHandlerType": "Close Screen Modal",
}, },
{
"##eventHandlerType": "Close Side Panel",
},
{ {
"##eventHandlerType": "Navigate To", "##eventHandlerType": "Navigate To",
parameters: { parameters: {
@ -69,6 +72,9 @@
{ {
"##eventHandlerType": "Close Screen Modal", "##eventHandlerType": "Close Screen Modal",
}, },
{
"##eventHandlerType": "Close Side Panel",
},
{ {
"##eventHandlerType": "Navigate To", "##eventHandlerType": "Navigate To",
parameters: { parameters: {

View File

@ -313,15 +313,17 @@ const showNotificationHandler = action => {
notificationStore.actions[type]?.(message, autoDismiss) notificationStore.actions[type]?.(message, autoDismiss)
} }
const UpdateSidePanelHandler = action => { const OpenSidePanelHandler = action => {
const { type, id } = action.parameters const { id } = action.parameters
if (type === "hide") { if (id) {
sidePanelStore.actions.close()
} else if (id) {
sidePanelStore.actions.open(id) sidePanelStore.actions.open(id)
} }
} }
const CloseSidePanelHandler = () => {
sidePanelStore.actions.close()
}
const handlerMap = { const handlerMap = {
["Save Row"]: saveRowHandler, ["Save Row"]: saveRowHandler,
["Duplicate Row"]: duplicateRowHandler, ["Duplicate Row"]: duplicateRowHandler,
@ -341,7 +343,8 @@ const handlerMap = {
["Export Data"]: exportDataHandler, ["Export Data"]: exportDataHandler,
["Continue if / Stop if"]: continueIfHandler, ["Continue if / Stop if"]: continueIfHandler,
["Show Notification"]: showNotificationHandler, ["Show Notification"]: showNotificationHandler,
["Update Side Panel"]: UpdateSidePanelHandler, ["Open Side Panel"]: OpenSidePanelHandler,
["Close Side Panel"]: CloseSidePanelHandler,
} }
const confirmTextMap = { const confirmTextMap = {