{"version":3,"sources":["./src/ui/Breadcrumb/Breadcrumb.ts","./sass/_Breadcrumb.scss"],"names":[],"mappings":"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","file":"Breadcrumb__d2b01b0f173a0c131e66.js","sourcesContent":["import 'styling/_Breadcrumb';\nimport { each, find, isEmpty } from 'underscore';\nimport { BreadcrumbEvents, IBreadcrumbItem, IClearBreadcrumbEventArgs, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IBreadcrumbOptions {}\n\n/**\n * The Breadcrumb component displays a summary of the currently active query filters.\n *\n * For example, when the user selects a {@link Facet} value, the breadcrumbs display this value.\n *\n * The active filters are obtained by the component by firing an event in the Breadcrumb component.\n *\n * All other components having an active state can react to this event by providing custom bits of HTML to display\n * inside the breadcrumbs.\n *\n * Thus, it is possible to easily extend the Breadcrumb component using custom code to display information about custom\n * states and filters.\n *\n * See {@link BreadcrumbEvents} for the list of events and parameters sent when a Breadcrumb component is populated.\n */\nexport class Breadcrumb extends Component {\n static ID = 'Breadcrumb';\n static options: IBreadcrumbOptions = {};\n\n static doExport = () => {\n exportGlobally({\n Breadcrumb: Breadcrumb\n });\n };\n\n private lastBreadcrumbs: IBreadcrumbItem[];\n\n /**\n * Creates a new Breadcrumb component. Binds event on {@link QueryEvents.deferredQuerySuccess} to draw the\n * breadcrumbs.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the Breadcrumb 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 */\n constructor(public element: HTMLElement, public options?: IBreadcrumbOptions, bindings?: IComponentBindings) {\n super(element, Breadcrumb.ID, bindings);\n\n this.options = ComponentOptions.initComponentOptions(element, Breadcrumb, options);\n\n this.bind.oneRootElement(InitializationEvents.afterInitialization, () => this.handleAfterInitialization());\n this.bind.onRootElement(BreadcrumbEvents.redrawBreadcrumb, () => this.redrawBreadcrumb());\n this.element.style.display = 'none';\n this.element.setAttribute('tabindex', '-1');\n this.addDefaultAccessibilityAttributes();\n }\n\n /**\n * Triggers the event to populate the breadcrumbs. Components such as {@link Facet} can populate the breadcrumbs.\n *\n * This method triggers a {@link BreadcrumbEvents.populateBreadcrumb} event with an\n * {@link IPopulateBreadcrumbEventArgs} object (an array) that other components or code can populate.\n * @returns {IBreadcrumbItem[]} A populated breadcrumb item list.\n */\n public getBreadcrumbs(): IBreadcrumbItem[] {\n const args = <IPopulateBreadcrumbEventArgs>{ breadcrumbs: [] };\n this.bind.trigger(this.root, BreadcrumbEvents.populateBreadcrumb, args);\n this.logger.debug('Retrieved breadcrumbs', args.breadcrumbs);\n\n // If newly received breadcrumbs are empty, and last breadcrumbs were not.\n // this means end user removed the last filter:\n // We want to shift keyboard focus to the result list container in that case, for ease of use of the interface\n // https://coveord.atlassian.net/browse/JSUI-3078\n if (isEmpty(args.breadcrumbs) && !isEmpty(this.lastBreadcrumbs)) {\n this.focusFirstEnabledResultList();\n }\n this.lastBreadcrumbs = args.breadcrumbs;\n return args.breadcrumbs;\n }\n\n /**\n * Triggers the event to clear the current breadcrumbs that components such as {@link Facet} can populate.\n *\n * Also triggers a new query and logs the `breadcrumbResetAll` event in the usage analytics.\n */\n public clearBreadcrumbs() {\n const args = <IClearBreadcrumbEventArgs>{};\n this.bind.trigger(this.root, BreadcrumbEvents.clearBreadcrumb, args);\n this.logger.debug('Clearing breadcrumbs');\n this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.breadcrumbResetAll, {});\n this.queryController.executeQuery();\n }\n\n /**\n * Draws the specified breadcrumb items.\n * @param breadcrumbs The breadcrumb items to draw.\n */\n public drawBreadcrumb(breadcrumbs: IBreadcrumbItem[]) {\n $$(this.element).empty();\n if (breadcrumbs.length != 0) {\n this.element.style.display = '';\n } else {\n this.element.style.display = 'none';\n }\n\n const breadcrumbItems = document.createElement('div');\n $$(breadcrumbItems).addClass('coveo-breadcrumb-items');\n this.element.appendChild(breadcrumbItems);\n each(breadcrumbs, (bcrumb: IBreadcrumbItem) => {\n const elem = bcrumb.element;\n $$(elem).addClass('coveo-breadcrumb-item');\n breadcrumbItems.appendChild(elem);\n });\n\n const clearText = $$('div', undefined, l('ClearAllFilters')).el;\n const clear = $$(\n 'div',\n {\n className: 'coveo-breadcrumb-clear-all'\n },\n clearText\n ).el;\n\n new AccessibleButton()\n .withElement(clear)\n .withSelectAction(() => this.clearBreadcrumbs())\n .withOwner(this.bind)\n .withoutLabelOrTitle()\n .build();\n\n this.element.appendChild(clear);\n }\n\n private redrawBreadcrumb() {\n this.lastBreadcrumbs ? this.drawBreadcrumb(this.lastBreadcrumbs) : this.drawBreadcrumb(this.getBreadcrumbs());\n }\n\n private handleDeferredQuerySuccess() {\n this.drawBreadcrumb(this.getBreadcrumbs());\n }\n\n private handleQueryError() {\n this.drawBreadcrumb(this.getBreadcrumbs());\n }\n\n private handleAfterInitialization() {\n // We must bind to these events after the initialization to make sure the breadcrumb generation\n // is made with updated components. (E.G facet, facetrange, ...)\n this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => this.handleDeferredQuerySuccess());\n this.bind.onRootElement(QueryEvents.queryError, () => this.handleQueryError());\n }\n\n private focusFirstEnabledResultList() {\n const resultLists = this.searchInterface.getComponents<Component>('ResultList');\n const firstEnabledResultList = find(resultLists, resultList => resultList.disabled === false);\n if (firstEnabledResultList) {\n $$(firstEnabledResultList.element).focus(true);\n }\n }\n\n private addDefaultAccessibilityAttributes() {\n if (!this.element.getAttribute('role')) {\n this.element.setAttribute('role', 'navigation');\n }\n if (!this.element.getAttribute('aria-label')) {\n this.element.setAttribute('aria-label', l('Breadcrumb'));\n }\n }\n}\n\nInitialization.registerAutoCreateComponent(Breadcrumb);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Breadcrumb/Breadcrumb.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Breadcrumb.scss\n// module id = 600\n// module chunks = 76 88"],"sourceRoot":""}