Use explicit actions for opening and closing side panels, and automatically close side panels when using form blocks
This commit is contained in:
parent
8b941df5ff
commit
e37027f808
|
@ -0,0 +1,8 @@
|
||||||
|
<div class="root">This action doesn't require any settings.</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.root {
|
||||||
|
max-width: 400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -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>
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -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: {
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
Loading…
Reference in New Issue