--- title: V2 2017 releases slug: '373' canonical_url: https://docs.coveo.com/en/373/ collection: javascript-search-framework source_format: adoc --- # V2 2017 releases This page summarizes the new features and bug fixes introduced throughout 2017. > **Note** > > The latest changes are available in [Release notes](https://docs.coveo.com/en/328/). [#2-3679-4] ## December 2017 release (v2.3679.4) **CDN links for JavaScript Search Framework v2.3679.4** - [GitHub release](https://github.com/coveo/search-ui/releases/tag/v2.3679.4) - npm: `npm install coveo-search-ui@2.3679.4` - CDN resources: - JavaScript (lazy, minified): `https://static.cloud.coveo.com/searchui/v2.3679.4/js/CoveoJsSearch.Lazy.min.js` - Stylesheet (minified): `https://static.cloud.coveo.com/searchui/v2.3679.4/css/CoveoFullSearch.min.css` - Templates: `https://static.cloud.coveo.com/searchui/v2.3679.4/js/templates/templates.js` |=== | Issue number | New features | JSUI-1852 | Deprecate `buildJsonObjectOption` (replaced with `buildJsonOption`) | JSUI-1862 | Wrap long titles in result templates instead of truncating them | JSUI-1920 | Rename Interfaces for the `DistanceResource` component to avoid name clash |=== |=== | Issue number | Case | Fixed support case | JSUI-1893 | 00039515 | Add middle click tracking by default |===
Issue number Bug fixes

JSUI-1745

Remove leading/trailing spaces from advanced query in hash

JSUI-1823

Fixed issue where query syntax detector was not taking decimals into account

JSUI-1825

Ensure that the queryText event sent by the Omnibox is sent to usage analytics correctly when using search-as-you-type

JSUI-1846 Add the right value for Proxy Duration and Client Duration in the QueryDuration tooltip
JSUI-1850 Ensure documentation live example expands correctly for large components
JSUI-1858 Ensure YouTube result template returns the default icon when its thumbnail isn't retrieved
JSUI-1869 Add missing x clear icon in the FacetSlider breadcrumb
JSUI-1895 Ensure context is added to querySuggest when using the standalone search box
[#2-3477-9] ## November 2017 release (v2.3477.9) ### Majors changes #### [JSUI-1591] - Update the default templates Default templates now use a smaller icon, and relevant metadata now appears inline instead of inside a `FieldTable` component. For some result types where a lot of metadata is available (for example, Case results in Salesforce), the `FieldTable` component is still used. This change doesn't affect custom result templates. #### [JSUI-1608] - `SimpleFilter` component The `SimpleFilter` component provides a new, simpler way to enable basic result filtering capabilities in a search page by rendering a dropdown menu with a list of filtering options. This new component can be useful in deployments that don't require the many options offered by full fledged `Facet` components. #### [JSUI-1811] - New `DistanceResources` component The [`DistanceResources`](https://coveo.github.io/search-ui/components/distanceresources.html) component tries to resolve the geographic position of the end user (that is, latitude and longitude) in order to automatically create a [query function](https://docs.coveo.com/en/1451/) to generate a `@distance` field. You can use the `@distance` field in queries, as well as in conjunction with a `FacetRange` or `FacetSlider` component (by setting its `field` option to `@distance`), or with a `Sort` component (by setting its `sortCriteria` option to `@distance`). This component requires your index to contain items with geographic metadata (that is, items with a `@latitude` and a `@longitude` field). This component supports using either: * The web browser built-in location provider. * [Google Maps Geolocation API](https://developers.google.com/maps/documentation/geolocation/intro) (you must provide your own API key). * Your own "static" latitude and longitude values. Using your own latitude and longitude values can be especially useful if you have a backend service that can provide pre-resolved geographic position when the page is rendered (for example, Sitecore). This component was previously only available in Coveo for Sitecore; this is a port to make it generally available. **CDN links for JavaScript Search Framework v2.3477.9** - [GitHub release](https://github.com/coveo/search-ui/releases/tag/v2.3477.9) - npm: `npm install coveo-search-ui@2.3477.9` - CDN resources: - JavaScript (lazy, minified): `https://static.cloud.coveo.com/searchui/v2.3477.9/js/CoveoJsSearch.Lazy.min.js` - Stylesheet (minified): `https://static.cloud.coveo.com/searchui/v2.3477.9/css/CoveoFullSearch.min.css` - Templates: `https://static.cloud.coveo.com/searchui/v2.3477.9/js/templates/templates.js` ### Minor changes |=== | Issue number | New feature | JSUI-1414 | Support array of string entries in the context | JSUI-1595 | Display a warning message when a required component option isn't set | JSUI-1597 | [`ResultFolding`] Capture **Show more**/**Show less** events in usage analytics | JSUI-1603 | Display a friendly message when organization isn't done provisioning | JSUI-1604 | Send `actionsHistory` on all search and query suggest calls | JSUI-1658 | [`Quickview`] Allow links to escape sandbox | JSUI-1680 | Add new string translations in many languages | JSUI-1741 | Add mechanism to try/catch underscore template rendering | JSUI-1785 | Remove `SearchAlerts` component from default search pages | JSUI-1803 | [`QuerySummary`] Recall the search terms in query summary | JSUI-1814 | Change default outline styling for result-header section | JSUI-1822 | Add Salesforce icon for Report results |===
Issue number Bug fixes
JSUI-1633

[Facet] Fixed wrong behavior when specifying either alphaAscending/alphaDescending (but not both) as availableSorts

JSUI-1614

[Facet] Fixed wrong alphabetical sorting when facet values include French accents

JSUI-1642 Fixed issue where query was duplicated when many search boxes were on the same page
JSUI-1687 Fixed unwanted behavior when rendering localized strings without passing arguments, if those strings normally have required parameters
JSUI-1700 Fixed issue where having an OmniboxResultList with a standalone searchbox would always redirect
JSUI-1706 [Breadcrumb] Removed overlapping X in mobile view
JSUI-1722 Ensured PrintableUri component output is never underlined by default
JSUI-1725 [ResultLayout] Fixed wrong caption for List string
JSUI-1727 Fixed issue with Request all fields available option in the debug panel
JSUI-1739 Rename Coveo.configureRessourceRoot function name to Coveo.configureResourceRoot
JSUI-1742 Ensured follow item message is no longer hidden in mobile view
JSUI-1743 [Quickview] Enlarge body content area
JSUI-1766 Ensured you can add more than one Recommendation component under a SearchInterface
JSUI-1774

Fixed tab navigation issue when using Internet Explorer or Safari

JSUI-1781 Added ResultLayout component layout duplication
JSUI-1795

Ensured Filetype icons are shown when building on Windows

JSUI-1799

Fixed gulp coverage issue on Windows

JSUI-1807

Fixed issue where components registered as external were not properly initialized

JSUI-1813 Added missing CSS class in responsive backdrop
JSUI-1815 Fixed issue where ErrorReport didn't reset actions on each new query
JSUI-1826 Fixed condition for SalesforceCase templates
|=== | Issue number | Case | Fixed support case | JSUI-1667 | 00037450 | [`HierarchicalFacet`] Repeated values appear when scrolling in facet search | JSUI-1669 | 00037508 | [[`FieldSuggestions`](https://coveo.github.io/search-ui/components/fieldsuggestions.html)] `headerTitle` option doesn't render title in [`Omnibox`](https://coveo.github.io/search-ui/components/omnibox.html) | JSUI-1775 | 00038408 | Client request to integrate their workaround in the JS Framework next release | JSUI-1777 | 00038355 | [`ResultFolding`] **Show More** can display result that should normally be filtered out | JSUI-1819 | 00039114 | Shorten helper doesn't work | JSUI-1821 | 00039145 | `PrintableUri` component should split XML parts as different [`ResultLink`](https://coveo.github.io/search-ui/components/resultlink.html) components | JSUI-1827 | 00039225 | Trailing wildcards when used in `groupby` drop facet values when clicking 'more' |=== [#2-2900-32] ## July 2017 maintenance release (v2.2900.32) **CDN links for JavaScript Search Framework v2.2900.32** - [GitHub release](https://github.com/coveo/search-ui/releases/tag/v2.2900.32) - npm: `npm install coveo-search-ui@2.2900.32` - CDN resources: - JavaScript (lazy, minified): `https://static.cloud.coveo.com/searchui/v2.2900.32/js/CoveoJsSearch.Lazy.min.js` - Stylesheet (minified): `https://static.cloud.coveo.com/searchui/v2.2900.32/css/CoveoFullSearch.min.css` - Templates: `https://static.cloud.coveo.com/searchui/v2.2900.32/js/templates/templates.js`
Issue number Bug fixes
JSUI-1821

Fixed issue causing clickableUri to be used over printableUri

JSUI-1827

Fixed issue with wildcards in a groupBy facet

[#2-2900-28] ## July 2017 maintenance release (v2.2900.28) ### Bug fixes [JSUI-1743] - Increase body content area in Quick view [JSUI-1807] - Fixed initialization issue with components registered as external [#2-2900-23] ## July 2017 release (v2.2900.23) > **Note** > > To learn how to upgrade from the Coveo JavaScript Search Framework V1 to V2, see [Version 1.x to 2.x breaking changes and upgrade guidelines](https://docs.coveo.com/en/418/). ### Major changes #### [JSUI-1500] - Lazy loading of components This is the biggest change of this release. To summarize briefly, this release ships with a `CoveoJsSearch.Lazy.js` file. You can include this file in your page instead of the `CoveoJsSearch.js` file. By using this file, the content of your search page will be dynamically analyzed. The framework will then include only the component code it needs. This results in faster load time since the JavaScript payload size now scales linearly with the complexity of your page. The previous `CoveoJsSearch.js` file, which includes the code of every component, stays the same. You can continue to use this file if you don't want to use the lazy loading feature. For more details, and to read more about this and how it can affect your integration, see [Lazy versus eager component loading](https://docs.coveo.com/en/295/). To read more about the actual implementation, see the post entitled [A story of TypeScript, webpack, and code splitting](http://source.coveo.com/2017/04/07/a-story-of-typescript-webpack-and-code-splitting/) on our tech blog. #### [JSUI-1530] - Rework loading animation with placeholder The previous loading animation was a Coveo Logo that covered the whole interface until the first query was complete. The new default animation uses "placeholders" which temporarily replace the facets, result list, and search box. Once they're fully loaded, they're replaced with their real implementation. Coupled with lazy loading, this ensures that as soon as a component is loaded, it's ready to be interacted with. This also mimics a popular pattern that can be seen in a lot of web application. **Example** #### [JSUI-1503] - Use Vapor styling for modal box Each component that was using a modal box to display itself ( `Quickview`, `Settings`, etc.) now uses a new styling which matches the one used in the Coveo Administration Console; the styling from the Vapor style guide. With this change, we also moved the components and menus that were previously being shown "inline" in the interface, to a modal box. The components that were moved are: `ShareQuery`, `AdvancedSearch`, `PreferencesPanel`, and `SearchAlerts`. #### [JSUI-1561] - Modify the default query syntax behavior on the search box Compared to the other changes included in this release, this can be considered a breaking change. Previously, the default behavior of the `Querybox` was to enable query syntax (that is, the `enableQuerySyntax` option was set to `true` by default). Concretely, this meant you could do field queries (for example, typing `@objecttype==case` to display case results only in the result list) in the search box . With this release, the `enableQuerySyntax` option is now set to `false` by default. The reason for this change is that in most public website deployments, end users have no understanding of the query syntax, and could therefore potentially input queries in the search box that would result in errors. Therefore, in practice, this option often had to be manually set to `false`. There are now three different ways to enable query syntax in the search box: * Explicitly specify `data-enable-query-syntax="true"` in the `Searchbox` component markup. * Use the `PreferencesPanel` which now exposes an option (see the [`enableQuerySyntax`](https://coveo.github.io/search-ui/components/resultspreferences.html#options.enablequerysyntax) option of the [`ResultsPreferences`](https://coveo.github.io/search-ui/components/resultspreferences.html) component) to allow the end user to choose whether to enable query syntax (and save preferences locally). * Use the Debug panel to enable query syntax for the current page load of the search interface. #### [JSUI-1569] - Expose various form controls to be usable by external/internal code Many components were using form controls internally, to provide functionality. For example, `AdvancedSearch` would make use of a Datepicker internally, and `PreferencesPanel` would make use of checkboxes. Those form controls and widgets are now globally available and documented under the `Coveo` namespace in the browser. They also come with a standard styling that matches the rest of the interface. The available widgets are : * `Checkbox` * `DatePicker` * `Dropdown` * `MultiSelect` * `NumericSpinner` * `RadioButton` * `TextInput` See [Use standard form controls](https://docs.coveo.com/en/392/). #### [ JSUI-1505 ] - Use SVG for icons Another major change with this release is that the Coveo JavaScript Search Framework went from using a PNG sprite to using [SVG](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics) icons (see [Scalable Vector Graphics](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics)). The main reason for this change is to provide an easier way for external code to tweak and customize the various icons of the framework. For example, a frequent use case is to modify the color scheme for the interface. External code often needs to modify the color surrounding the search box and search button. Since it's impossible to modify a PNG using only CSS, extra effort would have to be made to provide an alternate icon for the search button icon. With an SVG icon, it's possible to modify the color by specifying CSS rules. This apply to many icons in the interface. Modifying their size and how they react to different user interaction (for example, mouseover) is now also possible using only CSS. See [Customizing SVG icons](https://docs.coveo.com/en/423#customizing-svg-icons). #### [JSUI-1391] - Add table layout support This change is the continuation of the many result layouts feature which was introduced with the February 2017 release (v1.2126.4). It's now possible to provide a template to load results in a tabular manner, using semantic table markup. There's no "default" template for this layout, since using a table naturally implies a lot of customization, and is very unique to the kind of data you're trying to present. See [Result Layouts](https://docs.coveo.com/en/360/). #### [JSUI-1703] - Deprecate old styling The old styling has been entirely deprecated. Until this release, you had to set `data-design="new"` in the markup of your `SearchInterface` to activate the new design (otherwise, the framework considered you were using the old design and some components would behave differently). This attribute has been removed from the framework altogether, and activating the old design is no longer possible. While both the `CoveoFullSearchNewDesign.css` and `CoveoFullSearch.css` files are still available, their content is now identical (they both contain the new styling). Similarly, the `templates.js` and `templatesNew.js` files are still both available, but they now have identical content (they both contain the new templates). Finally, while the sprite files are still available, the framework now uses SVG icons (see [Customizing SVG icons](https://docs.coveo.com/en/423#customizing-svg-icons)). Consequently, if your search page contains any custom styling that relies on the old design, you'll likely have to adjust this styling to the new design when you upgrade to the v2.x package. ### Enhancements [JSUI-1361] - Improved the way result templates are loaded when using many result layouts [JSUI-1496] - Incorporated [Moment.js](https://momentjs.com/) in the date helper to improve framework compatibility with Firefox and Safari [JSUI-1518] - Added retina Salesforce icons [JSUI-1536] - Checking the **Always open results in new window** option in the `PreferencesPanel` now works as expected for `PrintableUri` result links [JSUI-1548] - Webpack [DefinePlugin](https://webpack.js.org/plugins/define-plugin/) is now used to control the Logger (in .min mode) [JSUI-1566] - `CoveoSettings` is now allowed to simply precede `CoveoSearchbox` in the markup (rather than being required to be its immediate preceding neighbor) [JSUI-1583] - The search box no longer highlights query syntax when query syntax is disabled [JSUI-1587] - The `Quickview` icon text has been replaced with a hover label [JSUI-1605] - Better alignment with toggle-icon-up when filtering messages [JSUI-1620] - Added support for inline JSON in component options [JSUI-1622] - Added a checkbox in the debug panel to request all fields [JSUI-1624] - Exported `Coveo.PublicPathUtils` [JSUI-1695] - A template settings for _ is now available [JSUI-1709] - Improved logging/error reporting in the console when components fail to initialize in lazy mode ### Bug fixes [JSUI-1336] - [`Facet`] Disappearing number of items per value [JSUI-1477] - [IE11 & Edge -`FieldTable`] Collapse icon/button not visible [JSUI-1498] - Typo in `Coveo\js\cultures\ru.js` [JSUI-1525] - [`FacetRange`] Unwanted behavior when facet `field` is `@date` and result template also contains a `FieldValue` whose `field` is `@date` [JSUI-1529] - Removed `Querybox` `autoFocus` option to fix issue where `Omnibox` suggestions would appear on top of loading animation. [JSUI-1535] - [Card layout default templates] Follow query/item popup message visible for too long [JSUI-1538] - Issue with keyboard navigation and query suggestions [JSUI-1540] - [`Folding`](https://coveo.github.io/search-ui/components/folding.html) component carrying first result value from page to page [JSUI-1542 / JSUI-1660] - [`FacetSlider`] Graphic not visible right after initial load [JSUI-1546] - [`AdvancedSearch`] Date range stops working after performing search in invalid date range [JSUI-1551] - `ResultsPerPage` string and `CardOverlay` `title` string can't be localized [JSUI-1553] - [`AdvancedSearch`] Calendar not translated [JSUI-1557] - Wrong **Reauthenticate SAML auth** icon background color [JSUI-1571] -Specified `Tab` result layout not being applied right after `init` [JSUI-1572] - [`Facet`] **Show more** ignores `allowedValues` option [JSUI-1579] - [`ResultLayout`] Missing French translations [JSUI-1588] - `coveo-result-layout-section` visible when initial query returns no result [JSUI-1593] - Issue with folding-expand/facet-expand when query syntax is disabled [JSUI-1600] - Lithium child result template not being rendered properly [JSUI-1612] - [IE11 & Edge - `Facet`] Preserve facet position under mouse on new facet query not working properly [JSUI-1623] - [`FacetSlider`] Issue when using a date field [JSUI-1645] - [`FacetSlider`] Component is still visible result set contains no results [JSUI-1661] - Renew expired token function missing automatic retry [JSUI-1668] - Minified files are larger than non-minified files [JSUI-1675] - [`AdvancedSearch`] Capitalize string for filters in Advanced Search Breadcrumb [JSUI-1678] - UI not sending correct device name to usage analytics service [JSUI-1682] - [`Quickview`] Wrong image in Coveo logo loading animation [JSUI-1683] - [`Facet`] `@objecttype` and `@filetype` facets are forcing lowercase captions [JSUI-1684] - [`SearchEndpoint`](https://coveo.github.io/search-ui/classes/searchendpoint.html) client side time calculation wrongly assumes that the Search API always returns data [JSUI-1689] - [IE11 & Edge - Card layout] YouTube card CSS issue [JSUI-1692] - [TypeDoc] Live component previews not working [JSUI-1693] - [Standalone searchbox] `Coveo.initSearchbox` not working when targeting search box element rather than "root" search interface element [JSUI-1694] - [`AdvancedSearch`] Wrong French translation of the `AtMost` string [JSUI-1698] - Clash between es6-promise/webpack and promise polyfill for finally/jQuery [JSUI-1707] - Issue with infinite scroll when switching layout [JSUI-1710] - `PrintableUri` styling issue [JSUI-1711] - [Card Layout] When infinite scrolling is enabled, additional results aren't being rendered correctly after the last results