{"version":3,"sources":["./src/ui/HiddenQuery/HiddenQuery.ts","./sass/_HiddenQuery.scss"],"names":[],"mappings":"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","file":"HiddenQuery__d2b01b0f173a0c131e66.js","sourcesContent":["import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { l } from '../../strings/Strings';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { analyticsActionCauseList, IAnalyticsContextRemoveMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Initialization } from '../Base/Initialization';\nimport { Assert } from '../../misc/Assert';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_HiddenQuery';\nimport { SVGIcons } from '../../utils/SVGIcons';\n\nexport interface IHiddenQueryOptions {\n maximumDescriptionLength: number;\n title: string;\n}\n\n/**\n * The HiddenQuery component handles a \"hidden\" query parameter (`hq`) and its description (`hd`).\n *\n * Concretely, this means that if a HiddenQuery component is present in your page and you load your search interface\n * with `hq=foo&hd=bar` in the URL hash, the component adds `foo` as an expression to the query (`hq` is the hidden\n * query) and renders `bar` in the {@link Breadcrumb} (`hd` is the hidden query description).\n */\nexport class HiddenQuery extends Component {\n static ID = 'HiddenQuery';\n\n static doExport = () => {\n exportGlobally({\n HiddenQuery: HiddenQuery\n });\n };\n\n /**\n * Possible options for the `HiddenQuery` component\n * @componentOptions\n */\n static options: IHiddenQueryOptions = {\n /**\n * Specifies the maximum number of characters from the hidden query description (`hd`) to display in the\n * {@link Breadcrumb}.\n *\n * Beyond this length, the HiddenQuery component slices the rest of the description and replaces it by `...`.\n *\n * Default value is `100`. Minimum value is `0`.\n */\n maximumDescriptionLength: ComponentOptions.buildNumberOption({ min: 0, defaultValue: 100 }),\n\n /**\n * Specifies the title that should appear in the {@link Breadcrumb} when the HiddenQuery populates it.\n *\n * Default value is the localized string f\n * or `\"Additional filters:\"`\n */\n title: ComponentOptions.buildLocalizedStringOption({\n localizedString: () => l('AdditionalFilters') + ':'\n })\n };\n\n /**\n * Creates a new HiddenQuery component, which binds multiple events ({@link QueryEvents.buildingQuery},\n * {@link BreadcrumbEvents.populateBreadcrumb} and {@link BreadcrumbEvents.clearBreadcrumb}).\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the HiddenQuery 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?: IHiddenQueryOptions, bindings?: IComponentBindings) {\n super(element, HiddenQuery.ID, bindings);\n this.options = ComponentOptions.initComponentOptions(element, HiddenQuery, options);\n\n this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n this.handlePopulateBreadcrumb(args)\n );\n this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.setStateEmpty());\n }\n\n /**\n * Clears any `hd` or `hq` set in the {@link QueryStateModel}.\n * Also logs the `contextRemove` event in the usage analytics and triggers a new query.\n */\n public clear() {\n this.setStateEmpty();\n const hiddenDescriptionRemoved = this.getDescription();\n this.usageAnalytics.logSearchEvent<IAnalyticsContextRemoveMeta>(analyticsActionCauseList.contextRemove, {\n contextName: hiddenDescriptionRemoved\n });\n this.queryController.executeQuery();\n }\n\n private setStateEmpty() {\n this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.HD, '');\n this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.HQ, '');\n }\n\n private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n Assert.exists(data);\n const hiddenQuery = this.queryStateModel.get(QUERY_STATE_ATTRIBUTES.HQ);\n if (Utils.isNonEmptyString(hiddenQuery)) {\n data.queryBuilder.advancedExpression.add(hiddenQuery);\n }\n }\n\n private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n const description = this.getDescription();\n if (!_.isEmpty(description) && !_.isEmpty(this.queryStateModel.get(QUERY_STATE_ATTRIBUTES.HQ))) {\n const elem = document.createElement('div');\n $$(elem).addClass('coveo-hidden-query-breadcrumb');\n\n const title = document.createElement('span');\n $$(title).addClass('coveo-hidden-query-breadcrumb-title');\n $$(title).text(this.options.title);\n elem.appendChild(title);\n\n const value = $$('span', { className: 'coveo-hidden-query-breadcrumb-value' }, _.escape(description)).el;\n elem.appendChild(value);\n\n const clear = $$('span', { className: 'coveo-hidden-query-breadcrumb-clear' }, SVGIcons.icons.mainClear);\n value.appendChild(clear.el);\n\n $$(value).on('click', () => this.clear());\n\n args.breadcrumbs.push({\n element: elem\n });\n }\n }\n\n private getDescription() {\n let description = this.queryStateModel.get(QueryStateModel.attributesEnum.hd);\n if (_.isEmpty(description)) {\n description = this.queryStateModel.get(QueryStateModel.attributesEnum.hq);\n }\n if (!_.isEmpty(description)) {\n if (description.length > this.options.maximumDescriptionLength) {\n description = description.slice(0, this.options.maximumDescriptionLength) + ' ...';\n }\n }\n return description;\n }\n}\nInitialization.registerAutoCreateComponent(HiddenQuery);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HiddenQuery/HiddenQuery.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_HiddenQuery.scss\n// module id = 618\n// module chunks = 70 88"],"sourceRoot":""}