From 629894f49fd895361fe522c82ecdbad319737eda Mon Sep 17 00:00:00 2001 From: Jonathan Adeline Date: Thu, 19 Feb 2026 18:36:00 +0400 Subject: [PATCH 1/5] Fix datepicker i18n issue (#4825) --- .../crudTable/filters/DateFilter.vue | 7 ++-- .../core/composables/useDatePickerLanguage.js | 38 +++++++++++++++++++ .../components/row/RowEditFieldDate.vue | 6 ++- .../components/view/ViewFilterTypeDate.vue | 10 ++--- .../view/ViewFilterTypeMultiStepDate.vue | 10 ++++- .../view/grid/fields/GridViewFieldDate.vue | 6 ++- 6 files changed, 62 insertions(+), 15 deletions(-) create mode 100644 web-frontend/modules/core/composables/useDatePickerLanguage.js diff --git a/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue b/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue index e241634fc1..3d27d8f995 100644 --- a/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue +++ b/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue @@ -29,7 +29,7 @@ :monday-first="true" :use-utc="true" :model-value="dateObject" - :language="$i18n.locale" + :language="datePickerLanguage" :disabled-dates="disableDates" class="datepicker" @update:model-value=" @@ -52,8 +52,7 @@ import { getDateMomentFormat, getDateHumanReadableFormat, } from '@baserow/modules/database/utils/date' -// TODO MIG -//import { en, fr } from 'vuejs3-datepicker' +import { useDatePickerLanguage } from '@baserow/modules/core/composables/useDatePickerLanguage' export default { name: 'DateFilter', @@ -77,7 +76,7 @@ export default { }, }, setup() { - return { v$: useVuelidate({ $lazy: true }) } + return { v$: useVuelidate({ $lazy: true }), ...useDatePickerLanguage() } }, data() { return { diff --git a/web-frontend/modules/core/composables/useDatePickerLanguage.js b/web-frontend/modules/core/composables/useDatePickerLanguage.js new file mode 100644 index 0000000000..1b2fa87564 --- /dev/null +++ b/web-frontend/modules/core/composables/useDatePickerLanguage.js @@ -0,0 +1,38 @@ +import { computed } from 'vue' +import { useI18n } from 'vue-i18n' + +// Maps Baserow i18n locale codes to vuejs3-datepicker language keys. +// The datepicker uses non-standard keys for some languages (e.g. 'kr' for Korean, 'vn' for Vietnamese). +// Source: https://github.com/shubhadip/vuejs3-datepicker/blob/master/src/components/datepicker/locale/index.ts +const LOCALE_TO_DATEPICKER = { + ar: 'ar', + af: 'af', + bg: 'bg', + cs: 'cs', + de: 'de', + en: 'en', + es: 'es', + fr: 'fr', + hi: 'hi', + id: 'id', + it: 'it', + ja: 'ja', + ko: 'kr', // datepicker uses 'kr' for Korean + nl: 'nl', + pl: 'pl', + pt: 'pt', + pt_BR: 'pt', // no Brazilian variant, falls back to Portuguese + pt_PT: 'pt', // no Portugal variant, falls back to Portuguese + ru: 'ru', + tr: 'tr', + vi: 'vn', // datepicker uses 'vn' for Vietnamese + zh_TW: 'zh_TW', +} + +export function useDatePickerLanguage() { + const { locale } = useI18n() + const datePickerLanguage = computed( + () => LOCALE_TO_DATEPICKER[locale.value] ?? 'en' + ) + return { datePickerLanguage } +} diff --git a/web-frontend/modules/database/components/row/RowEditFieldDate.vue b/web-frontend/modules/database/components/row/RowEditFieldDate.vue index d2800a881b..125048bc93 100644 --- a/web-frontend/modules/database/components/row/RowEditFieldDate.vue +++ b/web-frontend/modules/database/components/row/RowEditFieldDate.vue @@ -27,7 +27,7 @@ :monday-first="true" :use-utc="true" :model-value="pickerDate" - :language="$i18n.locale" + :language="datePickerLanguage" class="datepicker" @update:model-value="chooseDate(field, $event)" /> @@ -80,10 +80,14 @@ import TimeSelectContext from '@baserow/modules/core/components/TimeSelectContex import rowEditField from '@baserow/modules/database/mixins/rowEditField' import rowEditFieldInput from '@baserow/modules/database/mixins/rowEditFieldInput' import dateField from '@baserow/modules/database/mixins/dateField' +import { useDatePickerLanguage } from '@baserow/modules/core/composables/useDatePickerLanguage' export default { components: { TimeSelectContext }, mixins: [rowEditField, rowEditFieldInput, dateField], + setup() { + return useDatePickerLanguage() + }, methods: { focus(...args) { this.select() diff --git a/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue b/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue index 2e0c85c20a..410f6d4222 100644 --- a/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue +++ b/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue @@ -23,7 +23,7 @@ :monday-first="true" :use-utc="true" :model-value="dateObject" - :language="$i18n.locale" + :language="datePickerLanguage" class="datepicker" @updated:model-value="chooseDate($event)" > @@ -42,22 +42,18 @@ import { getDateHumanReadableFormat, } from '@baserow/modules/database/utils/date' import filterTypeDateInput from '@baserow/modules/database/mixins/filterTypeDateInput' -import { en, fr } from 'vuejs-datepicker/dist/locale' +import { useDatePickerLanguage } from '@baserow/modules/core/composables/useDatePickerLanguage' export default { name: 'ViewFilterTypeDate', mixins: [filterTypeDateInput], setup() { - return { v$: useVuelidate({ $lazy: true }) } + return { v$: useVuelidate({ $lazy: true }), ...useDatePickerLanguage() } }, data() { return { dateString: '', dateObject: '', - datePickerLang: { - en, - fr, - }, } }, mounted() { diff --git a/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue b/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue index cdd2724a2c..eb10287cae 100644 --- a/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue +++ b/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue @@ -63,7 +63,7 @@ :monday-first="true" :use-utc="true" :model-value="dateObject" - :language="$i18n.locale" + :language="datePickerLanguage" class="datepicker" @update:model-value="chooseDate($event)" > @@ -82,11 +82,17 @@ import { } from '@baserow/modules/database/utils/date' // TODO MIG import { en, fr } from 'vuejs-datepicker/dist/locale' import filterTypeMultiStepDateInput from '@baserow/modules/database/mixins/filterTypeMultiStepDateInput' +import { useDatePickerLanguage } from '@baserow/modules/core/composables/useDatePickerLanguage' export default { name: 'ViewFilterTypeMultiStepDate', mixins: [filterTypeMultiStepDateInput], - setup: filterTypeMultiStepDateInput.setup, + setup(...args) { + return { + ...(filterTypeMultiStepDateInput.setup?.(...args) ?? {}), + ...useDatePickerLanguage(), + } + }, data() { return { value: '', diff --git a/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue b/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue index 2121bc0497..bc1bff453b 100644 --- a/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue +++ b/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue @@ -39,7 +39,7 @@ :monday-first="true" :use-utc="true" :model-value="pickerDate" - :language="$i18n.locale" + :language="datePickerLanguage" class="datepicker" @update:model-value="chooseDate(field, $event)" @selected="preventNextUnselect = true" @@ -80,11 +80,15 @@ import { isElement } from '@baserow/modules/core/utils/dom' import gridField from '@baserow/modules/database/mixins/gridField' import gridFieldInput from '@baserow/modules/database/mixins/gridFieldInput' import dateField from '@baserow/modules/database/mixins/dateField' +import { useDatePickerLanguage } from '@baserow/modules/core/composables/useDatePickerLanguage' // TODO MIG import { en, fr } from 'vuejs-datepicker/dist/locale' export default { components: { TimeSelectContext }, mixins: [gridField, gridFieldInput, dateField], + setup() { + return useDatePickerLanguage() + }, data() { return { preventNextUnselect: false, From 8d079ab703f0119b2997895a0090f0d4bf7d4fde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20St=C5=99=C3=ADbn=C3=BD?= Date: Thu, 19 Feb 2026 17:25:23 +0100 Subject: [PATCH 2/5] Fix adding new Single/Multiple select field to form (#4828) --- web-frontend/modules/database/viewTypes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web-frontend/modules/database/viewTypes.js b/web-frontend/modules/database/viewTypes.js index f9d69771e2..1a3f3fe418 100644 --- a/web-frontend/modules/database/viewTypes.js +++ b/web-frontend/modules/database/viewTypes.js @@ -1274,6 +1274,7 @@ export class FormViewType extends ViewType { condition_type: 'AND', conditions: [], field_component: 'default', + allowed_select_options: [], }, }, { root: true } From a3f58fcbb5d67e5538df86be41eac1f3416a3036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20St=C5=99=C3=ADbn=C3=BD?= Date: Thu, 19 Feb 2026 17:40:24 +0100 Subject: [PATCH 3/5] Fix onboarding empty paste table data (#4829) --- .../modules/database/components/table/TablePasteImporter.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-frontend/modules/database/components/table/TablePasteImporter.vue b/web-frontend/modules/database/components/table/TablePasteImporter.vue index 6dc59dac2c..deab45ac09 100644 --- a/web-frontend/modules/database/components/table/TablePasteImporter.vue +++ b/web-frontend/modules/database/components/table/TablePasteImporter.vue @@ -83,7 +83,7 @@ export default { this.reload() }, async reload() { - if (this.values.content === '') { + if (!this.values.content) { this.resetImporterState() return } From bcf9e3c7ff43887ea7a599643492ceebdd43e9a6 Mon Sep 17 00:00:00 2001 From: Bram Date: Thu, 19 Feb 2026 18:37:03 +0100 Subject: [PATCH 4/5] Removed not needed hashtag (#4820) --- web-frontend/modules/core/components/sidebar/Sidebar.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-frontend/modules/core/components/sidebar/Sidebar.vue b/web-frontend/modules/core/components/sidebar/Sidebar.vue index 2358e3f48f..cd22131db3 100644 --- a/web-frontend/modules/core/components/sidebar/Sidebar.vue +++ b/web-frontend/modules/core/components/sidebar/Sidebar.vue @@ -7,7 +7,7 @@ >