{"version":3,"sources":["./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","./src/ui/Recommendation/Recommendation.ts","./src/events/QuickviewEvents.ts","./src/ui/Templates/DefaultRecommendationTemplate.ts","./src/ui/ResponsiveComponents/ResponsiveRecommendation.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/RecommendationDropdownContent.ts","./sass/_ResponsiveRecommendation.scss","./src/ui/Recommendation/RecommendationQuery.ts","./sass/_Recommendation.scss"],"names":[],"mappings":"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","file":"Recommendation__7f0661f464388d8314e9.js","sourcesContent":["import { Dom } from '../../utils/Dom';\nimport { ResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\n\nexport class ResponsiveComponentsUtils {\n private static smallTabsClassName: string = 'coveo-small-tabs';\n private static smallFacetClassName: string = 'coveo-small-facets';\n private static smallRecommendationClassName: string = 'coveo-small-recommendation';\n\n static shouldDrawFacetSlider(root: Dom, facetSliderElement: Dom): boolean {\n return ResponsiveDropdownContent.isTargetInsideOpenedDropdown(facetSliderElement) || !this.isSmallFacetActivated(root);\n }\n\n static isSmallTabsActivated(root: Dom): boolean {\n return root.hasClass(this.smallTabsClassName);\n }\n\n static isSmallFacetActivated(root: Dom): boolean {\n return root.hasClass(this.smallFacetClassName);\n }\n\n static isSmallRecommendationActivated(root: Dom): boolean {\n return root.hasClass(this.smallRecommendationClassName);\n }\n\n static activateSmallTabs(root: Dom): void {\n root.addClass(this.smallTabsClassName);\n }\n\n static deactivateSmallTabs(root: Dom): void {\n root.removeClass(this.smallTabsClassName);\n }\n\n static activateSmallFacet(root: Dom): void {\n root.addClass(this.smallFacetClassName);\n }\n\n static deactivateSmallFacet(root: Dom): void {\n root.removeClass(this.smallFacetClassName);\n }\n\n static activateSmallRecommendation(root: Dom): void {\n root.addClass(this.smallRecommendationClassName);\n }\n\n static deactivateSmallRecommendation(root: Dom): void {\n root.removeClass(this.smallRecommendationClassName);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","import { SearchInterface, ISearchInterfaceOptions } from '../SearchInterface/SearchInterface';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { QueryEvents, IQuerySuccessEventArgs, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { OmniboxEvents } from '../../events/OmniboxEvents';\nimport { ResultListEvents } from '../../events/ResultListEvents';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { PreferencesPanelEvents } from '../../events/PreferencesPanelEvents';\nimport { AnalyticsEvents } from '../../events/AnalyticsEvents';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { BreadcrumbEvents } from '../../events/BreadcrumbEvents';\nimport { QuickviewEvents } from '../../events/QuickviewEvents';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { Model, MODEL_EVENTS } from '../../models/Model';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport { INoResultsEventArgs } from '../../events/QueryEvents';\nimport { IQueryErrorEventArgs } from '../../events/QueryEvents';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ResponsiveRecommendation } from '../ResponsiveComponents/ResponsiveRecommendation';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { DefaultRecommendationTemplate } from '../Templates/DefaultRecommendationTemplate';\nimport { RecommendationQuery } from './RecommendationQuery';\nimport { RecommendationAnalyticsClient } from '../Analytics/RecommendationAnalyticsClient';\nimport 'styling/_Recommendation';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { l } from '../../strings/Strings';\n\nexport interface IRecommendationOptions extends ISearchInterfaceOptions {\n mainSearchInterface?: HTMLElement;\n userContext?: IStringMap;\n id?: string;\n optionsToUse?: string[];\n sendActionsHistory?: boolean;\n hideIfNoResults?: boolean;\n enableResponsiveMode?: boolean;\n responsiveBreakpoint?: number;\n dropdownHeaderLabel?: string;\n}\n\n/**\n * The Recommendation component is a {@link SearchInterface} that displays recommendations typically based on user\n * history.\n *\n * This component usually listens to the main SearchInterface. When the main SearchInterface generates a query, the\n * Recommendation component generates another query to get the recommendations at the same time.\n *\n * To get history-based recommendations, you will likely want to include the `pageview` script in your page (see\n * [coveo.analytics.js](https://github.com/coveo/coveo.analytics.js)). However, including this script is not mandatory.\n * For instance, you could use the Recommendation component without the Coveo Machine Learning service to create a\n * simple \"recommended people\" interface.\n *\n * It is possible to include this component inside another SearchInterface, but it is also possible to instantiate it as\n * a \"standalone\" search interface, without even instantiating a main SearchInterface component. In any case, a\n * Recommendation component always acts as a full-fledged search interface. Therefore, you can include any component\n * inside the Recommendation component (Searchbox, Facet, Sort, etc.), just as you would inside the main SearchInterface\n * component.\n *\n * @availablesince [July 2016 Release (v1.667.24)](https://docs.coveo.com/en/309/#july-2016-release-v166724)\n */\nexport class Recommendation extends SearchInterface implements IComponentBindings {\n static ID = 'Recommendation';\n private static NEXT_ID = 1;\n\n static doExport = () => {\n exportGlobally({\n Recommendation: Recommendation,\n DefaultRecommendationTemplate: DefaultRecommendationTemplate,\n RecommendationQuery: RecommendationQuery,\n RecommendationAnalyticsClient: RecommendationAnalyticsClient\n });\n };\n\n /**\n * The options for the recommendation component\n * @componentOptions\n */\n static options: IRecommendationOptions = {\n /**\n * Specifies the main {@link SearchInterface} to listen to.\n */\n mainSearchInterface: ComponentOptions.buildSelectorOption(),\n\n /**\n * Specifies the user context to send to Coveo usage analytics.\n * The component sends this information with the query alongside the user history to get the recommendations.\n */\n userContext: ComponentOptions.buildJsonOption(),\n\n /**\n * Specifies the ID of the interface.\n * The usage analytics use the interface ID to know which recommendation interface was selected.\n *\n * Default value is `Recommendation` for the first one and `Recommendation_{number}`, where {number} depends on the\n * number of Recommendation interfaces with default IDs in the page for the others.\n */\n id: ComponentOptions.buildStringOption(),\n\n /**\n * Specifies which options from the main {@link QueryBuilder} to use in the triggered query.\n *\n * Possible values are:\n * - `expression`\n * - `advancedExpression`\n * - `constantExpression`\n * - `disjunctionExpression`\n *\n * **Example:**\n *\n * Adding the expression (`q`) and the advanced expression (`aq`) parts of the main query in the triggered query:\n *\n * `data-options-to-use=\"expression,advancedExpression\"`\n *\n * Default value is `expression`.\n */\n optionsToUse: ComponentOptions.buildListOption<'expression' | 'advancedExpression' | 'constantExpression' | 'disjunctionExpression'>({\n defaultValue: ['expression']\n }),\n\n /**\n * Specifies whether to send the actions history along with the triggered query.\n *\n * Setting this option to `false` makes it impossible for this component to get Coveo Machine Learning\n * recommendations.\n *\n * However, setting this option to `false` can be useful to display side results in a search page.\n *\n * Default value is `true`.\n *\n * @deprecated This option is now deprecated. The correct way to control this behavior is to configure an appropriate machine learning model in the administration interface (Recommendation, Relevance tuning, Query suggestions).\n */\n sendActionsHistory: ComponentOptions.buildBooleanOption({\n defaultValue: true,\n deprecated:\n 'This option is now deprecated. The correct way to control this behaviour is to configure an appropriate machine learning model in the administration interface (Recommendation, Relevance tuning, Query suggestions)'\n }),\n\n /**\n * Specifies whether to hide the Recommendations component if no result or recommendation is available.\n *\n * Default value is `true`.\n */\n hideIfNoResults: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n autoTriggerQuery: ComponentOptions.buildBooleanOption({\n postProcessing: (value: boolean, options: IRecommendationOptions) => {\n if (options.mainSearchInterface) {\n return false;\n }\n return value;\n }\n }),\n\n /**\n * Specifies whether to enable *responsive mode* for Recommendation components. Setting this options to `false` on\n * any Recommendation component in a search interface disables responsive mode for all other Recommendation\n * components in the search interface.\n *\n * Responsive mode displays all Recommendation components under a single dropdown button whenever the width of the\n * HTML element which the search interface is bound to reaches or falls behind a certain threshold (see\n * {@link Recommendation.options.responsiveBreakpoint}).\n *\n * See also {@link Recommendation.options.dropdownHeaderLabel}.\n *\n * Default value is `true`.\n */\n enableResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n /**\n * If {@link Recommendation.options.enableResponsiveMode} is `true` for all Recommendation components, specifies the\n * width threshold (in pixels) of the search interface at which Recommendation components go in responsive mode.\n *\n * Recommendation components go in responsive mode when the width of the search interface is equal to or lower than\n * this value.\n *\n * The `search interface` corresponds to the HTML element with the class `CoveoSearchInterface`.\n *\n * If more than one Recommendation component in the search interface specifies a value for this option, then the\n * framework uses the last occurrence of the option.\n *\n * Default value is `1000`.\n */\n responsiveBreakpoint: ComponentOptions.buildNumberOption({ defaultValue: 1000 }),\n\n /**\n * If {@link Recommendation.options.enableResponsiveMode} is `true` for all Recommendation components, specifies the\n * label of the dropdown button that allows to display the Recommendation components when in responsive mode.\n *\n * If more than one Recommendation component in the search interface specifies a value for this option, then the\n * framework uses the first occurrence of the option.\n *\n * Default value is `Recommendations`.\n */\n dropdownHeaderLabel: ComponentOptions.buildLocalizedStringOption({\n localizedString: () => l('Recommendations')\n })\n };\n\n // These are used by the analytics client for recommendation\n // so that clicks event inside the recommendation component can be modified and attached to the main search interface.\n public mainQuerySearchUID: string;\n public mainQueryPipeline: string;\n\n private mainInterfaceQuery: IQuerySuccessEventArgs;\n\n /**\n * Creates a new Recommendation component.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the Recommendation component.\n * @param bindings The bindings that the component requires to function normally. If not set, these will be\n * automatically resolved (with a slower execution time)\n * @param _window\n */\n constructor(public element: HTMLElement, public options: IRecommendationOptions = {}, public analyticsOptions = {}, _window = window) {\n super(element, ComponentOptions.initComponentOptions(element, Recommendation, options), analyticsOptions, _window);\n this.element.style.display = '';\n if (!this.options.id) {\n this.generateDefaultId();\n }\n\n // This is done to allow the component to be included in another search interface without triggering the parent events.\n this.preventEventPropagation();\n\n if (this.options.mainSearchInterface) {\n this.bindToMainSearchInterface();\n }\n\n $$(this.element).on(QueryEvents.buildingQuery, (e: Event, args: IBuildingQueryEventArgs) =>\n this.handleRecommendationBuildingQuery(args)\n );\n $$(this.element).on(QueryEvents.querySuccess, (e: Event, args: IQuerySuccessEventArgs) => this.handleRecommendationQuerySuccess(args));\n $$(this.element).on(QueryEvents.noResults, (e: Event, args: INoResultsEventArgs) => this.handleRecommendationNoResults());\n $$(this.element).on(QueryEvents.queryError, (e: Event, args: IQueryErrorEventArgs) => this.handleRecommendationQueryError());\n\n if (!this.options.mainSearchInterface) {\n // When the recommendation component is \"standalone\", we add additional safeguard against bad config.\n this.ensureCurrentPageViewExistsInStore();\n }\n ResponsiveRecommendation.init(this.root, this, options);\n }\n\n public get historyStore() {\n return this.queryController.historyStore;\n }\n\n public getId(): string {\n return this.options.id;\n }\n\n public enable() {\n super.enable();\n this.show();\n }\n\n public disable() {\n super.disable();\n this.hide();\n }\n\n public hide(): void {\n $$(this.element).addClass('coveo-hidden');\n }\n\n public show(): void {\n $$(this.element).removeClass('coveo-hidden');\n }\n\n private ensureCurrentPageViewExistsInStore() {\n // It's not 100% sure that the element will actually be added in the store.\n // It's possible that an external script configured by the end user to log the page view already did that.\n // So we *could* end up with duplicate values in the store :\n // We rely on the fact that the coveo.analytics lib has defensive code against consecutive page view that are identical.\n // This is mainly done if the recommendation component is being initialized before the page view could be logged correctly by the coveo.analytics externa lib.\n const historyElement = {\n name: 'PageView',\n value: document.location.toString(),\n time: JSON.stringify(new Date()),\n title: _.escape(document.title)\n };\n this.historyStore.addElement(historyElement);\n }\n\n private bindToMainSearchInterface() {\n this.bindComponentOptionsModelToMainSearchInterface();\n this.bindQueryEventsToMainSearchInterface();\n }\n\n private bindComponentOptionsModelToMainSearchInterface() {\n // Try to fetch the componentOptions from the main search interface.\n // Since we do not know which interface is init first (recommendation or full search interface)\n // add a mechanism that waits for the full search interface to be correctly initialized\n // then, set the needed values on the component options model.\n let searchInterfaceComponent = get(this.options.mainSearchInterface, SearchInterface);\n const alreadyInitialized = searchInterfaceComponent != null;\n\n const onceInitialized = () => {\n const mainSearchInterfaceOptionsModel = searchInterfaceComponent.getBindings().componentOptionsModel;\n this.componentOptionsModel.setMultiple(mainSearchInterfaceOptionsModel.getAttributes());\n $$(this.options.mainSearchInterface).on(this.componentOptionsModel.getEventName(MODEL_EVENTS.ALL), () => {\n this.componentOptionsModel.setMultiple(mainSearchInterfaceOptionsModel.getAttributes());\n });\n };\n\n if (alreadyInitialized) {\n onceInitialized();\n } else {\n $$(this.options.mainSearchInterface).on(InitializationEvents.afterComponentsInitialization, () => {\n searchInterfaceComponent = get(this.options.mainSearchInterface, SearchInterface);\n onceInitialized();\n });\n }\n }\n\n private bindQueryEventsToMainSearchInterface() {\n // Whenever a query sucessfully returns on the full search interface, refresh the recommendation component.\n $$(this.options.mainSearchInterface).on(QueryEvents.querySuccess, (e: Event, args: IQuerySuccessEventArgs) => {\n this.mainInterfaceQuery = args;\n this.mainQuerySearchUID = args.results.searchUid;\n this.mainQueryPipeline = args.results.pipeline;\n if (args.results.results.length != 0) {\n this.usageAnalytics.logSearchEvent(analyticsActionCauseList.recommendation, {});\n this.queryController.executeQuery({\n closeModalBox: false\n });\n }\n });\n\n $$(this.options.mainSearchInterface).on(QueryEvents.queryError, () => this.hide());\n $$(this.options.mainSearchInterface).on(QueryEvents.noResults, () => this.hide());\n }\n\n private handleRecommendationBuildingQuery(data: IBuildingQueryEventArgs) {\n if (!this.disabled) {\n this.modifyQueryForRecommendation(data);\n this.addRecommendationInfoInQuery(data);\n }\n }\n\n private handleRecommendationQuerySuccess(data: IQuerySuccessEventArgs) {\n if (!this.disabled) {\n if (this.options.hideIfNoResults) {\n if (data.results.totalCount === 0) {\n this.hide();\n } else {\n this.show();\n }\n }\n }\n }\n\n private handleRecommendationNoResults() {\n if (!this.disabled) {\n if (this.options.hideIfNoResults) {\n this.hide();\n }\n }\n }\n\n private handleRecommendationQueryError() {\n if (!this.disabled) {\n this.hide();\n }\n }\n\n private modifyQueryForRecommendation(data: IBuildingQueryEventArgs) {\n if (this.mainInterfaceQuery) {\n Utils.copyObjectAttributes(data.queryBuilder, this.mainInterfaceQuery.queryBuilder, this.options.optionsToUse);\n }\n }\n\n private addRecommendationInfoInQuery(data: IBuildingQueryEventArgs) {\n if (!_.isEmpty(this.options.userContext)) {\n data.queryBuilder.addContext(this.options.userContext);\n }\n\n data.queryBuilder.recommendation = this.options.id;\n }\n\n private preventEventPropagation() {\n this.preventEventPropagationOn(QueryEvents);\n this.preventEventPropagationOn(OmniboxEvents);\n this.preventEventPropagationOn(ResultListEvents);\n this.preventEventPropagationOn(SettingsEvents);\n this.preventEventPropagationOn(PreferencesPanelEvents);\n this.preventEventPropagationOn(AnalyticsEvents);\n this.preventEventPropagationOn(BreadcrumbEvents);\n this.preventEventPropagationOn(QuickviewEvents);\n this.preventEventPropagationOn(InitializationEvents);\n this.preventEventPropagationOn(this.getAllModelEvents());\n }\n\n private preventEventPropagationOn(\n eventType,\n eventName = (event: string) => {\n return event;\n }\n ) {\n for (const event in eventType) {\n $$(this.root).on(eventName(event), (e: Event) => e.stopPropagation());\n }\n }\n\n private getAllModelEvents() {\n const events = {};\n const queryStateModel = this.getBindings().queryStateModel;\n _.each(_.values(Model.eventTypes), event => {\n const eventName = queryStateModel.getEventName(event);\n events[eventName] = eventName;\n _.each(_.values(QUERY_STATE_ATTRIBUTES), attribute => {\n const eventName = this.queryStateModel.getEventName(event + attribute);\n events[eventName] = eventName;\n });\n });\n return events;\n }\n\n private generateDefaultId() {\n let id = 'Recommendation';\n if (Recommendation.NEXT_ID !== 1) {\n this.logger.warn(\n 'Generating another recommendation default id',\n 'Consider configuring a human friendly / meaningful id for this interface'\n );\n id = id + '_' + Recommendation.NEXT_ID;\n }\n Recommendation.NEXT_ID++;\n this.options.id = id;\n }\n}\n\n// We do not register the Recommendation component since it is done with .coveo('initRecommendation')\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Recommendation/Recommendation.ts","/**\n * The `IQuickviewLoadedEventArgs` interface describes the object that all\n * [`quickviewLoaded`]{@link QuickviewEvents.quickviewLoaded} event handlers receive as an argument.\n */\nexport interface IQuickviewLoadedEventArgs {\n /**\n * The amount of time it took to download the content to display in the quickview modal window (in milliseconds).\n */\n duration: number;\n}\n\n/**\n * The `QuickviewEvents` static class contains the string definitions of all events that strongly relate to the\n * [`Quickview`]{@link Quickview} component.\n */\nexport class QuickviewEvents {\n /**\n * Triggered by the [`QuickviewDocument`]{@link QuickviewDocument} component when the content to display in the\n * quickview modal window has just finished downloading.\n *\n * The [`Quickview`]{@link Quickview} component listens to this event to know when to remove its loading animation.\n *\n * All `quickviewLoaded` event handlers receive a [`QuickviewLoadedEventArgs`]{@link IQuickviewLoadedEventArgs} object\n * as an argument.\n *\n * @type {string} The string value is `quickviewLoaded`.\n */\n public static quickviewLoaded = 'quickviewLoaded';\n\n /**\n * Triggered by the [`QuickviewDocument`]{@link QuickviewDocument} component when the end user has just clicked the\n * **Quickview** button/link to open the quickview modal window.\n *\n * This event allows external code to modify the terms to highlight before the content of the quickview modal window\n * is rendered.\n *\n * All `openQuickview` event handlers receive an\n * [`OpenQuickviewEventArgs`]{@link ResultListEvents.IOpenQuickviewEventArgs} object as an argument.\n *\n * @type {string} The string value is `openQuickview`.\n */\n public static openQuickview = 'openQuickview';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/QuickviewEvents.ts","import { Template } from './Template';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class DefaultRecommendationTemplate extends Template {\n instantiateToString(object?: IQueryResult): string {\n var template = `
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
`;\n return template;\n }\n\n instantiateToElement(object?: IQueryResult): Promise {\n return new Promise((resolve, reject) => {\n var div = document.createElement('div');\n div.innerHTML = this.instantiateToString(object);\n resolve(div);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/DefaultRecommendationTemplate.ts","import { ResponsiveComponentsManager, IResponsiveComponent, IResponsiveComponentOptions } from './ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from './ResponsiveComponentsUtils';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Utils } from '../../utils/Utils';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\nimport { Recommendation } from '../Recommendation/Recommendation';\nimport { RecommendationDropdownContent } from './ResponsiveDropdown/RecommendationDropdownContent';\nimport { ResponsiveDropdownHeader } from './ResponsiveDropdown/ResponsiveDropdownHeader';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\nimport { l } from '../../strings/Strings';\nimport { Component } from '../Base/Component';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { QueryEvents, IQuerySuccessEventArgs, INoResultsEventArgs } from '../../events/QueryEvents';\nimport * as _ from 'underscore';\n\nimport 'styling/_ResponsiveRecommendation';\nimport { Defer } from '../../MiscModules';\n\nexport class ResponsiveRecommendation implements IResponsiveComponent {\n public static DROPDOWN_CONTAINER_CSS_CLASS_NAME: string = 'coveo-recommendation-dropdown-container';\n public static RESPONSIVE_BREAKPOINT = 1000;\n\n public recommendationRoot: Dom;\n private breakpoint: number;\n private dropdown: ResponsiveDropdown;\n private dropdownHeaderLabel: string;\n private searchInterface: SearchInterface;\n\n public static init(root: HTMLElement, component, options: IResponsiveComponentOptions) {\n let logger = new Logger('ResponsiveRecommendation');\n let coveoRoot = this.findParentRootOfRecommendationComponent(root);\n if (!coveoRoot) {\n logger.info('Recommendation component has no parent interface. Disabling responsive mode for this component.');\n return;\n }\n\n if (!$$(coveoRoot).find('.coveo-results-column')) {\n logger.info('Cannot find element with class coveo-results-column. Disabling responsive mode for this component.');\n return;\n }\n\n ResponsiveComponentsManager.register(\n ResponsiveRecommendation,\n $$(coveoRoot),\n Recommendation.ID,\n component,\n _.extend({}, options, { initializationEventRoot: $$(root) })\n );\n }\n\n private static findParentRootOfRecommendationComponent(root: HTMLElement): Dom {\n let coveoRoot = $$(root).parents(Component.computeCssClassName(SearchInterface));\n if (coveoRoot[0]) {\n return $$(coveoRoot[0]);\n }\n return null;\n }\n\n constructor(\n public coveoRoot: Dom,\n public ID: string,\n options: IResponsiveComponentOptions,\n public responsiveDropdown?: ResponsiveDropdown\n ) {\n this.recommendationRoot = this.getRecommendationRoot();\n this.dropdownHeaderLabel = options.dropdownHeaderLabel;\n this.breakpoint = this.defineResponsiveBreakpoint(options);\n this.searchInterface = Component.get(this.coveoRoot.el, SearchInterface, false);\n this.dropdown = this.buildDropdown(responsiveDropdown);\n this.registerOnOpenHandler();\n this.registerQueryEvents();\n this.handleResizeEvent();\n }\n\n public handleResizeEvent(): void {\n if (this.needSmallMode() && !ResponsiveComponentsUtils.isSmallRecommendationActivated(this.coveoRoot)) {\n this.changeToSmallMode();\n } else if (!this.needSmallMode() && ResponsiveComponentsUtils.isSmallRecommendationActivated(this.coveoRoot)) {\n this.changeToLargeMode();\n }\n\n if (this.dropdown.isOpened) {\n this.dropdown.dropdownContent.positionDropdown();\n }\n }\n\n public needDropdownWrapper(): boolean {\n return this.needSmallMode();\n }\n\n private needSmallMode(): boolean {\n const isWidthSmallerThanBreakpoint = this.coveoRoot.width() <= this.breakpoint;\n if (!this.searchInterface) {\n return isWidthSmallerThanBreakpoint;\n }\n\n switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n case 'small':\n return true;\n case 'auto':\n return isWidthSmallerThanBreakpoint;\n default:\n return false;\n }\n }\n\n private changeToSmallMode() {\n this.dropdown.close();\n const header = this.coveoRoot.find(`.${ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS}`);\n if (!header) {\n // It's possible that recommendation gets initialized before the main interface is completed.\n // We defer the resize event execution in that case.\n Defer.defer(() => this.handleResizeEvent());\n } else {\n $$(header).append(this.dropdown.dropdownHeader.element.el);\n this.disableFacetPreservePosition();\n ResponsiveComponentsUtils.activateSmallRecommendation(this.coveoRoot);\n ResponsiveComponentsUtils.activateSmallRecommendation(this.recommendationRoot);\n }\n }\n\n private changeToLargeMode() {\n this.enableFacetPreservePosition();\n this.dropdown.cleanUp();\n ResponsiveComponentsUtils.deactivateSmallRecommendation(this.coveoRoot);\n ResponsiveComponentsUtils.deactivateSmallRecommendation(this.recommendationRoot);\n }\n\n private buildDropdown(responsiveDropdown?: ResponsiveDropdown): ResponsiveDropdown {\n let dropdownContent = this.buildDropdownContent();\n let dropdownHeader = this.buildDropdownHeader();\n let dropdown = responsiveDropdown ? responsiveDropdown : new ResponsiveDropdown(dropdownContent, dropdownHeader, this.coveoRoot);\n dropdown.disablePopupBackground();\n return dropdown;\n }\n\n private buildDropdownHeader(): ResponsiveDropdownHeader {\n let dropdownHeaderElement = $$('a');\n let content = $$('p');\n content.text(l(this.dropdownHeaderLabel));\n dropdownHeaderElement.el.appendChild(content.el);\n let dropdownHeader = new ResponsiveDropdownHeader('recommendation', dropdownHeaderElement);\n return dropdownHeader;\n }\n\n private buildDropdownContent(): RecommendationDropdownContent {\n let dropdownContentElement: Dom;\n let recommendationColumn = this.coveoRoot.find('.coveo-recommendation-column');\n if (recommendationColumn) {\n dropdownContentElement = $$(recommendationColumn);\n } else {\n dropdownContentElement = $$(this.coveoRoot.find('.' + Component.computeCssClassName(Recommendation)));\n }\n\n let dropdownContent = new RecommendationDropdownContent('recommendation', dropdownContentElement, this.coveoRoot);\n return dropdownContent;\n }\n\n private defineResponsiveBreakpoint(options: IResponsiveComponentOptions): number {\n let breakpoint;\n if (Utils.isNullOrUndefined(options.responsiveBreakpoint)) {\n breakpoint = ResponsiveRecommendation.RESPONSIVE_BREAKPOINT;\n } else {\n breakpoint = options.responsiveBreakpoint;\n }\n return breakpoint;\n }\n\n private getFacetSliders(): any[] {\n const facetSliders = [];\n this.coveoRoot.findAll(Component.computeSelectorForType('FacetSlider')).forEach(facetSliderElement => {\n const facetSlider = Component.get(facetSliderElement);\n facetSlider && facetSliders.push(facetSlider);\n });\n return facetSliders;\n }\n\n private getFacets(): any[] {\n const facets = [];\n this.coveoRoot.findAll(Component.computeSelectorForType('Facet')).forEach(facetElement => {\n const facet = Component.get(facetElement);\n facet && facets.push(facet);\n });\n return facets;\n }\n\n private enableFacetPreservePosition(): void {\n this.getFacets().forEach(facet => (facet.options.preservePosition = true));\n }\n\n private disableFacetPreservePosition(): void {\n this.getFacets().forEach(facet => (facet.options.preservePosition = false));\n }\n\n private drawFacetSliderGraphs(): void {\n this.getFacetSliders().forEach(facetSlider => facetSlider.drawDelayedGraphData());\n }\n\n private registerOnOpenHandler(): void {\n this.dropdown.registerOnOpenHandler(this.drawFacetSliderGraphs, this);\n }\n\n private getRecommendationRoot(): Dom {\n return $$(this.coveoRoot.find('.' + Component.computeCssClassName(Recommendation)));\n }\n\n private registerQueryEvents() {\n let recommendationInstance = get(this.recommendationRoot.el, SearchInterface);\n if (recommendationInstance && recommendationInstance.options.hideIfNoResults) {\n this.coveoRoot.on(QueryEvents.querySuccess, (e: Event, data: IQuerySuccessEventArgs) => this.handleRecommnendationQuerySucess(data));\n this.coveoRoot.on(QueryEvents.noResults, (e: Event, data: INoResultsEventArgs) => this.handleRecommendationNoResults());\n }\n this.coveoRoot.on(QueryEvents.queryError, () => this.handleRecommendationQueryError());\n }\n\n private handleRecommnendationQuerySucess(data: IQuerySuccessEventArgs) {\n if (data.results.totalCount === 0) {\n this.dropdown.close();\n this.dropdown.dropdownHeader.hide();\n } else {\n this.dropdown.dropdownHeader.show();\n }\n }\n\n private handleRecommendationNoResults() {\n this.dropdown.close();\n this.dropdown.dropdownHeader.hide();\n }\n\n private handleRecommendationQueryError() {\n this.dropdown.close();\n this.dropdown.dropdownHeader.hide();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveRecommendation.ts","import { IResponsiveDropdownContent, ResponsiveDropdownContent } from './ResponsiveDropdownContent';\nimport { $$, Dom } from '../../../utils/Dom';\n\nexport class RecommendationDropdownContent implements IResponsiveDropdownContent {\n public static OPENED_DROPDOWN_CSS_CLASS_NAME = 'coveo-open-dropdown-content';\n\n private cssClassName: string;\n\n constructor(componentName: string, public element: Dom, private coveoRoot: Dom) {\n this.cssClassName = `coveo-${componentName}-dropdown-content`;\n this.element.addClass(this.cssClassName);\n this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n }\n\n public positionDropdown() {\n this.element.el.style.display = '';\n\n let dropdownContentWrapper = this.coveoRoot.find('.coveo-results-column');\n $$(dropdownContentWrapper).prepend(this.element.el);\n this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n this.element.addClass(this.cssClassName);\n\n // forces the browser to reflow the element, so that the transition is applied.\n window.getComputedStyle(this.element.el).maxHeight;\n\n this.element.addClass(RecommendationDropdownContent.OPENED_DROPDOWN_CSS_CLASS_NAME);\n }\n\n public hideDropdown() {\n this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n this.element.addClass(this.cssClassName);\n\n this.element.removeClass(RecommendationDropdownContent.OPENED_DROPDOWN_CSS_CLASS_NAME);\n }\n\n public cleanUp() {\n this.element.removeClass(this.cssClassName);\n this.element.removeClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/RecommendationDropdownContent.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveRecommendation.scss\n// module id = 653\n// module chunks = 22 88","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Utils } from '../../utils/Utils';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { Initialization } from '../Base/Initialization';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\n\nexport interface IRecommendationQueryOptions {}\n\nexport class RecommendationQuery extends Component {\n static ID = 'RecommendationQuery';\n\n /**\n * The options for the RecommendationQuery component\n * @componentOptions\n */\n static options: IRecommendationQueryOptions = {};\n\n private content: string;\n\n constructor(public element: HTMLElement, public options?: IRecommendationQueryOptions, bindings?: IComponentBindings) {\n super(element, RecommendationQuery.ID, bindings);\n this.options = ComponentOptions.initComponentOptions(element, RecommendationQuery, options);\n\n if (this.element.tagName.toLowerCase() === 'script') {\n try {\n this.content = Utils.decodeHTMLEntities($$(this.element).text());\n } catch (e) {\n return;\n }\n if (!_.isUndefined(this.content) && this.content != '') {\n this.bind.onRootElement(QueryEvents.buildingQuery, this.handleBuildingQuery);\n }\n }\n }\n\n private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n data.queryBuilder.advancedExpression.add(this.content);\n }\n}\n\nInitialization.registerAutoCreateComponent(RecommendationQuery);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Recommendation/RecommendationQuery.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Recommendation.scss\n// module id = 655\n// module chunks = 22 88"],"sourceRoot":""}