From 99f0fd6c4e819a276ea9bace25e5c54979c56b0d Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 1 Aug 2024 21:54:21 +0200 Subject: [PATCH] fix: app forms default values changes gets propagated --- .../src/lib/components/LightweightArgInput.svelte | 6 ++++-- .../apps/components/buttons/AppSchemaForm.svelte | 12 ++++++++++++ .../components/display/table/AppAggridTable.svelte | 7 ++++++- .../src/lib/components/apps/editor/AppEditor.svelte | 6 +++--- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/frontend/src/lib/components/LightweightArgInput.svelte b/frontend/src/lib/components/LightweightArgInput.svelte index ac925ca030..0dc9e2d892 100644 --- a/frontend/src/lib/components/LightweightArgInput.svelte +++ b/frontend/src/lib/components/LightweightArgInput.svelte @@ -22,6 +22,7 @@ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte' import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte' import FileUpload from './common/fileUpload/FileUpload.svelte' + import { deepEqual } from 'fast-equals' export let css: ComponentCustomCSS<'schemaformcomponent'> | undefined = undefined export let label: string = '' @@ -184,10 +185,11 @@ let prevDefaultValue: any = undefined async function changeDefaultValue(inputCat, defaultValue) { - if (value == null || value == undefined || value == prevDefaultValue) { + if (value == null || value == undefined || deepEqual(value, prevDefaultValue)) { value = defaultValue } - prevDefaultValue = defaultValue + prevDefaultValue = structuredClone(defaultValue) + if (value == null || value == undefined) { if (defaultValue === undefined || defaultValue === null) { if (inputCat === 'string') { diff --git a/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte b/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte index 2149f45d11..fd496a5c0c 100644 --- a/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte +++ b/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte @@ -17,6 +17,7 @@ import { components } from '../../editor/component' import ResolveConfig from '../helpers/ResolveConfig.svelte' import ResolveStyle from '../helpers/ResolveStyle.svelte' + import { deepEqual } from 'fast-equals' export let id: string export let componentInput: AppInput | undefined @@ -88,6 +89,17 @@ ) let valid = true + + let previousDefault = resolvedConfig.defaultValues + + $: resolvedConfig.defaultValues && + !deepEqual(previousDefault, resolvedConfig.defaultValues) && + onDefaultChange() + + function onDefaultChange() { + previousDefault = structuredClone(resolvedConfig.defaultValues) + args = previousDefault ?? {} + } {#each Object.keys(components['schemaformcomponent'].initialData.configuration) as key (key)} diff --git a/frontend/src/lib/components/apps/components/display/table/AppAggridTable.svelte b/frontend/src/lib/components/apps/components/display/table/AppAggridTable.svelte index efe2684d21..aa0ce773f7 100644 --- a/frontend/src/lib/components/apps/components/display/table/AppAggridTable.svelte +++ b/frontend/src/lib/components/apps/components/display/table/AppAggridTable.svelte @@ -306,7 +306,12 @@ onGridReady: (e) => { outputs?.ready.set(true) value = value - if (result && result.length > 0 && resolvedConfig?.selectFirstRowByDefault === true) { + if ( + result && + result.length > 0 && + resolvedConfig?.selectFirstRowByDefault === true && + selectedRowIndex === -1 + ) { e.api.getRowNode('0')?.setSelected(true) } $componentControl[id] = { diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index f8af568761..58650cf296 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -80,9 +80,9 @@ const appStore = writable(app) const selectedComponent = writable(undefined) - $: selectedComponent.subscribe((s) => { - console.log('selectedComponent', s) - }) + // $: selectedComponent.subscribe((s) => { + // console.log('selectedComponent', s) + // }) const mode = writable('dnd') const breakpoint = writable('lg') const summaryStore = writable(summary)