diff --git a/src/client/theme-default/Layout.vue b/src/client/theme-default/Layout.vue index 0421c4b2..d0d5457c 100644 --- a/src/client/theme-default/Layout.vue +++ b/src/client/theme-default/Layout.vue @@ -7,7 +7,6 @@ v-if="theme.algolia" :options="theme.algolia" :multilang="!!theme.locales" - :key="siteRouteData.lang" /> diff --git a/src/client/theme-default/components/AlgoliaSearchBox.vue b/src/client/theme-default/components/AlgoliaSearchBox.vue index 8b7af040..09ab1726 100644 --- a/src/client/theme-default/components/AlgoliaSearchBox.vue +++ b/src/client/theme-default/components/AlgoliaSearchBox.vue @@ -57,13 +57,29 @@ function update(options: any) { } } -function initialize(userOptions: any) { - // if the user has multiple locales, the search results should be filtered - // based on the language - const facetFilters = props.multilang - ? ['language:' + siteData.value.lang] - : [] +// if the user has multiple locales, the search results should be filtered +// based on the language +const facetFilters: string[] = props.multilang + ? ['language:' + siteData.value.lang] + : [] + +if (props.options.searchParameters?.facetFilters) { + facetFilters.push(...props.options.searchParameters.facetFilters) +} +watch( + () => siteData.value.lang, + (newLang, oldLang) => { + const index = facetFilters.findIndex( + (filter) => filter === 'language:' + oldLang + ) + if (index > -1) { + facetFilters.splice(index, 1, 'language:' + newLang) + } + } +) + +function initialize(userOptions: any) { docsearch( Object.assign({}, userOptions, { container: '#docsearch', @@ -71,9 +87,7 @@ function initialize(userOptions: any) { searchParameters: Object.assign({}, userOptions.searchParameters, { // pass a custom lang facetFilter to allow multiple language search // https://github.com/algolia/docsearch-configs/pull/3942 - facetFilters: facetFilters.concat( - userOptions.searchParameters?.facetFilters || [] - ) + facetFilters }), navigator: {