UNPKG

coveo-search-ui

Version:

Coveo JavaScript Search Framework

63 lines (51 loc) 2.17 kB
import 'styling/DynamicFacet/_DynamicFacetBreadcrumbs'; import { $$ } from '../../utils/Dom'; import { SVGIcons } from '../../utils/SVGIcons'; import { IDynamicHierarchicalFacet } from './IDynamicHierarchicalFacet'; import { l } from '../../strings/Strings'; import { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta'; import { getHeadingTag } from '../../utils/AccessibilityUtils'; import { escape } from 'underscore'; export interface IDynamicHierarchicalFacetBreadcrumbsOptions { headingLevel?: number; } export class DynamicHierarchicalFacetBreadcrumb { public element: HTMLElement; constructor(private facet: IDynamicHierarchicalFacet, private readonly options?: IDynamicHierarchicalFacetBreadcrumbsOptions) { this.create(); } private create() { this.element = $$('div', { className: 'coveo-dynamic-facet-breadcrumb coveo-breadcrumb-item' }).el; const pathToRender = this.facet.values.selectedPath; const captionLabel = pathToRender.map(pathPart => escape(this.facet.getCaption(pathPart))).join(' / '); this.createAndAppendTitle(); this.createAndAppendCaption(captionLabel); } private createAndAppendTitle() { const titleElement = $$( getHeadingTag(this.options && this.options.headingLevel, 'h3'), { className: 'coveo-dynamic-facet-breadcrumb-title' }, `${this.facet.options.title}:` ).el; this.element.appendChild(titleElement); } private createAndAppendCaption(caption: string) { const valueElement = $$( 'button', { type: 'button', className: 'coveo-dynamic-facet-breadcrumb-value', ariaLabel: l('RemoveFilterOn', caption) }, caption ).el; const clearElement = $$('span', { className: 'coveo-dynamic-facet-breadcrumb-value-clear' }, SVGIcons.icons.mainClear).el; valueElement.appendChild(clearElement); $$(valueElement).on('click', () => this.valueSelectAction()); this.element.appendChild(valueElement); } private valueSelectAction() { this.facet.reset(); this.facet.triggerNewQuery(() => this.facet.logAnalyticsEvent(analyticsActionCauseList.breadcrumbFacet)); } }