From 64b92329ecf91f54565fbdc47d5049d74eb52fba Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Mon, 15 Dec 2025 07:43:35 +0000 Subject: [PATCH] Ensure that table element fields can be styled. (#4427) * Ensure that nested styles work in the new custom style components. --- .../contrib/builder/elements/element_types.py | 6 ++- ...evented_the_table_element_fields_from.json | 9 ++++ .../collectionField/form/BooleanFieldForm.vue | 1 + .../collectionField/form/LinkFieldForm.vue | 1 + .../collectionField/form/TagsFieldForm.vue | 1 + .../collectionField/form/TextFieldForm.vue | 1 + .../forms/style/CustomStyleButton.vue | 8 +++- .../forms/style/CustomStyleForm.vue | 6 +-- .../page/sidePanels/GeneralSidePanel.vue | 41 +++++++++++++------ .../builder/mixins/collectionFieldForm.js | 25 +++++++++++ .../builder/mixins/elementSidePanel.js | 2 +- 11 files changed, 83 insertions(+), 18 deletions(-) create mode 100644 changelog/entries/unreleased/bug/resolved_a_bug_which_prevented_the_table_element_fields_from.json diff --git a/backend/src/baserow/contrib/builder/elements/element_types.py b/backend/src/baserow/contrib/builder/elements/element_types.py index e4e8549ec6..46a05485ce 100644 --- a/backend/src/baserow/contrib/builder/elements/element_types.py +++ b/backend/src/baserow/contrib/builder/elements/element_types.py @@ -322,6 +322,7 @@ def serializer_field_overrides(self): ) from baserow.contrib.builder.theme.theme_config_block_types import ( ButtonThemeConfigBlockType, + TypographyThemeConfigBlockType, ) return { @@ -336,7 +337,10 @@ def serializer_field_overrides(self): property_name=["button", "table", "header_button"], theme_config_block_type_name=[ ButtonThemeConfigBlockType.type, - TableThemeConfigBlockType.type, + [ + TableThemeConfigBlockType.type, + TypographyThemeConfigBlockType.type, + ], ButtonThemeConfigBlockType.type, ], serializer_kwargs={"required": False}, diff --git a/changelog/entries/unreleased/bug/resolved_a_bug_which_prevented_the_table_element_fields_from.json b/changelog/entries/unreleased/bug/resolved_a_bug_which_prevented_the_table_element_fields_from.json new file mode 100644 index 0000000000..9c9308f029 --- /dev/null +++ b/changelog/entries/unreleased/bug/resolved_a_bug_which_prevented_the_table_element_fields_from.json @@ -0,0 +1,9 @@ +{ + "type": "bug", + "message": "Resolved a bug which prevented the table element fields from being styled.", + "issue_origin": "github", + "issue_number": null, + "domain": "builder", + "bullet_points": [], + "created_at": "2025-12-11" +} \ No newline at end of file diff --git a/web-frontend/modules/builder/components/elements/components/collectionField/form/BooleanFieldForm.vue b/web-frontend/modules/builder/components/elements/components/collectionField/form/BooleanFieldForm.vue index a4ed9519ff..bef536429e 100644 --- a/web-frontend/modules/builder/components/elements/components/collectionField/form/BooleanFieldForm.vue +++ b/web-frontend/modules/builder/components/elements/components/collectionField/form/BooleanFieldForm.vue @@ -17,6 +17,7 @@ style-key="cell" :config-block-types="['table']" :theme="baseTheme" + :on-styles-changed="onFieldStylesChanged" :extra-args="{ onlyCell: true, noAlignment: true }" variant="normal" /> diff --git a/web-frontend/modules/builder/components/elements/components/collectionField/form/LinkFieldForm.vue b/web-frontend/modules/builder/components/elements/components/collectionField/form/LinkFieldForm.vue index 1141cd8297..661e336fd9 100644 --- a/web-frontend/modules/builder/components/elements/components/collectionField/form/LinkFieldForm.vue +++ b/web-frontend/modules/builder/components/elements/components/collectionField/form/LinkFieldForm.vue @@ -18,6 +18,7 @@ style-key="cell" :config-block-types="linkFieldBlockTypes" :theme="baseTheme" + :on-styles-changed="onFieldStylesChanged" :extra-args="{ onlyCell: true, noAlignment: true }" variant="normal" /> diff --git a/web-frontend/modules/builder/components/elements/components/collectionField/form/TagsFieldForm.vue b/web-frontend/modules/builder/components/elements/components/collectionField/form/TagsFieldForm.vue index 91cf9d588d..e4ebfd5fa2 100644 --- a/web-frontend/modules/builder/components/elements/components/collectionField/form/TagsFieldForm.vue +++ b/web-frontend/modules/builder/components/elements/components/collectionField/form/TagsFieldForm.vue @@ -17,6 +17,7 @@ style-key="cell" :config-block-types="['table', 'typography']" :theme="baseTheme" + :on-styles-changed="onFieldStylesChanged" :extra-args="{ onlyCell: true, onlyBody: true, noAlignment: true }" variant="normal" /> diff --git a/web-frontend/modules/builder/components/elements/components/collectionField/form/TextFieldForm.vue b/web-frontend/modules/builder/components/elements/components/collectionField/form/TextFieldForm.vue index 21a287ace1..5959547104 100644 --- a/web-frontend/modules/builder/components/elements/components/collectionField/form/TextFieldForm.vue +++ b/web-frontend/modules/builder/components/elements/components/collectionField/form/TextFieldForm.vue @@ -17,6 +17,7 @@ style-key="cell" :config-block-types="['table', 'typography']" :theme="baseTheme" + :on-styles-changed="onFieldStylesChanged" :extra-args="{ onlyCell: true, onlyBody: true, noAlignment: true }" variant="normal" /> diff --git a/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleButton.vue b/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleButton.vue index daf3f731dc..8831dd69c6 100644 --- a/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleButton.vue +++ b/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleButton.vue @@ -48,6 +48,11 @@ export default { required: false, default: () => null, }, + onStylesChanged: { + type: Function, + required: false, + default: null, + }, }, methods: { /** @@ -59,8 +64,9 @@ export default { theme: this.theme, styleKey: this.styleKey, extraArgs: this.extraArgs, + onStylesChanged: this.onStylesChanged, configBlockTypes: this.configBlockTypes, - defaultValues: this.value?.[this.styleKey], + defaultStyleValues: this.value?.[this.styleKey], }) }, }, diff --git a/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleForm.vue b/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleForm.vue index b05b4f89f1..89fa658537 100644 --- a/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleForm.vue +++ b/web-frontend/modules/builder/components/elements/components/forms/style/CustomStyleForm.vue @@ -16,9 +16,9 @@
} configBlockTypes - The types of config blocks * to render for this custom style form. */ diff --git a/web-frontend/modules/builder/components/page/sidePanels/GeneralSidePanel.vue b/web-frontend/modules/builder/components/page/sidePanels/GeneralSidePanel.vue index 2f3d95e968..73a39f1fda 100644 --- a/web-frontend/modules/builder/components/page/sidePanels/GeneralSidePanel.vue +++ b/web-frontend/modules/builder/components/page/sidePanels/GeneralSidePanel.vue @@ -2,7 +2,7 @@
{ + if (field.id === this.defaultValues.id) { + return { + ...field, + styles: { ...field.styles, [styleKey]: newStyleValues }, + } + } + return field + }) + return elementToUpdate + }, + }, } diff --git a/web-frontend/modules/builder/mixins/elementSidePanel.js b/web-frontend/modules/builder/mixins/elementSidePanel.js index e7b0f1d7ed..1a82d1103a 100644 --- a/web-frontend/modules/builder/mixins/elementSidePanel.js +++ b/web-frontend/modules/builder/mixins/elementSidePanel.js @@ -63,7 +63,7 @@ export default { this.element, this.workspace.id ) || - !this.$refs.panelForm?.isFormValid(true) + (this.$refs.panelForm && !this.$refs.panelForm?.isFormValid(true)) ) { return }