{"version":3,"sources":["./src/ui/PromotedResultsBadge/PromotedResultsBadge.ts","./sass/_PromotedResultsBadge.scss"],"names":[],"mappings":"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","file":"PromotedResultsBadge__d2b01b0f173a0c131e66.js","sourcesContent":["import 'styling/_PromotedResultsBadge';\nimport { $$, ComponentOptions, Dom, Initialization, l, ResultListEvents } from '../../Core';\nimport { IDisplayedNewResultEventArgs } from '../../events/ResultListEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Component } from '../../ui/Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\n\nexport interface IPromotedResultsBadgeOptions {\n showBadgeForFeaturedResults: boolean;\n showBadgeForRecommendedResults: boolean;\n\n captionForRecommended: string;\n captionForFeatured: string;\n\n colorForFeaturedResults: string;\n colorForRecommendedResults: string;\n}\n\n/**\n * Depending on its configuration, this component will render badges on query result items whose ranking scores were increased by [featured results](https://docs.coveo.com/en/1961/) query pipeline rules and/or [Coveo ML ART](https://docs.coveo.com/en/1671/#automatic-relevance-tuning-art-feature).\n *\n * This component can be put anywhere in the markup configuration of a search interface. However, it is meant to be initialized only once, and should thus never be included in a result template.\n *\n * @externaldocs [Adding Promoted Results Badges](https://docs.coveo.com/en/3123/)\n * @availablesince [July 2018 Release (v2.4382.10)](https://docs.coveo.com/en/1360/)\n */\nexport class PromotedResultsBadge extends Component {\n static ID = 'PromotedResultsBadge';\n\n static doExport = () => {\n exportGlobally({\n PromotedResultsBadge\n });\n };\n\n /**\n * @componentOptions\n */\n static options: IPromotedResultsBadgeOptions = {\n /**\n * Whether to show a badge when a result was promoted by a featured results query pipeline rule.\n */\n showBadgeForFeaturedResults: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n /**\n * Whether to show a badge when a result was promoted by Coveo ML ART.\n */\n showBadgeForRecommendedResults: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * The caption to show on the badge for results promoted by Coveo ML ART.\n *\n * Default value is the localized string for `Recommended`.\n *\n * @examples Recommended by Coveo ML\n */\n captionForRecommended: ComponentOptions.buildLocalizedStringOption({\n localizedString: () => l('Recommended'),\n depend: 'showBadgeForRecommendedResults'\n }),\n\n /**\n * The caption to show on the badge for results promoted by a _featured results_ query pipeline rule.\n *\n * Default value is the localized string for `Featured`.\n *\n * @examples Recommended by ACME\n */\n captionForFeatured: ComponentOptions.buildLocalizedStringOption({\n localizedString: () => l('Featured'),\n depend: 'showBadgeForFeaturedResults'\n }),\n\n /**\n * The badge color for results promoted by a _featured results_ query pipeline rule.\n *\n * Can be specified using:\n * - a hexadecimal value\n * - an RGB value\n * - a CSS color name\n *\n * @examples #f58020, rgb(125 10 36), red\n *\n * Default value is controlled through the default stylesheet of the framework.\n */\n colorForFeaturedResults: ComponentOptions.buildColorOption({ depend: 'showBadgeForFeaturedResults' }),\n\n /**\n * The badge color for results promoted by Coveo ML ART.\n *\n * Can be specified using:\n * - a hexadecimal value\n * - an RGB value\n * - a CSS color name\n *\n * @examples #f58020, rgb(125 10 36), red\n *\n * Default value is controlled through the default stylesheet of the framework.\n */\n colorForRecommendedResults: ComponentOptions.buildColorOption({ depend: 'showBadgeForRecommendedResults' })\n };\n\n constructor(public element: HTMLElement, public options: IPromotedResultsBadgeOptions, public bindings: IComponentBindings) {\n super(element, PromotedResultsBadge.ID, bindings);\n this.options = ComponentOptions.initComponentOptions(element, PromotedResultsBadge, options);\n this.bind.onRootElement(ResultListEvents.newResultDisplayed, (args: IDisplayedNewResultEventArgs) => {\n const badge = this.buildBadge(args.result, args.item);\n if (badge) {\n this.appendBadge(badge, args.item);\n }\n });\n }\n\n private buildBadge(result: IQueryResult, resultElement: HTMLElement): Dom {\n if (!this.shouldShowABadge(result, resultElement)) {\n return null;\n }\n const badge = $$('div', {\n className: this.getClassName(result)\n });\n\n this.applyTagline(result, badge);\n this.applyColor(result, badge);\n return badge;\n }\n\n private appendBadge(badge: Dom, resultElement: HTMLElement) {\n if (this.isCardLayout(resultElement)) {\n this.addBadgeToCardLayout(badge, resultElement);\n } else {\n $$(resultElement).prepend(badge.el);\n }\n }\n\n private addBadgeToCardLayout(badge: Dom, resultElement: HTMLElement): void {\n let container: Dom;\n\n if (resultElement.parentElement == null) {\n container = $$('div', {\n className: 'coveo-promoted-result-badge-container-card-layout'\n });\n\n container.insertBefore(resultElement);\n } else {\n container = $$(resultElement.parentElement);\n }\n\n container.append(badge.el);\n container.append(resultElement);\n }\n\n private applyColor(result: IQueryResult, badge: Dom) {\n if (this.isFeatured(result) && this.options.colorForFeaturedResults) {\n badge.el.style.backgroundColor = this.options.colorForFeaturedResults;\n }\n\n if (this.isRecommended(result) && this.options.colorForRecommendedResults) {\n badge.el.style.backgroundColor = this.options.colorForRecommendedResults;\n }\n }\n\n private applyTagline(result: IQueryResult, badge: Dom): string {\n if (this.isFeatured(result) && this.options.showBadgeForFeaturedResults) {\n badge.text(this.options.captionForFeatured);\n }\n if (this.isRecommended(result) && this.options.showBadgeForRecommendedResults) {\n return badge.text(this.options.captionForRecommended);\n }\n }\n\n private isFeatured(result: IQueryResult): boolean {\n return result.isTopResult;\n }\n\n private isRecommended(result: IQueryResult): boolean {\n return result.isRecommendation && !result.isTopResult;\n }\n\n private isTableLayout(resultElement: HTMLElement): boolean {\n return $$(resultElement).hasClass('coveo-table-layout');\n }\n\n private isCardLayout(resultElement: HTMLElement): boolean {\n return $$(resultElement).hasClass('coveo-card-layout');\n }\n\n private getClassName(result: IQueryResult) {\n return `coveo-promoted-result-badge coveo-${this.isFeatured(result) ? 'featured' : 'recommended'}-result-badge`;\n }\n\n private shouldShowABadge(result: IQueryResult, resultElement: HTMLElement): boolean {\n if (this.isTableLayout(resultElement)) {\n return false;\n }\n\n if (this.isFeatured(result) && this.options.showBadgeForFeaturedResults) {\n return true;\n }\n\n if (this.isRecommended(result) && this.options.showBadgeForRecommendedResults) {\n return true;\n }\n\n return false;\n }\n}\n\nInitialization.registerAutoCreateComponent(PromotedResultsBadge);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/PromotedResultsBadge/PromotedResultsBadge.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_PromotedResultsBadge.scss\n// module id = 677\n// module chunks = 68 88"],"sourceRoot":""}