diff --git a/frontend/src/lib/components/IdEditorInput.svelte b/frontend/src/lib/components/IdEditorInput.svelte index 1f390d517a..820e1fc671 100644 --- a/frontend/src/lib/components/IdEditorInput.svelte +++ b/frontend/src/lib/components/IdEditorInput.svelte @@ -1,24 +1,40 @@ @@ -50,15 +71,17 @@ type="text" bind:value class="!w-auto grow" - on:click|stopPropagation={() => {}} - on:keydown|stopPropagation={({ key }) => { + onclick={stopPropagation(() => {})} + onkeydown={(e) => { + e.stopPropagation() + let key = e.key if (key === 'Enter' && error === '' && value !== initialId) { - dispatch('save', value) + onSave({ oldId: initialId, newId: value }) } else if (key == 'Escape') { - dispatch('close') + onClose?.() } }} - on:keypress|stopPropagation + onkeypress={stopPropagation(bubble('keypress'))} /> { - dispatch('save', value) + onclick={() => { + onSave({ oldId: initialId, newId: value }) }} > {buttonText} diff --git a/frontend/src/lib/components/apps/editor/contextPanel/components/IdEditor.svelte b/frontend/src/lib/components/apps/editor/contextPanel/components/IdEditor.svelte index 99b682af95..9caf4861ac 100644 --- a/frontend/src/lib/components/apps/editor/contextPanel/components/IdEditor.svelte +++ b/frontend/src/lib/components/apps/editor/contextPanel/components/IdEditor.svelte @@ -2,7 +2,7 @@ import type { AppViewerContext } from '$lib/components/apps/types' import { allItems } from '$lib/components/apps/utils' import { Pencil } from 'lucide-svelte' - import { createEventDispatcher, getContext } from 'svelte' + import { getContext } from 'svelte' import IdEditorInput from '$lib/components/IdEditorInput.svelte' import Popover from '$lib/components/meltComponents/Popover.svelte' @@ -10,11 +10,11 @@ interface Props { id: string + onChange: ({ oldId, newId }: { oldId: string; newId: string }) => void + onClose?: () => void } - let { id }: Props = $props() - - const dispatch = createEventDispatcher() + let { id, onChange, onClose }: Props = $props() let reservedIds = $derived(allItems($app.grid, $app.subgrids).map((item) => item.id)) @@ -39,10 +39,10 @@ {#snippet content({ close })} close()} - on:save={(e) => { - dispatch('save', e.detail) - close() + {onClose} + onSave={(e) => { + onChange(e) + onClose?.() }} {reservedIds} /> diff --git a/frontend/src/lib/components/apps/editor/contextPanel/components/OutputHeader.svelte b/frontend/src/lib/components/apps/editor/contextPanel/components/OutputHeader.svelte index 0629dccb21..c1e84dae02 100644 --- a/frontend/src/lib/components/apps/editor/contextPanel/components/OutputHeader.svelte +++ b/frontend/src/lib/components/apps/editor/contextPanel/components/OutputHeader.svelte @@ -74,7 +74,7 @@ indigo: 'bg-indigo-500 text-white' } - function renameId(newId: string): void { + function renameId(oldId: string, newId: string): void { const item = findGridItem($app, id) if (!item) { @@ -84,12 +84,12 @@ item.id = newId const oldSubgrids = Object.keys($app.subgrids ?? {}).filter((subgrid) => - subgrid.startsWith(id + '-') + subgrid.startsWith(oldId + '-') ) oldSubgrids.forEach((subgrid) => { if ($app.subgrids) { - $app.subgrids[subgrid.replace(id, newId)] = $app.subgrids[subgrid] + $app.subgrids[subgrid.replace(oldId, newId)] = $app.subgrids[subgrid] delete $app.subgrids[subgrid] } }) @@ -103,11 +103,11 @@ processRunnable(from, to, x) }) } - propagateRename(id, newId) + propagateRename(oldId, newId) if (item?.data.type == 'tablecomponent') { for (let c of item.data.actionButtons) { let old = c.id - c.id = c.id.replace(id + '_', newId + '_') + c.id = c.id.replace(oldId + '_', newId + '_') propagateRename(old, c.id) } } @@ -121,7 +121,7 @@ ) { for (let c of item.data.actions ?? []) { let old = c.id - c.id = c.id.replace(id + '_', newId + '_') + c.id = c.id.replace(oldId + '_', newId + '_') propagateRename(old, c.id) } } @@ -129,7 +129,7 @@ if (item?.data.type === 'menucomponent') { for (let c of item.data.menuItems) { let old = c.id - c.id = c.id.replace(id + '_', newId + '_') + c.id = c.id.replace(oldId + '_', newId + '_') propagateRename(old, c.id) } } @@ -277,11 +277,7 @@ {#if selectable && renamable && $selectedComponent?.includes(id)} - ($selectedComponent = [id])} - on:save={({ detail }) => renameId(detail)} - /> renameId(oldId, newId)} /> {/if} diff --git a/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte b/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte index 63fc2c88ab..a20460e47b 100644 --- a/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte +++ b/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte @@ -225,11 +225,11 @@ acceptUnderScores reservedIds={dfs(flowStore?.val?.value.modules ?? [], (x) => x.id)} bind:value={newId} - on:save={(e) => { - dispatch('changeId', { id, newId: e.detail, deps: getDeps?.dependents ?? {} }) + onSave={({ oldId, newId }) => { + dispatch('changeId', { id: oldId, newId, deps: getDeps?.dependents ?? {} }) editId = false }} - on:close={() => { + onClose={() => { editId = false }} />