diff --git a/packages/autocomplete-preset-algolia/src/highlight/__tests__/isPartHighlighted.test.ts b/packages/autocomplete-preset-algolia/src/highlight/__tests__/isPartHighlighted.test.ts index 276d54584..0a7f8532d 100644 --- a/packages/autocomplete-preset-algolia/src/highlight/__tests__/isPartHighlighted.test.ts +++ b/packages/autocomplete-preset-algolia/src/highlight/__tests__/isPartHighlighted.test.ts @@ -16,6 +16,23 @@ describe('isPartHighlighted', () => { ).toEqual(true); }); + test('does not inherit sibling state when siblings disagree', () => { + // The separator (index 1) sits between a highlighted ("Amazon") and a + // non-highlighted ("Fire") part. Since the siblings disagree, the separator + // must keep its own `isHighlighted` value rather than being treated as + // highlighted-from-siblings. + expect( + isPartHighlighted( + [ + { isHighlighted: true, value: 'Amazon' }, + { isHighlighted: false, value: ' - ' }, + { isHighlighted: false, value: 'Fire' }, + ], + 1 + ) + ).toEqual(false); + }); + test('returns the isHighlighted value with both siblings', () => { expect( isPartHighlighted( diff --git a/packages/autocomplete-preset-algolia/src/highlight/isPartHighlighted.ts b/packages/autocomplete-preset-algolia/src/highlight/isPartHighlighted.ts index 615acea21..71e8fe6b2 100644 --- a/packages/autocomplete-preset-algolia/src/highlight/isPartHighlighted.ts +++ b/packages/autocomplete-preset-algolia/src/highlight/isPartHighlighted.ts @@ -25,8 +25,8 @@ function unescape(value: string): string { export function isPartHighlighted(parts: ParsedAttribute[], i: number) { const current = parts[i]; - const isNextHighlighted = parts[i + 1]?.isHighlighted || true; - const isPreviousHighlighted = parts[i - 1]?.isHighlighted || true; + const isNextHighlighted = parts[i + 1]?.isHighlighted ?? true; + const isPreviousHighlighted = parts[i - 1]?.isHighlighted ?? true; if ( !hasLetterOrNumber.test(unescape(current.value)) &&