[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, which includes the code of every component, stays the same. You can continue to use this file if you do not wish 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.
To read more about the actual implementation, see the post entitled 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 are fully loaded, they are replaced by their real implementation.
Coupled with lazy loading, this ensures that as soon as a component is loaded, it is ready to be interacted with. This also mimics a popular pattern that can be seen in a lot of web application.
[JSUI-1503] - Use Vapor styling for modal box
Each component that was using a modal box to display itself (
Settings, etc.) now uses a new styling which matches the one used in the Coveo Cloud V2 Administration Console; the styling from the Vapor styleguide (see Vapor CSS).
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:
[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 (i.e., the
enableQuerySyntax option was set to
true by default). Concretely, this meant you could do field queries (e.g., 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 thus potentially input queries in the search box that would result in errors. Therefore, in practice, this option often had to be manually set to
There are now three different ways to enable query syntax in the search box:
- Explicitly specify
- Use the
PreferencesPanelwhich now exposes an option (see the
enableQuerySyntaxoption of the
ResultsPreferencescomponent) 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 :
[ JSUI-1505 ] - Use SVG for icons
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 is not possible 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 is possible to modify the color by simply specifying CSS rules. This apply to many icons in the interface. Modifying their size and how they react to different user interaction (eg: mouseover) is now also possible using only CSS.
[JSUI-1391] - Add Table layout support
This change is the continuation of the multiple result layouts feature which was introduced with the February 2017 release (v1.2126.4).
It is now possible to provide a template to load results in a tabular manner, using semantic table markup. There is 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 are trying to present.
See Result Layouts.
[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
CoveoFullSearch.css files are still available, their content is now identical (they both contain the new styling).
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).
Consequently, if your search page contains any custom styling that relies on the old design, you will very likely need to adjust this styling to the new design when you upgrade to the v2.x package.
[JSUI-1361] - Improved the way result templates are loaded when using multiple result layouts
[JSUI-1496] - Incorporated Moment.js 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 is now used to control the Logger (in .min mode)
[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
[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
[JSUI-1336] - [
Facet] Disappearing number of items per value
[JSUI-1477] - [IE11 & Edge -
FieldTable] Collapse icon/button not visible
[JSUI-1498] - Typo in
[JSUI-1529] - Removed
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
Folding 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-1553] - [
AdvancedSearch] Calendar not translated
[JSUI-1557] - Wrong Reauthenticate SAML auth icon background color
Tab result layout not being applied right after
[JSUI-1572] - [
Facet] Show more ignores
[JSUI-1579] - [
ResultLayout] Missing French translations
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] - Lithiumchild 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] - [
@filetype facets are forcing lowercase captions
SearchEndpoint 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] incorrect French translation of the
[JSUI-1698] - Clash between es6-promise/webpack and promise polyfill for finally/jQuery
[JSUI-1707] - Issue with infinite scroll when switching layout
PrintableUri styling issue
[JSUI-1711] - [Card Layout] When infinite scrolling is enabled, additional results are not being rendered correctly after the last results