JavaScript Search Framework V2 2020 Releases

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

The latest changes are available in JavaScript Search Framework 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:
Resource1 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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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 check boxes 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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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 check boxes.
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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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>

DynamicHierarchicalFacet basePath demo

New DynamicFacet Option: dependsOnCondition

Issue number: JSUI-2902

When you want a facet to only appear when another facet is a certain state (e.g., 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.

New 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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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>

SortDropdown Demo

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>

QuerySuggestPreview With FacetValueSuggestions Demo

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>

SearchInterface enableSrollRestoration Demo

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>

SimpleFilter enableClearButton Demo

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>

DynamicHierarchicalFacet sortCriteria Demo

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 (i.e., 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:
Resource1 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:2

<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>

1: For additional resources, see CDN Links.

2: See Subresource Integrity. {: #footnote2}</div>

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.

See Use Hierarchical Facets.

DynamicHierarchicalFacet Demo

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.

See JavaScript Search Framework CDN Links.

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.

See Use Dynamic Facets.

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.