triggers panel polishing (#5825)

* Allways use custom label for triggers

* Add default path name for new schedule

* Improve warning message

* Add confirmation modal for deleting triggers
This commit is contained in:
Guilhem
2025-05-28 10:19:31 +02:00
committed by GitHub
parent 427d7551ca
commit ccd24e610c
23 changed files with 136 additions and 133 deletions
@@ -33,9 +33,7 @@
bind:this={scheduleEditor}
hideTarget
allowDraft
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
primary={selectedTrigger.isPrimary}
trigger={selectedTrigger}
draftSchema={schema}
{customLabel}
{...restProps}
@@ -307,7 +307,8 @@
<div class="mt-4 mb-2">
{#if displayAlert}
<Alert type="warning" title="Trigger deployed" size="xs" class="mb-4">
Capturing will suscribe to the trigger endpoint. Treat carefully.
Capturing on a deployed trigger can cause event loss on the deployed trigger. Treat
carefully.
</Alert>
{/if}
<Description>
@@ -0,0 +1,53 @@
<script lang="ts">
import { Trash } from 'lucide-svelte'
import Button from '../common/button/Button.svelte'
import ConfirmationModal from '../common/confirmationModal/ConfirmationModal.svelte'
import { triggerIconMap, type Trigger } from './utils'
import TriggerLabel from './TriggerLabel.svelte'
import { twMerge } from 'tailwind-merge'
interface Props {
onDelete: (() => void) | undefined
trigger?: Trigger
small?: boolean
}
let { onDelete, trigger = undefined, small = false }: Props = $props()
let confirmationModalOpen = $state(false)
</script>
<ConfirmationModal
title="Are you sure you want to delete this draft trigger ?"
confirmationText="Delete"
open={confirmationModalOpen}
on:canceled={() => {
confirmationModalOpen = false
}}
on:confirmed={() => {
onDelete?.()
confirmationModalOpen = false
}}
>
{#if trigger !== undefined}
{@const IconComponent = triggerIconMap[trigger.type]}
<div class="flex flex-row gap-2 items-center grow min-w-0 pr-2 rounded-md my-4">
<IconComponent
size={16}
class={twMerge(trigger.isDraft ? 'text-frost-400' : '', 'shrink-0')}
/>
<TriggerLabel {trigger} />
</div>
{/if}
</ConfirmationModal>
<Button
size="xs"
startIcon={{ icon: Trash }}
iconOnly
color={'light'}
on:click={() => {
confirmationModalOpen = true
}}
btnClasses={twMerge(small ? 'px-1 py-1' : '', 'bg-transparent hover:bg-red-500 hover:text-white')}
/>
@@ -1,13 +1,13 @@
<script lang="ts">
import Button from '$lib/components/common/button/Button.svelte'
import { Trash, Save, RotateCcw } from 'lucide-svelte'
import { Save, RotateCcw } from 'lucide-svelte'
import { type Snippet } from 'svelte'
import Toggle from '$lib/components/Toggle.svelte'
import { Tooltip } from '../meltComponents'
import DeleteTriggerButton from './DeleteTriggerButton.svelte'
import type { Trigger } from './utils'
interface Props {
isDraftOnly: any
hasDraft: any
saveDisabled: any
enabled: boolean | undefined
allowDraft: any
@@ -21,12 +21,10 @@
onToggleEnabled?: (enabled: boolean) => void
onUpdate?: () => void
cloudDisabled?: boolean
triggerType?: string
trigger?: Trigger
}
let {
isDraftOnly,
hasDraft,
saveDisabled,
enabled,
allowDraft,
@@ -39,7 +37,8 @@
onReset,
onToggleEnabled,
onUpdate,
cloudDisabled = false
cloudDisabled = false,
trigger
}: Props = $props()
const canSave = $derived((permissions === 'write' && edit) || permissions === 'create')
@@ -73,7 +72,7 @@
{/if}
{:else}
<div class="flex flex-row gap-2 items-center">
{#if !isDraftOnly && !hasDraft && enabled !== undefined}
{#if !trigger?.draftConfig && enabled !== undefined}
<div class="center-center">
<Toggle
size="2sm"
@@ -86,18 +85,9 @@
/>
</div>
{/if}
{#if isDraftOnly}
<Button
size="xs"
startIcon={{ icon: Trash }}
iconOnly
color={'light'}
on:click={() => {
onDelete?.()
}}
btnClasses="hover:bg-red-500 hover:text-white"
/>
{:else if hasDraft}
{#if trigger?.isDraft}
<DeleteTriggerButton {onDelete} {trigger} />
{:else if !trigger?.isDraft && trigger?.draftConfig}
<Button
size="xs"
startIcon={{ icon: RotateCcw }}
@@ -109,7 +99,7 @@
Reset changes
</Button>
{/if}
{#if canSave && (isDraftOnly || hasDraft)}
{#if canSave && trigger?.draftConfig}
<Tooltip placement="bottom-end" disablePopup={!saveDisabled && !cloudDisabled && isDeployed}>
<Button
size="xs"
@@ -120,7 +110,7 @@
}}
loading={isLoading}
>
{isDraftOnly ? 'Deploy' : 'Update'}
{trigger?.isDraft ? 'Deploy' : 'Update'}
</Button>
<span slot="text">
{#if !isDeployed}
@@ -128,7 +118,7 @@
{:else if cloudDisabled}
This trigger is disabled in the multi-tenant cloud
{:else}
Enter a valid config to {isDraftOnly ? 'deploy' : 'update'} the trigger
Enter a valid config to {trigger?.isDraft ? 'deploy' : 'update'} the trigger
{/if}
</span>
</Tooltip>
@@ -1,11 +1,12 @@
<script lang="ts">
import DataTable from '$lib/components/table/DataTable.svelte'
import Button from '$lib/components/common/button/Button.svelte'
import { Plus, Star, Loader2, Trash, RotateCcw } from 'lucide-svelte'
import { Plus, Star, Loader2, RotateCcw } from 'lucide-svelte'
import { twMerge } from 'tailwind-merge'
import { triggerIconMap, type Trigger, type TriggerType } from './utils'
import AddTriggersButton from './AddTriggersButton.svelte'
import TriggerLabel from './TriggerLabel.svelte'
import DeleteTriggerButton from './DeleteTriggerButton.svelte'
interface Props {
// Props
@@ -94,14 +95,7 @@
{#if !['email', 'webhook', 'cli'].includes(trigger.type)}
{#if trigger.isDraft}
<Button
size="xs"
color="light"
btnClasses="transition-all duration-200 text-transparent hover:bg-surface group-hover:text-primary bg-transparent px-1 py-1"
startIcon={{ icon: Trash }}
iconOnly
on:click={() => onDeleteDraft?.(index)}
/>
<DeleteTriggerButton {trigger} onDelete={() => onDeleteDraft?.(index)} small />
{:else if !!trigger.draftConfig && !trigger.isDraft}
<Button
size="xs"
@@ -58,7 +58,7 @@
{isFlow}
path={initialPath || fakeInitialPath}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'webhook'}
@@ -86,7 +86,7 @@
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
{schema}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'websocket'}
@@ -95,7 +95,7 @@
path={initialPath || fakeInitialPath}
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'kafka'}
@@ -104,7 +104,7 @@
path={initialPath || fakeInitialPath}
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'postgres'}
@@ -113,7 +113,7 @@
path={initialPath || fakeInitialPath}
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'nats'}
@@ -122,7 +122,7 @@
path={initialPath || fakeInitialPath}
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'mqtt'}
@@ -131,7 +131,7 @@
path={initialPath || fakeInitialPath}
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'sqs'}
@@ -140,7 +140,7 @@
path={initialPath || fakeInitialPath}
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'gcp'}
@@ -149,7 +149,7 @@
path={initialPath || fakeInitialPath}
{selectedTrigger}
defaultValues={selectedTrigger.draftConfig ?? selectedTrigger.captureConfig ?? undefined}
customLabel={small ? customLabel : undefined}
{customLabel}
{...props}
/>
{:else if selectedTrigger.type === 'poll'}
@@ -21,7 +21,7 @@
import type { Snippet } from 'svelte'
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte'
import { saveGcpTriggerFromCfg } from './utils'
import { handleConfigChange } from '../utils'
import { handleConfigChange, type Trigger } from '../utils'
let drawer: Drawer | undefined = $state(undefined)
let is_flow: boolean = $state(false)
@@ -55,8 +55,7 @@
hideTooltips = false,
isEditor = false,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
trigger = undefined,
isDeployed = false,
customLabel = undefined,
onConfigChange = undefined,
@@ -72,8 +71,7 @@
hideTooltips?: boolean
isEditor?: boolean
allowDraft?: boolean
hasDraft?: boolean
isDraftOnly?: boolean
trigger?: Trigger
isDeployed?: boolean
customLabel?: Snippet
onConfigChange?: (cfg: Record<string, any>, saveDisabled: boolean, updated: boolean) => void
@@ -225,7 +223,7 @@
async function handleToggleEnabled(toggleEnabled: boolean) {
enabled = toggleEnabled
if (!isDraftOnly && !hasDraft) {
if (!trigger?.draftConfig) {
await GcpTriggerService.setGcpTriggerEnabled({
path: initialPath,
workspace: $workspaceStore ?? '',
@@ -279,8 +277,6 @@
{#snippet actionsButtons()}
{#if !drawerLoading && can_write}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
permissions={drawerLoading || !can_write ? 'none' : 'create'}
{saveDisabled}
{enabled}
@@ -293,6 +289,7 @@
{onDelete}
onToggleEnabled={handleToggleEnabled}
{cloudDisabled}
{trigger}
/>
{/if}
{/snippet}
@@ -44,8 +44,7 @@
hideTarget
hideTooltips={!isDeployed || cloudDisabled}
allowDraft={true}
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
{customLabel}
{isDeployed}
{cloudDisabled}
@@ -39,15 +39,14 @@
description = undefined,
isEditor = false,
customLabel = undefined,
isDraftOnly = false,
allowDraft = false,
hasDraft = false,
isDeployed = false,
onConfigChange = undefined,
onCaptureConfigChange = undefined,
onUpdate = undefined,
onDelete = undefined,
onReset = undefined
onReset = undefined,
trigger = undefined
} = $props()
// Form data state
@@ -526,7 +525,7 @@
{can_write}
bind:static_asset_config
showTestingBadge={isEditor}
{isDraftOnly}
isDraftOnly={trigger?.isDraft}
/>
{#if !is_static_website}
@@ -717,8 +716,7 @@
{#snippet saveButton()}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={drawerLoading || !can_write ? 'none' : can_write && isAdmin ? 'create' : 'write'}
{saveDisabled}
enabled={undefined}
@@ -37,9 +37,8 @@
hideTarget
{isEditor}
{customLabel}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
allowDraft
hasDraft={!!selectedTrigger.draftConfig}
{...restProps}
>
{#snippet description()}
@@ -15,7 +15,7 @@
import type { Snippet } from 'svelte'
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte'
import { saveKafkaTriggerFromCfg } from './utils'
import { handleConfigChange } from '../utils'
import { handleConfigChange, type Trigger } from '../utils'
interface Props {
useDrawer?: boolean
@@ -24,8 +24,7 @@
hideTooltips?: boolean
isEditor?: boolean
allowDraft?: boolean
hasDraft?: boolean
isDraftOnly?: boolean
trigger?: Trigger
customLabel?: Snippet
isDeployed?: boolean
cloudDisabled?: boolean
@@ -43,8 +42,7 @@
hideTooltips = false,
isEditor = false,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
trigger = undefined,
customLabel,
isDeployed = false,
cloudDisabled = false,
@@ -281,8 +279,7 @@
{#snippet actionsButtons(size: 'xs' | 'sm' = 'sm')}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={drawerLoading || !can_write ? 'none' : 'create'}
{enabled}
{allowDraft}
@@ -45,8 +45,7 @@
hideTarget
hideTooltips={!isDeployed || cloudDisabled}
allowDraft={true}
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
{customLabel}
{isDeployed}
{cloudDisabled}
@@ -21,7 +21,7 @@
import type { Snippet } from 'svelte'
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte'
import { saveMqttTriggerFromCfg } from './utils'
import { handleConfigChange } from '../utils'
import { handleConfigChange, type Trigger } from '../utils'
interface Props {
useDrawer?: boolean
@@ -30,8 +30,7 @@
hideTooltips?: boolean
isEditor?: boolean
allowDraft?: boolean
hasDraft?: boolean
isDraftOnly?: boolean
trigger?: Trigger
customLabel?: Snippet
isDeployed?: boolean
cloudDisabled?: boolean
@@ -49,8 +48,7 @@
hideTooltips = false,
isEditor = false,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
trigger = undefined,
customLabel = undefined,
isDeployed = false,
onConfigChange = undefined,
@@ -238,7 +236,7 @@
async function handleToggleEnabled(newEnabled: boolean) {
enabled = newEnabled
if (!isDraftOnly && !hasDraft) {
if (!trigger?.draftConfig) {
await MqttTriggerService.setMqttTriggerEnabled({
path: initialPath,
workspace: $workspaceStore ?? '',
@@ -292,8 +290,7 @@
{#snippet actions()}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={drawerLoading || !can_write ? 'none' : 'create'}
{saveDisabled}
{enabled}
@@ -39,8 +39,7 @@
hideTarget
hideTooltips={!isDeployed || cloudDisabled}
allowDraft={true}
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
{customLabel}
{isDeployed}
{cloudDisabled}
@@ -15,7 +15,7 @@
import type { Snippet } from 'svelte'
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte'
import { saveNatsTriggerFromCfg } from './utils'
import { handleConfigChange } from '../utils'
import { handleConfigChange, type Trigger } from '../utils'
interface Props {
useDrawer?: boolean
@@ -25,8 +25,7 @@
useEditButton?: boolean
isEditor?: boolean
allowDraft?: boolean
hasDraft?: boolean
isDraftOnly?: boolean
trigger?: Trigger
isDeployed?: boolean
cloudDisabled?: boolean
customLabel?: Snippet
@@ -44,8 +43,7 @@
hideTooltips = false,
isEditor = false,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
trigger = undefined,
isDeployed = false,
cloudDisabled = false,
customLabel = undefined,
@@ -227,7 +225,7 @@
async function handleToggleEnabled(toggleEnabled: boolean) {
enabled = toggleEnabled
if (!isDraftOnly && !hasDraft) {
if (!trigger?.draftConfig) {
await NatsTriggerService.setNatsTriggerEnabled({
path: initialPath,
workspace: $workspaceStore ?? '',
@@ -285,8 +283,7 @@
{#snippet actions()}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={drawerLoading || !can_write ? 'none' : 'create'}
{saveDisabled}
{enabled}
@@ -45,8 +45,7 @@
hideTooltips={!isDeployed}
useEditButton
allowDraft={true}
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
{customLabel}
{isDeployed}
{cloudDisabled}
@@ -28,7 +28,7 @@
import type { Snippet } from 'svelte'
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte'
import TestingBadge from '../testingBadge.svelte'
import { handleConfigChange } from '../utils'
import { handleConfigChange, type Trigger } from '../utils'
import { fade } from 'svelte/transition'
interface Props {
@@ -38,8 +38,7 @@
isEditor?: boolean
hideTooltips?: boolean
allowDraft?: boolean
hasDraft?: boolean
isDraftOnly?: boolean
trigger?: Trigger
isDeployed?: boolean
cloudDisabled?: boolean
customLabel?: Snippet
@@ -57,8 +56,7 @@
isEditor = false,
hideTooltips = false,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
trigger = undefined,
isDeployed = false,
cloudDisabled = false,
customLabel = undefined,
@@ -378,7 +376,7 @@
async function handleToggleEnabled(toggleEnabled: boolean) {
enabled = toggleEnabled
if (!isDraftOnly && !hasDraft) {
if (!trigger?.draftConfig) {
await PostgresTriggerService.setPostgresTriggerEnabled({
path: initialPath,
workspace: $workspaceStore ?? '',
@@ -430,8 +428,7 @@
{#snippet actions()}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={drawerLoading || !can_write ? 'none' : 'create'}
{saveDisabled}
{allowDraft}
@@ -41,8 +41,7 @@
hideTarget
hideTooltips={!isDeployed || cloudDisabled}
allowDraft={true}
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
{isEditor}
{isDeployed}
{cloudDisabled}
@@ -40,16 +40,14 @@
hideTarget = false,
docDescription = undefined,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
primary = false,
draftSchema = undefined,
customLabel = undefined,
isDeployed = false,
onUpdate = undefined,
onConfigChange = undefined,
onDelete = undefined,
onReset = undefined
onReset = undefined,
trigger = undefined
} = $props()
let optionTabSelected: 'error_handler' | 'recovery_handler' | 'success_handler' | 'retries' =
@@ -289,8 +287,9 @@
edit = false
itemKind = is_flow ? 'flow' : 'script'
initialScriptPath = initial_script_path ?? ''
path = initNewPath ? '' : (defaultValues?.path ?? initialScriptPath)
path = initNewPath
? ''
: (defaultValues?.path ?? (trigger?.isPrimary ? initialScriptPath : ''))
initialPath = path
cronVersion = s?.cron_version ?? 'v2'
initialCronVersion = cronVersion
@@ -664,7 +663,7 @@
async function handleToggleEnabled(nEnabled: boolean) {
enabled = nEnabled
if (!isDraftOnly && !hasDraft) {
if (!trigger?.draftConfig) {
await ScheduleService.setScheduleEnabled({
path: initialPath,
workspace: $workspaceStore ?? '',
@@ -684,8 +683,7 @@
{#snippet saveButton()}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={drawerLoading || !can_write ? 'none' : 'create'}
{saveDisabled}
{enabled}
@@ -761,11 +759,11 @@
</Label>
</div>
<Label label="Path">
{#if !edit && !primary}
{#if !edit && !trigger?.isPrimary}
<Path
bind:dirty={dirtyPath}
bind:this={pathC}
checkInitialPathExistence
checkInitialPathExistence={!edit}
bind:error={pathError}
bind:path
{initialPath}
@@ -15,7 +15,7 @@
import type { Snippet } from 'svelte'
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte'
import { saveSqsTriggerFromCfg } from './utils'
import { handleConfigChange } from '../utils'
import { handleConfigChange, type Trigger } from '../utils'
interface Props {
useDrawer?: boolean
@@ -23,8 +23,7 @@
hideTarget?: boolean
hideTooltips?: boolean
allowDraft?: boolean
hasDraft?: boolean
isDraftOnly?: boolean
trigger?: Trigger
isEditor?: boolean
customLabel?: Snippet
isDeployed?: boolean
@@ -42,8 +41,7 @@
hideTarget = false,
hideTooltips = false,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
trigger = undefined,
isEditor = false,
customLabel = undefined,
isDeployed = false,
@@ -194,7 +192,7 @@
async function handleToggleEnabled(nEnabled: boolean) {
enabled = nEnabled
if (!isDraftOnly && !hasDraft) {
if (!trigger?.draftConfig) {
await SqsTriggerService.setSqsTriggerEnabled({
path: initialPath,
workspace: $workspaceStore ?? '',
@@ -275,8 +273,7 @@
{#snippet actions()}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={drawerLoading || !can_write ? 'none' : 'create'}
{saveDisabled}
{enabled}
@@ -45,8 +45,7 @@
hideTarget
hideTooltips={!isDeployed || cloudDisabled}
allowDraft={true}
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
{customLabel}
{isDeployed}
{cloudDisabled}
@@ -28,7 +28,7 @@
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte'
import { saveWebsocketTriggerFromCfg } from './utils'
import { handleConfigChange } from '../utils'
import { handleConfigChange, type Trigger } from '../utils'
interface Props {
useDrawer?: boolean
@@ -38,8 +38,7 @@
useEditButton?: boolean
isEditor?: boolean
allowDraft?: boolean
hasDraft?: boolean
isDraftOnly?: boolean
trigger?: Trigger
isDeployed?: boolean
cloudDisabled?: boolean
customLabel?: Snippet
@@ -57,8 +56,7 @@
hideTooltips = false,
isEditor = false,
allowDraft = false,
hasDraft = false,
isDraftOnly = false,
trigger = undefined,
isDeployed = false,
customLabel = undefined,
onConfigChange = undefined,
@@ -288,7 +286,7 @@
async function handleToggleEnabled(newEnabled: boolean) {
enabled = newEnabled
if (!isDraftOnly && !hasDraft) {
if (!trigger?.draftConfig) {
await WebsocketTriggerService.setWebsocketTriggerEnabled({
path: initialPath,
workspace: $workspaceStore!,
@@ -342,8 +340,7 @@
{#snippet actionsButtons()}
{#if !drawerLoading}
<TriggerEditorToolbar
{isDraftOnly}
{hasDraft}
{trigger}
permissions={!drawerLoading && can_write ? 'create' : 'none'}
{enabled}
{allowDraft}
@@ -38,8 +38,7 @@
hideTarget
hideTooltips={!isDeployed || cloudDisabled}
allowDraft={true}
hasDraft={!!selectedTrigger.draftConfig}
isDraftOnly={selectedTrigger.isDraft}
trigger={selectedTrigger}
{customLabel}
{isDeployed}
{cloudDisabled}