Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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"
}
Original file line number Diff line number Diff line change
@@ -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"
}
16 changes: 13 additions & 3 deletions web-frontend/modules/database/arrayFilterMixins.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 ?? ''),
}))
Expand All @@ -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
)
},
Expand All @@ -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
)
},
Expand Down
16 changes: 12 additions & 4 deletions web-frontend/modules/database/pages/APIDocsDatabase.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@
<nuxt-link :to="{ name: 'index' }" class="api-docs__logo">
<Logo />
</nuxt-link>
<a
<button
ref="databasesToggle"
type="button"
class="api-docs__switch"
@click.prevent="databasesOpen.value = !databasesOpen.value"
:aria-expanded="databasesOpen"
aria-controls="api-docs-databases"
@click="databasesOpen = !databasesOpen"
>
<i class="api-docs__switch-icon iconoir-db"></i>
{{ $t('apiDocsDatabase.pageTitle', database) }}
</a>
</button>
<div class="api-docs__open">
<Button
v-if="database.tables.length > 0"
Expand All @@ -28,7 +31,12 @@
>
</div>
</div>
<div v-show="databasesOpen" ref="databases" class="api-docs__databases">
<div
v-show="databasesOpen"
id="api-docs-databases"
ref="databases"
class="api-docs__databases"
>
<div class="api-docs__databases-inner">
<APIDocsSelectDatabase :selected="database.id" />
<nuxt-link :to="{ name: 'dashboard' }" class="select-application__back">
Expand Down
Loading