diff --git a/changelog/entries/unreleased/refactor/4268_fix_missing_form_data_after_first_render_ssr.json b/changelog/entries/unreleased/refactor/4268_fix_missing_form_data_after_first_render_ssr.json new file mode 100644 index 0000000000..9fb9d1dbbc --- /dev/null +++ b/changelog/entries/unreleased/refactor/4268_fix_missing_form_data_after_first_render_ssr.json @@ -0,0 +1,9 @@ +{ + "type": "refactor", + "message": "Fix missing form data after first render (SSR)", + "issue_origin": "github", + "issue_number": 4268, + "domain": "builder", + "bullet_points": [], + "created_at": "2025-11-17" +} \ No newline at end of file diff --git a/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElement.vue b/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElement.vue index a87f942b23..716a575ff7 100644 --- a/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElement.vue +++ b/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElement.vue @@ -62,12 +62,6 @@ export default { resolvedLabel() { return ensureString(this.resolveFormula(this.element.label)) }, - resolvedDefaultValue() { - return this.elementType.getInitialFormDataValue( - this.element, - this.applicationContext - ) - }, allowedExtensions() { return this.element.allowed_filetypes .filter((v) => v) @@ -121,6 +115,8 @@ export default { }, }, watch: { + // override the default mixin method because we want to use the one with metadata + resolvedDefaultValue() {}, resolvedDefaultValueWithMetadata: { handler(value) { if (process.client) { diff --git a/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElementForm.vue b/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElementForm.vue index 5592549ab2..e698ec53e7 100644 --- a/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElementForm.vue +++ b/enterprise/web-frontend/modules/baserow_enterprise/builder/components/elements/FileInputElementForm.vue @@ -171,10 +171,10 @@ export default { data() { return { values: { - label: '', - default_name: '', - default_url: '', - help_text: '', + label: {}, + default_name: {}, + default_url: {}, + help_text: {}, required: false, multiple: false, max_filesize: 5, diff --git a/web-frontend/modules/automation/pages/automationWorkflow.vue b/web-frontend/modules/automation/pages/automationWorkflow.vue index 5bfe8eec1a..dc6e2f57f8 100644 --- a/web-frontend/modules/automation/pages/automationWorkflow.vue +++ b/web-frontend/modules/automation/pages/automationWorkflow.vue @@ -48,6 +48,7 @@ import WorkflowEditor from '@baserow/modules/automation/components/workflow/Work import EditorSidePanels from '@baserow/modules/automation/components/workflow/EditorSidePanels' import { AutomationApplicationType } from '@baserow/modules/automation/applicationTypes' import { notifyIf } from '@baserow/modules/core/utils/error' +import { StoreItemLookupError } from '@baserow/modules/core/errors' export default { name: 'AutomationWorkflow', @@ -227,11 +228,12 @@ export default { parseInt(from.params.automationId) ) if (automation) { - const workflow = this.$store.getters['automationWorkflow/getById']( - automation, - parseInt(from.params.workflowId) - ) - if (workflow) { + try { + const workflow = this.$store.getters['automationWorkflow/getById']( + automation, + parseInt(from.params.workflowId) + ) + this.$store.dispatch('automationWorkflowNode/select', { workflow, node: null, @@ -240,6 +242,10 @@ export default { application: automation, data: { _loadedOnce: false }, }) + } catch (e) { + if (!(e instanceof StoreItemLookupError)) { + throw e + } } } next() diff --git a/web-frontend/modules/builder/components/elements/components/CheckboxElement.vue b/web-frontend/modules/builder/components/elements/components/CheckboxElement.vue index 733f2b4e88..5bb49e300b 100644 --- a/web-frontend/modules/builder/components/elements/components/CheckboxElement.vue +++ b/web-frontend/modules/builder/components/elements/components/CheckboxElement.vue @@ -20,33 +20,15 @@ diff --git a/web-frontend/modules/builder/components/elements/components/ChoiceElement.vue b/web-frontend/modules/builder/components/elements/components/ChoiceElement.vue index 9f4917dad3..85d4bc2cc4 100644 --- a/web-frontend/modules/builder/components/elements/components/ChoiceElement.vue +++ b/web-frontend/modules/builder/components/elements/components/ChoiceElement.vue @@ -57,13 +57,7 @@