V2 2020 releases

This is for:

Developer

This page summarizes the new features and bug fixes introduced throughout 2020.

Note

The latest changes are available in Release notes.

October 2020 release (v2.10081)

The October 2020 package was initially released as v2.10081.2.

You can get the latest version of this release (v2.10081.5):

  • From GitHub (2.10081.5)

  • From npm (npm install coveo-search-ui@2.10081.5)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.10081/5/css/CoveoFullSearch.min.css" integrity="sha512-c6ZA0d3XVIG36GHJHX+TRBINlF4+k4cDAngeqQmWzEcPys5FWvLCD/IVaUJsdmNchM+4YuCcYpaXsNsb2B8bWQ==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.10081/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [2]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.10081/5/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-aKXBnyJH8xK97jTYJdm/m9pzV3zdU/r0DszRAhgcipp8cY68vrFy+yKdw/5NsuV6MLQpgjM88WtURJZ7MFcvkQ==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.10081/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.10081/5/js/templates/templates.js" integrity="sha512-T1CRwpaSKJ4kkwJUtB/kiVX+uzb+C2+oeu/bl3EXfRC/wB6U59jqYVKBHIDt2pJztlwocijfNbPTvrJ5GMoJWw==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.10081/js/templates/templates.js"></script>

Changes

Issue number Enhancement

JSUI-2979

[DynamicFacet / DynamicHierarchicalFacet] Support text highlighting in dynamic facet search.

JSUI-2998

Add a buildingResultPreviewsQuery event.

JSUI-3035

[DynamicFacet] Improve dynamic facet header accessibility.

JSUI-3056

[Accessibility] Link Sort component to ResultList with aria-controls.

Issue number Case Maintenance case

JSUI-3110

N/A

Fixed issue where responsive components stopped being responsive when a Tab component had its enableResponsiveMode option set to false.

JSUI-3113

00063369

[ExportToExcel] Fixed issue where filters applied through dynamic facets were not taken into consideration when exporting results to Excel.

JSUI-3121

00063492

[Accessibility] Fixed issue where suggestion box element sometimes didn’t have a unique ID.

JSUI-3126

00063556

[ResultLink] Fixed issue where raw HTML highlights were displayed in the title.

Issue number Bug fix

JSUI-2878

Fixed issue where the FollowItem component was still included in the default YouTube card result template.

JSUI-3048

[Facet] Fixed issue where un-excluding a facet value through the facet search results didn’t update its appearance.

JSUI-3135

[Facet] Fixed issue where the size of facet checkboxes would shrink before responsive breakpoints.

Additional changes in maintenance versions

2.10081.5

Issue number Bug fix

JSUI-3148

[QuerySummary] Fixed issue where the default "No results" message was displayed even when a noResultsFoundMessage was specified.

JSUI-3149

[Facet] Removed the vertical padding of facet title inside responsive mode.

September 2020 release (v2.9856)

The September 2020 package was initially released as v2.9856.8.

You can get the latest version of this release (v2.9856.8):

  • From GitHub (2.9856.8)

  • From npm (npm install coveo-search-ui@2.9856.8)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9856/8/css/CoveoFullSearch.min.css" integrity="sha512-1WH9lKAje9GG+35Vz78afjvWNOQzlGhlMZmaNam1nptwDVjKyrOgSIY7wdLZ2DoHBnExUExhyIfcbhGPdO+BTw==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9856/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [3]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9856/8/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-Y+MReNqrxNkBuYdZT/nHuUX4OoL5g+ein6s83/238O+j5P/8vCQwIvGsgeeKKxxdPq4xKdCqWZRUOEPW2Zi3eg==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9856/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9856/8/js/templates/templates.js" integrity="sha512-M6j1bikjxD/4fhJfAHysJTc0odPUtz4Ifq5D2OP4GALdLxfwe5snMffMY/IxBJSK2sC+EGx4ydgo6V6EWwgIvg==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9856/js/templates/templates.js"></script>

Changes

Issue number Enhancement

JSUI-2907

[DynamicHierarchicalFacet] Render a chevron (>) next to values that have children.

JSUI-3092

Add a scrollbar in facet search results.

JSUI-3107

Prevent clearing cookies when initializing history.

Issue number Accessibility improvement

JSUI-3057

Remove "Select/Unselect" from aria-label of facet value checkboxes.

JSUI-3058

Replace alt attributes with title (or desc) for SVG images.

JSUI-3059

Improve label for Sort component.

JSUI-3064

Use static label for FacetValue and DynamicFacetValue.

JSUI-3067

Reorder facet value captions and counts.

JSUI-3071

Make buttons in FacetSettings menu toggleable.

JSUI-3074

Hide facet value SVGs from the accessibility tree.

JSUI-3076

Add aria landmark to facet breadcrumbs.

JSUI-3077

Represent facet breadcrumbs as lists in accessibility tree.

JSUI-3078

Manage keyboard focus in facet breadcrumbs.

JSUI-3079

Improve visibility of field values in Windows high contrast mode.

JSUI-3082

Improve border contrast for Pager and ResultsPerPage components.

JSUI-3084

Make accessibility tools announce facet search results.

JSUI-3087

Make facet search convey lack of results to accessibility tools.

JSUI-3088

Improve contrast ratios in facet search.

JSUI-3089

Remove aria-label from field values.

JSUI-3090

Make breadcrumb stand out in Windows high contrast mode.

JSUI-3098

Add mixed state to facet values.

JSUI-3101

Modify breadcrumb aria labels to match facet values labels.

Issue number Case Maintenance case

JSUI-3111

00063313

[Triggers] Fixed issue where notifications were not displayed as expected.

Issue number Bug fix

JSUI-3062

[QuerySummary] Fixed issue where the default noResultsFoundMessage looked incomplete when the query was empty.

JSUI-3069

[Accessibility] Fixed issue where the focus state of the Facet expand and collapse buttons wasn’t visible in Windows high contrast mode.

August 2020 release (v2.9659)

The August 2020 package was initially released as v2.9659.2.

You can get the latest version of this release (v2.9659.2):

  • From GitHub (2.9659.2)

  • From npm (npm install coveo-search-ui@2.9659.2)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9659/2/css/CoveoFullSearch.min.css" integrity="sha512-qMk8pd7wS3yi/8HCSNnE30y9NrWOfa9aW4NiXLfw2LadR4hw5yHhY7lOf+9ByvTnqB2nsQaNUkP3geYytZu0WQ==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9659/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [4]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9659/2/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-cXTc78plEHUNwtdN517yRL164aM9ytch7uzC/1RKiZ0VdS5FWZani8ZU0LsUED4z7tdBlm0uNmvPcBu70SuImA==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9659/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9659/2/js/templates/templates.js" integrity="sha512-r+cnkf/lrKvtvu4GejOjM6EWPcj5loNbQZ/XjE6UcWj78sSxQ9v0+Y5KTtfa2px1cCmi2znZEAERtHdVs87GLQ==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9659/js/templates/templates.js"></script>

Changes

Issue number Enhancement

JSUI-2655

[DynamicFacetRange] Generate automatic facet ranges when the ranges option is not defined.

JSUI-3020

[DynamicFacet] Allow currently displayed deselected facet values to appear in facet search results.

Issue number Case Maintenance case

JSUI-3027

00060676

Fixed issue that caused undesired queries to be triggered when debug=1 was set in the hash portion of the URL.

JSUI-3031

00062311

Fixed issue where opening and closing the Quickview would cause glitches in card layout.

JSUI-3034

00062278

Fixed issue where the UTF-8 key was sent between double quotes in the charset attribute of the Content-Type HTTP header.

JSUI-3043

00062331

[Facet / DynamicFacet] Fixed issue where facets were completely hidden when their numberOfValues option was set to 0.

JSUI-3049

N/A

[Facet] Fixed issue that could cause extra padding to appear at the bottom of facets.

JSUI-3051

00062406

[Facet] Fixed display issues when selecting and deselecting facet values in facet search.

Issue number Bug fix

JSUI-3022

Fixed issue where the [ and ] characters were not recognized as field value delimiters, which caused some nested queries to be flagged as invalid query syntax.

July 2020 release (v2.9373)

The July 2020 package was initially released as v2.9373.6.

You can get the latest version of this release (v2.9373.14):

  • From GitHub (2.9373.14)

  • From npm (npm install coveo-search-ui@2.9373.14)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9373/14/css/CoveoFullSearch.min.css" integrity="sha512-WVa1+SGnelakOMH4p89YEbrcB7Wbrpx9SxXVrhvV/J0hVc8Gux7tKhEII0NnhCQ4UgXtEVeNmQ9pA4alVeaRdw==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9373/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [5]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9373/14/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-fAnxZVtg+7PuaaXhgiqQD4AbiPFvCcVwWfGd8jGrkjj5IKyZs9slJ1co4PdANlpMaQEKFICYjoRR83Se7swe6A==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9373/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9373/14/js/templates/templates.js" integrity="sha512-r+cnkf/lrKvtvu4GejOjM6EWPcj5loNbQZ/XjE6UcWj78sSxQ9v0+Y5KTtfa2px1cCmi2znZEAERtHdVs87GLQ==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9373/js/templates/templates.js"></script>

Changes

Issue number Enhancement

JSUI-2993

The constant query expression is now included in queries made by the QuerySuggestPreview component.

JSUI-3002

The duration of the visitor cookie has been reduced to one year.

JSUI-3011

The displaySearchOnTop and displaySearchButton options have been added to the CategoryFacet component.

Issue number Case Maintenance case

JSUI-2990

00060908

Fixed issue where opening a link in a new tab in a Quickview didn’t work on Edge.

JSUI-2991

00060602

Fixed issue where the FieldSuggestions component didn’t sort its suggestions correctly.

Issue number Bug fix

JSUI-2994

Fixed issue where autocomplete="off" wasn’t set on the DynamicFacet search input.

JSUI-2997

[FacetsMobileMode] Fixed issue where repeatedly resizing the mobile facet modal would render superfluous close and filter buttons.

JSUI-3000

Fixed issue where the FieldValue component didn’t use the custom captions defined on the corresponding Facet/DynamicFacet.

JSUI-3008

[FacetSlider] Fixed issue where the Edge/IE11 slider touch would interact incorrectly with browser history navigation.

Additional changes in maintenance versions

v2.9373.8

Issue number Bug fix

JSUI-3028

[ResultLink] Fixed issue that caused some click URIs to break.

v2.9373.14

Issue number Case Maintenance case

JSUI-2990

N/A

[ResultList] Fixed issue where setting the data-result-container-selector option didn’t work.

JSUI-2991

00062512

Fixed issue where action history was still tracked after disabling analytics.

June 2020 release (v2.9159)

The June 2020 package was initially released as v2.9159.6.

You can get the latest version of this release (v2.9159.13):

  • From GitHub (2.9159.13)

  • From npm (npm install coveo-search-ui@2.9159.13)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9159/13/css/CoveoFullSearch.min.css" integrity="sha512-XH+ZqFGwz5ujYXOL608xChoRjeiRbOwQ6bO0ji809yz+Ep9sA1cffJmQmokQGVHmo9VJ1HK3slF8qVanOCYpow==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.9159/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [6]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9159/13/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-aUKKtxZYL14aUTLmsLhbWtFcn7ROMRP1UAHxQbbsqED2iDtUGK6wG12Co4bIFccW/uUtG7L+zaG6vMdcblaE1g==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.9159/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9159/13/js/templates/templates.js" integrity="sha512-r+cnkf/lrKvtvu4GejOjM6EWPcj5loNbQZ/XjE6UcWj78sSxQ9v0+Y5KTtfa2px1cCmi2znZEAERtHdVs87GLQ==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.9159/js/templates/templates.js"></script>

Release highlights

New component: FacetsMobileMode

Issue number: JSUI-2957

The new FacetsMobileMode component lets you customize the mobile responsive behavior of facets in your search interface.

<div class="CoveoSearchInterface">
  <div class="CoveoFacetsMobileMode"
       data-is-modal="true"></div>
</div>
Animation: Demo of opening mobile facets in a modal

New Facet / DynamicFacet method: hasSelectedValue

Issue number: JSUI-2964

The Facet and DynamicFacet components now expose a hasSelectedValue method that simplifies the use of the dependsOnCondition option.

For example, with the following configuration, the Book genre facet will only appear when the Book value is selected in the Product type facet:

document.addEventListener("DOMContentLoaded", () => {
  const root = document.getElementById("search");
  Coveo.init(root, {
    book_genre_facet: {
      dependsOn: "@producttype",
      dependsOnCondition: (parentFacet) => {
        return parentFacet.hasSelectedValue("Book");
      }
    }
  });
  // ...
});
<div id="search" class="CoveoSearchInterface">
  <!-- ... -->
  <div class="coveo-facet-column">
    <div class="CoveoDynamicFacet"
         data-title="Product type"
         data-field="@producttype"></div>
    <div id="book_genre_facet"
         class="CoveoDynamicFacet"
         data-title="Book genre"
         data-field="@bookgenre"></div>
  </div>
  <!-- ... -->
</div>

Prior to this release, the dependsOnCondition function would have had to be more complex:

// ...
Coveo.init(root, {
  book_genre_facet: {
    dependsOn: "@producttype",
    dependsOnCondition: (parentFacet) => {
      const id = parentFacet.options.id;
      const selected = parentFacet.queryStateModel.get(`f:${id}`)
      return selected.includes("Book");
    }
  }
});
// ...

For additional explanations and examples, see Define dependent facets.

Issue number: JSUI-2735

You can set the enableFacetSearch option to true on a DynamicHierarchicalFacet component to allow your end users to search for hierarchical values in that facet.

<div class="CoveoDynamicHierarchicalFacet"
     data-field="atlgeographicalhierarchy"
     data-title="Geographical Location"
     data-enable-facet-search="true">
Animation: Demo of a DynamicHierarchicalFacet component with facet search enabled

Other changes

Issue number Bug fix

JSUI-2758

[Omnibox] Fixed issue where no trending query suggestions were displayed after clearing the search box.

JSUI-2942

[Quickview] Fixed issue where the component created a modal box on the document body instead of on the search interface element.

JSUI-2960

Fixed issue where facet dependsOnCondition was verified before external Omnibox filter was cleared.

JSUI-2961

[FacetRange] Fixed issue where the component was not displaying generated ranges in the proper format.

JSUI-2966

Fixed issue where page scrolled back to the top when clearing the last query state in the URL.

JSUI-2971

[Analytics] Fixed issue where manually defined endpoint value that didn’t end with /rest was not automatically corrected.

Additional changes in maintenance versions

v2.9159.8

Issue number Bug fix

JSUI-2995

[FacetsMobileMode] Fixed button styling on iOS Safari.

2.9159.10

Issue number Bug fix

JSUI-3006

[FacetRange] Fixed issue where component was not displaying specified labels for ranges.

2.9159.13

Issue number Bug fix

JSUI-3028

[ResultLink] Fixed issue that caused some click URIs to break.

May 2020 release (v2.8959)

The May 2020 package was initially released as v2.8959.6.

You can get the latest version of this release (v2.8959.14):

  • From GitHub (2.8959.14)

  • From npm (npm install coveo-search-ui@2.8959.14)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.8959/14/css/CoveoFullSearch.min.css" integrity="sha512-DzuDVtX/Dud12HycdAsm2k9D1UQ8DU7WOj7cBRnSsOKQbKfkI94g0VM9hplM0BkQ0VXdDiQYU9GvUzMmw2Khaw==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.8959/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [7]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.8959/14/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-RV1EooPduQhwl0jz+hmjBw/nAtfeXNm6Dm/hlCe5OR1jAlG4RErUeYfX1jaaM88H8DiyCJDzEWZkOR0Q13DtrA==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.8959/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.8959/14/js/templates/templates.js" integrity="sha512-r+cnkf/lrKvtvu4GejOjM6EWPcj5loNbQZ/XjE6UcWj78sSxQ9v0+Y5KTtfa2px1cCmi2znZEAERtHdVs87GLQ==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.8959/js/templates/templates.js"></script>

Changes

Issue number Case Maintenance case

JSUI-2948

00060149

[Facet] Fixed issue where un-selecting/un-excluding a facet value would hide the last selected/excluded value when the number of selected/excluded values exceeded the specified numberOfValues.

JSUI-2950

00060280

Uniformize the way ComponentEvents class methods determine whether to use jQuery for event propagation.

JSUI-2951

00059821

[FacetValueSuggestions] Fixed issue where selecting a facet value suggestion not did select the corresponding value in a facet initialized as an external component.

Issue number Bug fix

JSUI-2945

[Tab] Fixed issue where the responsive tab’s More button was not clickable in Coveo for Salesforce.

Additional changes in maintenance versions

v2.8959.8

Issue number Bug fix

JSUI-2959

[FieldTable] Fixed issue where no toggle icon was displayed, and the Details button had to be clicked twice to re-expand a field table that was initially expanded by default.

JSUI-2963

[MissingTerms] Fixed issue where the component would only detect absent terms when they were typed in lower case in the query.

v2.8959.10

Issue number Bug fix

JSUI-2815

[FieldValue] Fixed issue where rendered field value was not clickable if an id option value was specified on the corresponding facet.

JSUI-2964

[FieldValue] Removed superfluous component dependencies.

v2.8959.14

Issue number Bug fix

JSUI-2977

[FieldValue] Fixed issue where the component was accepting range values.

April 2020 release (v2.8864)

The April 2020 package was initially released as v2.8864.5.

You can get the latest version of this release (v2.8864.13):

  • From GitHub (2.8864.13)

  • From npm (npm install coveo-search-ui@2.8864.13)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.8864/13/css/CoveoFullSearch.min.css" integrity="sha512-Bp92vKWM7qh7Jnb8+z6OKiqA83ywiY9yWXZcnFxCA6wHzfOosK+sMLkxZZT+wY8oXm9rnZoNSw0JW5OKKcHHNg==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.8864/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [8]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.8864/13/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-wbG9GKkhmCdvXgH7REqkfiH/kUjsFBNztLhpPE3aoZmV5CwZbTuPux5Xoi/3srYZQBkHowTnboIQ5DMJh3Phjg==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.8864/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.8864/13/js/templates/templates.js" integrity="sha512-ZgIQSDNRu+VIrdbswpYOc58ynhtjoWm+2xwQByD2Tdo8zby5AJ/B2P1PdFHoiMNS3/DLyKnAveFDVuDuq5tzYQ==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.8864/js/templates/templates.js"></script>

Release highlights

New DynamicHierarchicalFacet option: basePath

Issue number: JSUI-2736

The new basePath option lets you display only values that share a common root ancestor in a DynamicHierarchicalFacet.

<div class="CoveoDynamicHierarchicalFacet"
     data-id="location_facet"
     data-title="Location"
     data-field="@atlgeographicalhierarchy"></div>
<div class="CoveoDynamicHierarchicalFacet"
     data-id="location_europe_facet"
     data-title="Location (Europe)"
     data-field="@atlgeographicalhierarchy"
     data-base-path="Europe"></div>
<div class="CoveoDynamicHierarchicalFacet"
     data-id="location_north_america_facet"
     data-title="Location (North America)"
     data-field="@atlgeographicalhierarchy"
     data-base-path="North America"></div>
Search results panel with Dynamic Hierarchical Facet for Location listing continents and expandable countries in Coveo interface

New DynamicFacet option: dependsOnCondition

Issue number: JSUI-2902

When you want a facet to only appear when another facet is a certain state (for example, when a specific value is selected), you can use the dependsOn option along with the new dependsOnCondition option.

For example, with the following configuration, the Book genre facet will only appear when the Book value is selected in the Product type facet.

document.addEventListener("DOMContentLoaded", () => {
  const root = document.getElementById("search");
  Coveo.init(root, {
    book_genre_facet: {
      dependsOn: "@producttype",
      dependsOnCondition: (parentFacet) => {
        const id = parentFacet.options.id;
        const value = "Book";
        const selected = parentFacet.queryStateModel.get(`f:${id}`)
        return selected.includes(value);
      }
    }
  });
  // ...
});
<div id="search" class="CoveoSearchInterface">
  <!-- ... -->
  <div class="coveo-facet-column">
    <div class="CoveoDynamicFacet"
         data-title="Product type"
         data-field="@producttype"></div>
    <div id="book_genre_facet"
         class="CoveoDynamicFacet"
         data-title="Book genre"
         data-field="@bookgenre"></div>
  </div>
  <!-- ... -->
</div>

For additional explanations and examples, see Define dependent facets.

Change default analytics endpoint

Issue number: JSUI-2923

The Analytics component now uses https://platform.cloud.coveo.com/rest/ua as a default endpoint value (it was https://usageanalytics.coveo.com/ before).

The new endpoint behaves exactly like the old one. However, this change implies that, in most deployments, usage analytics network calls will have a different name when you inspect them with using your browser developer tools.

Browser Network tab highlighting request to https://platform.cloud.coveo.com/rest/ua/v15/analytics/searches as new Coveo analytics endpoint

Other changes

Issue number Enhancement

JSUI-2900

[ResultList] The enableScrollToTop option is now only effective when the top isn’t already in the viewport.

JSUI-2915

The basic query expression (q) is now included in the usage analytics event that gets logged when a redirect trigger is executed.

JSUI-2933

[DynamicFacetRange] The component will now be able to reappear after it has been hidden because no results were found.

Issue number Case Maintenance case

JSUI-2882

00058787

[Facet] Fixed issue where facet search result counts were not all displayed.

JSUI-2909

00059237

Fixed issue where the format options of the number template helper didn’t work when specified in the markup configuration.

JSUI-2929

N/A

[Breadcrumb] Fixed issue where the component would output a clas-name attribute instead of class attribute for facet slider captions.

JSUI-2938

00059299

[FieldTable] Fixed issue where the Details section would sometimes not expand.

Issue number Bug fix

JSUI-2911

Fixed issue where an external styling dependency could cause conflicts.

Additional changes in maintenance versions

v2.8864.7

Issue number Case Maintenance case

JSUI-2944

00059928

[Facet] Fixed inconsistent behavior when selecting values in a facet using an alphabetical sort criterion.

v2.8864.13

Issue number Case Maintenance case

JSUI-3054

00062229

Fixed issue where Popper.js event listeners were being fired too often, which would sometimes impact performance, notably in IE11.

March 2020 release (v2.8521)

The March 2020 package was initially released as v2.8521.7.

You can get the latest version of this release (v2.8521.7):

  • From GitHub (2.8521.7)

  • From npm (npm install coveo-search-ui@2.8521.7)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.8521/7/css/CoveoFullSearch.min.css" integrity="sha512-udXOWm2w5zVIiJePCCmdZI5hXP40fOZ/t85I6Qt0bRsdu2cApt6f9o93R49/jvTff7sMt7To1gPrc12IrFM+Ig==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.8521/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [9]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.8521/7/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-oAoBwx8etsAFf8T9Ik0falu54Pd3HDx5i7yHQRrvGcoTKilqbkH3/oi5e5ZjCNDZDLe1DGDrNgL0DyEcs9W3Kw==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.8521/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.8521/7/js/templates/templates.js" integrity="sha512-n6s5hxhCmAPVTc8/CRudJ+4HeCsEuLrPIU24WXfEhmDk1TQxITc5PFklJ48GKW25dej8yWxKpFWAzXKF6+CfgA==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.8521/js/templates/templates.js"></script>

Release highlights

New component: SortDropdown

The new SortDropdown component provides an alternative way to render result sorting options in a search interface.

Issue number: JSUI-2478

<div class="CoveoSortDropdown">
  <span class="CoveoSort" data-sort-criteria="relevancy"
        data-caption="Relevance"></span>
  <span class="CoveoSort" data-sort-criteria="date descending"
        data-caption="Newest"></span>
  <span class="CoveoSort" data-sort-criteria="date ascending"
        data-caption="Oldest"></span>
</div>
Animated GIF showing Coveo search results page sort dropdown expanding and selecting Date ascending option updating results order

New component: CommerceQuery

Issue number: JSUI-2718

The new CommerceQuery component will eventually provide a set of commerce-specific options. For now, this component only exposes the listing option.

In a Coveo-powered commerce solution, each product listing page should include a CommerceQuery component and set its listing option to a unique value.

<div class="CoveoSearchInterface">
  <div class="CoveoAnalytics"></div>
  <div class="CoveoCommerceQuery" data-listing="ACME Jewelry"></div>
</div>

Among other things, this is important to allow the Coveo Machine Learning (Coveo ML) Automatic Relevance Tuning (ART) feature to work in your product listing pages.

QuerySuggestPreview now supports FacetValueSuggestions

Issue number: JSUI-2763

The QuerySuggestPreview component has been improved to support suggestions generated by FacetValueSuggestions components in addition to standard Coveo ML query suggestions.

<div class="CoveoQuerySuggestPreview">
  <script class="result-template" type="text/html"
          data-filetype="YouTubeVideo">
    <!-- ... -->
  </script>
</div>
<div class="CoveoFacetValueSuggestions" data-field="@author"></div>
Coveo search box shows live query previews and author facet value suggestions

New SearchInterface option: enableScrollRestoration

Issue number: JSUI-2784

In a commerce search interface, when an end user clicks a product to access its detailed view, and then navigates back to the search interface, it’s considered good UX practice to automatically scroll back to the clicked product in the result list.

The new enableScrollRestoration option of the SearchInterface component allows you to enable this behavior.

<div class="CoveoSearchInterface" data-enable-scroll-restoration="true">
  <!-- ... -->
</div>
Coveo Search Interface GIF demonstrates scroll restoration when returning to results after opening a result link
Note

The enableScrollRestoration feature doesn’t currently work with ResultList components whose enableInfiniteScroll option is set to true.

New SimpleFilter option: enableClearButton

The SimpleFilter component now exposes a enableClearButton option allowing end users to quickly unselect all filters.

Issue number: JSUI-2686

<div class="CoveoSimpleFilter" data-title="Type" data-field="@objecttype"
     data-enable-clear-button="true"></div>
Animated demo of Coveo SimpleFilter where selecting and clearing Object Type facet toggles results and shows dynamic Clear button

New DynamicHierarchicalFacet option: sortCriteria

The DynamicHierarchicalFacet component now exposes a sortCriteria option allowing you to sort values alphanumerically rather than by number of occurrences.

Issue number: JSUI-2787

<div class="CoveoDyanmicHierarchicalFacet"
     data-field="atlgeographicalhierarchy" data-title="Geographical Location"
     data-sort-criteria="alphanumeric"></div>
Coveo dynamic hierarchical facet displays and sorts geographical locations alphanumerically as user clicks Asia Europe North America items

Redirect triggers no longer redirect twice

Issue numbers: JSUI-2847, JSUI-2849

When a query is submitted from a standalone search box, it will now be pre-processed by the Search API before anything else happens. If the returned pre-processing information indicates that the query would fire a redirect trigger rule in the query pipeline, that rule will be executed immediately. Otherwise, the query will be normally forwarded to the full search page specified in the initSearchbox call.

Concretely, this means that standalone search boxes will now automatically handle redirect trigger rules on their own, instead of letting a Trigggers component in the full search page handle them. This behavior will feel more natural to the end-user, because they won’t be redirected twice (that is, to the search page, and then to the redirect trigger’s URL).

Other changes

Issue number Enhancement

JSUI-2772

[StarRating] Values are now rounded to the nearest integer.

JSUI-2784

[DynamicFacetRange] The valueFormat option is now automatically set to date by default when the specified field name contains date.

JSUI-2785

[DynamicFacet] The filterFacetCount option was added.

JSUI-2823

[Default result templates] Unique id option values are now used to distinguish potentially redundant dynamic facets.

JSUI-2829

[DynamicFacet] Selected values are now displayed as a comma-separated list under the title of a collapsed dynamic facet.

JSUI-2832

[DynamicFacet] The Coveo ML Dynamic Navigation Experience (DNE) autoselection feature is now prevented when the end user triggers a query by interacting with one or more dynamic facets.

JSUI-2839

SameSite=Lax is now added when setting cookies to remove console warnings.

JSUI-2855

The facet column padding was slightly modified.

Issue number Case Maintenance case

JSUI-2830

00058438

[Facet] Fixed issue where the allowedValues option didn’t allow parentheses.

JSUI-2842

00058328

Fixed issue where the first usage analytics event was not sent after renewing the search token.

JSUI-2863

00058762

Fixed issue where configuring history and using local storage was impossible in a standalone search interface.

JSUI-2896

00059117

Fixed issue where a page would break if folding was enabled and the page contained a Tab whose id option value was exactly two characters long.

Issue number Bug fix

JSUI-2627

[FacetValueSuggestions] Fixed issue where the component didn’t allow setting an expression, resulting in invalid suggestions for filtered search interfaces.

JSUI-2768

[QuerySuggestPreview] Fixed issue where the default template didn’t work in Firefox.

JSUI-2799

Fixed issue where the highlightStreamHtml result template helper didn’t properly merge options.

JSUI-2822

[DynamicFacetManager] Fixed issue where facets didn’t collapse properly in search interfaces containing multiple tabs.

JSUI-2843

Fixed issue where facet state position was sent as null rather than undefined by default in usage analytics events.

JSUI-2844

Fixed a console error on Chrome/Chromium when selecting a dynamic facet search result.

JSUI-2875

[DynamicHierarchicalFacet] Fixed issue where there was no arrow next to the All Categories text.

January 2020 release (v2.7968)

The January 2020 package was initially released as v2.7968.7.

You can get the latest version of this release (v2.7968.18):

  • From GitHub (2.7968.18)

  • From npm (npm install coveo-search-ui@2.7968.18)

  • From the Coveo CDN:

Resource [1] Script to include

CSS (minified)

With SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.7968/18/css/CoveoFullSearch.min.css" integrity="sha512-tfvkdC1he/nwwFbCfPfFYa7PlN9aX+CEmmceZIQ8MHhgKAaW+CNnNaVSLTGc+Wsxmcz8Rj1vbLWguGG4JCuPGw==" crossorigin="anonymous" />

Without SRI:

<link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.7968/css/CoveoFullSearch.min.css" />

Framework (lazy loading, minified)

With SRI: [10]

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.7968/18/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-0q4jAyKUF9gV5Y6VoKHMjimfINgHT7ZHW2wgoqPdIRlQuOf36z8ySKwRV6vh3W+LbwRZ3nsfeCWAyWH1anNh1A==" crossorigin="anonymous"></script>

Without SRI:

<script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.7968/js/CoveoJsSearch.Lazy.min.js"></script>

Templates

With SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.7968/18/js/templates/templates.js" integrity="sha512-uW3NknXMN/BgHpDIGvg5cLvAN5ExL+hsyIz4o7q9oJtnIPZlG0rg5QM+YruoDwJx4P2jpV9vDyZpMJz2iLCs6w==" crossorigin="anonymous"></script>

Without SRI:

<script src="https://static.cloud.coveo.com/searchui/v2.7968/js/templates/templates.js"></script>

Release highlights

New component: DynamicHierarchicalFacet

Issue numbers: JSUI-2519, JSUI-2807

The new DynamicHierarchicalFacet component works in a similar fashion to the CategoryFacet component, but also supports the Coveo Machine Learning (Coveo ML) Dynamic Navigation Experience (DNE) feature.

Animated Coveo search UI demo of DynamicHierarchicalFacet filtering by Earth in hierarchical Location facet

New component: StarRating

Issue number: SFINT-2649

The new StarRating result template component renders a five-star widget for use in commerce result templates.

<div class="CoveoResultList">
  <script class="result-template" type="text/html">
    <div class="coveo-result-frame">
      <div class="coveo-result-row">
        <div class="coveo-result-cell">
          <a class="CoveoResultLink"></a>
        </div>
        <div class="coveo-result-cell">
          <div class="CoveoFieldValue" data-field="@ccpricesale"></div>
        </div>
      </div>
      <div class="coveo-result-row">
        <div class="coveo-result-cell">
          <div class="CoveoImageFieldValue" data-field="@ccimage"
               data-height="75px">
        </div>
      </div>
      <div class="coveo-result-row">
        <div class="coveo-result-cell">
          <div class="CoveoFieldValue" data-field="@ccdescription"></div>
        </div>
      </div>
      <div class="coveo-result-row">
        <div class="coveo-result-cell">
          <div class="CoveoStarRating"
               data-rating-field="@ccratingaverage"></div>
        </div>
      </div>
    </div>
  </script>
</div>
StarRating Demo

CDN: Support Subresource Integrity

Issue number: JSUI-2783

From this version on, each hotfix release will be uploaded to a distinct CDN folder, and links to those resources will include the integrity and crossorigin attributes to support the Subresource Integrity (SRI) security feature.

CDN links without hotfix folders nor SRI will remain available.

New DynamicFacet option: injectionDepth

Issue number: JSUI-2752

The DynamicFacet, DynamicFacetRange, and DynamicHierarchicalFacet components now have an injectionDepth option, allowing you to specify the number of items to scan for facet values.

DynamicFacetRange: Support currency value format

Issue number: JSUI-2656

The valueFormat option of the DynamicFacetRange component now supports the currency value, allowing you to display price ranges in commerce search interfaces.

By default, the component renders currency range values using the currency symbol associated with the currently loaded culture file. You can also specify the desired currencySymbol if needed.

Other changes

Issue number Enhancement

JSUI-2359

[Analytics] Updated logCustomEvent method signature to support optional result parameter.

JSUI-2724

Use dynamic facets in default JavaScript Search Framework pages.

JSUI-2777

[Logo] Add target option.

JSUI-2781

[DynamicFacetManager] Take collapsedByDefault dynamic facet option into account.

Issue number Case Maintenance case

JSUI-2710

00057245

Fixed issue where "No Results" string localization was not applied when using eager component loading.

JSUI-2776

00057774

[Pager] Fixed issue where component would request more results than maximum allowed by index.

Issue number Bug fix

JSUI-2742

[DynamicFacetManager] Fixed issue where component would interact with incompatible embedded components.

JSUI-2788

[DynamicFacetManager] Fixed issue where component would consider values of non-embedded facets.

Additional changes in maintenance versions

v2.7968.18

Issue number Case Maintenance case

JSUI-2863

00058762

Fixed issue where configuring history and using local storage was impossible in a standalone search interface.


1. For additional resources, see CDN links.