From 004d2b54e1dc7406ba7895d9f6836560d3111f35 Mon Sep 17 00:00:00 2001
From: Davide Silvestri <75379892+silvestrid@users.noreply.github.com>
Date: Fri, 17 Apr 2026 20:58:05 +0200
Subject: [PATCH 1/2] fix: prevent database API docs toggle crash (#5213)
* fix: prevent database API docs toggle crash
Use Vue's template ref unwrapping correctly so opening the database selector no longer crashes the API docs page. Add a regression test covering the toggle interaction.
* fix: address API docs review feedback
Unmount the API docs page in the regression test to avoid leaking listeners between tests. Update the database list toggle to use button semantics and keep the existing styling.
---
.../bug/fix_database_api_docs_toggle_crash.json | 9 +++++++++
.../modules/database/pages/APIDocsDatabase.vue | 16 ++++++++++++----
2 files changed, 21 insertions(+), 4 deletions(-)
create mode 100644 changelog/entries/unreleased/bug/fix_database_api_docs_toggle_crash.json
diff --git a/changelog/entries/unreleased/bug/fix_database_api_docs_toggle_crash.json b/changelog/entries/unreleased/bug/fix_database_api_docs_toggle_crash.json
new file mode 100644
index 0000000000..c1f5f3ec2b
--- /dev/null
+++ b/changelog/entries/unreleased/bug/fix_database_api_docs_toggle_crash.json
@@ -0,0 +1,9 @@
+{
+ "type": "bug",
+ "message": "Fix the database API docs page crashing when opening the database list from the header.",
+ "issue_origin": "github",
+ "issue_number": 5212,
+ "domain": "database",
+ "bullet_points": [],
+ "created_at": "2026-04-16"
+}
diff --git a/web-frontend/modules/database/pages/APIDocsDatabase.vue b/web-frontend/modules/database/pages/APIDocsDatabase.vue
index 5b1ed562a9..8f448c3dc0 100644
--- a/web-frontend/modules/database/pages/APIDocsDatabase.vue
+++ b/web-frontend/modules/database/pages/APIDocsDatabase.vue
@@ -4,14 +4,17 @@
-
{{ $t('apiDocsDatabase.pageTitle', database) }}
-
+
-
+
From 5b7a0d9a47e5c9353163f60322454e395c33e4e1 Mon Sep 17 00:00:00 2001
From: Davide Silvestri <75379892+silvestrid@users.noreply.github.com>
Date: Fri, 17 Apr 2026 20:58:18 +0200
Subject: [PATCH 2/2] fix: prevent database null filter crash (#5218)
* fix issue
* chore: link database null-filter changelog issue
Attach the newly created GitHub issue to the unreleased database bugfix changelog entry for the null select-value filter crash.
---
...base_filter_crash_for_null_select_values.json | 9 +++++++++
.../modules/database/arrayFilterMixins.js | 16 +++++++++++++---
2 files changed, 22 insertions(+), 3 deletions(-)
create mode 100644 changelog/entries/unreleased/bug/fix_database_filter_crash_for_null_select_values.json
diff --git a/changelog/entries/unreleased/bug/fix_database_filter_crash_for_null_select_values.json b/changelog/entries/unreleased/bug/fix_database_filter_crash_for_null_select_values.json
new file mode 100644
index 0000000000..d7c9e1e394
--- /dev/null
+++ b/changelog/entries/unreleased/bug/fix_database_filter_crash_for_null_select_values.json
@@ -0,0 +1,9 @@
+{
+ "type": "bug",
+ "message": "Fix database filters crashing when select option cells are temporarily null during row evaluation.",
+ "issue_origin": "github",
+ "issue_number": 5217,
+ "domain": "database",
+ "bullet_points": [],
+ "created_at": "2026-04-16"
+}
diff --git a/web-frontend/modules/database/arrayFilterMixins.js b/web-frontend/modules/database/arrayFilterMixins.js
index 91e3593f1c..7e3678fe0d 100644
--- a/web-frontend/modules/database/arrayFilterMixins.js
+++ b/web-frontend/modules/database/arrayFilterMixins.js
@@ -260,13 +260,17 @@ export const baserowFormulaArrayTypeFilterMixin = {
},
}
+const getArrayFilterCellValue = (cellValue) => {
+ return Array.isArray(cellValue) ? cellValue : []
+}
+
export const hasSelectOptionIdEqualMixin = Object.assign(
{},
hasValueEqualFilterMixin,
{
getHasValueEqualFilterFunction(field) {
const mapOptionIdsToValues = (cellVal) =>
- cellVal.map((v) => ({
+ getArrayFilterCellValue(cellVal).map((v) => ({
id: v.id,
value: String(v.value?.id ?? ''),
}))
@@ -292,7 +296,10 @@ export const hasSelectOptionValueContainsFilterMixin = Object.assign(
getHasValueContainsFilterFunction(field) {
return (cellValue, filterValue) =>
genericHasValueContainsFilter(
- cellValue.map((v) => ({ id: v.id, value: v.value?.value || '' })),
+ getArrayFilterCellValue(cellValue).map((v) => ({
+ id: v.id,
+ value: v.value?.value || '',
+ })),
filterValue
)
},
@@ -306,7 +313,10 @@ export const hasSelectOptionValueContainsWordFilterMixin = Object.assign(
getHasValueContainsWordFilterFunction(field) {
return (cellValue, filterValue) =>
genericHasValueContainsWordFilter(
- cellValue.map((v) => ({ id: v.id, value: v.value?.value || '' })),
+ getArrayFilterCellValue(cellValue).map((v) => ({
+ id: v.id,
+ value: v.value?.value || '',
+ })),
filterValue
)
},