UNPKG

coveo-search-ui

Version:

Coveo JavaScript Search Framework

774 lines (755 loc) • 35.5 kB
webpackJsonpCoveo__temporary([36],{ /***/ 289: /***/ (function(module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); __webpack_require__(525); var underscore_1 = __webpack_require__(0); var BreadcrumbEvents_1 = __webpack_require__(35); var QueryEvents_1 = __webpack_require__(11); var GlobalExports_1 = __webpack_require__(3); var Assert_1 = __webpack_require__(5); var Logger_1 = __webpack_require__(9); var Strings_1 = __webpack_require__(6); var AccessibilityUtils_1 = __webpack_require__(48); var AccessibleButton_1 = __webpack_require__(15); var Dom_1 = __webpack_require__(1); var SVGDom_1 = __webpack_require__(16); var SVGIcons_1 = __webpack_require__(12); var AnalyticsActionListMeta_1 = __webpack_require__(10); var Component_1 = __webpack_require__(7); var ComponentOptions_1 = __webpack_require__(8); var Initialization_1 = __webpack_require__(2); var FacetUtils_1 = __webpack_require__(40); var Checkbox_1 = __webpack_require__(66); var SimpleFilterValues_1 = __webpack_require__(680); /** * The `SimpleFilter` component displays a dropdown menu containing field values which the end user can select to filter * the query results. * * The list of available field values in the dropdown menu can either be static (defined through the * [`values`]{@link SimpleFilter.options.values} option), or dynamic (automatically obtained through a * [`GroupByRequest`]{@link IGroupByRequest} operation performed at the same time as the main query). * * @availablesince [November 2017 Release (v2.3477.9)](https://docs.coveo.com/en/373/#november-2017-release-v234779) */ var SimpleFilter = /** @class */ (function (_super) { __extends(SimpleFilter, _super); /** * Creates a new `SimpleFilter` component. Binds multiple query events as well. * @param element the HTMLElement on which to instantiate the component. * @param options The options for the `SimpleFilter` component. * @param bindings The bindings that the component requires to function normally. */ function SimpleFilter(element, options, bindings) { var _this = _super.call(this, element, SimpleFilter.ID, bindings) || this; _this.element = element; _this.options = options; _this.bindings = bindings; _this.previouslySelected = []; _this.groupByRequestValues = []; _this.isSticky = false; _this.shouldTriggerQuery = true; _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, SimpleFilter, options); _this.element.title = _this.options.title; _this.buildContent(); new AccessibleButton_1.AccessibleButton() .withElement(_this.element) .withClickAction(function (e) { return _this.handleClick(e); }) .withEnterKeyboardAction(function (e) { return _this.handleKeyboardSelect(e); }) .withBlurAction(function (e) { return _this.handleBlur(e); }) .withLabel(_this.options.title) .build(); _this.bind.onRootElement(BreadcrumbEvents_1.BreadcrumbEvents.populateBreadcrumb, function (args) { return _this.handlePopulateBreadcrumb(args); }); _this.bind.onRootElement(BreadcrumbEvents_1.BreadcrumbEvents.clearBreadcrumb, function () { return _this.handleClearBreadcrumb(); }); _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (args) { return _this.handleBuildingQuery(args); }); _this.bind.onRootElement(QueryEvents_1.QueryEvents.doneBuildingQuery, function (args) { return _this.handleDoneBuildingQuery(args); }); _this.bind.onRootElement(QueryEvents_1.QueryEvents.querySuccess, function (args) { return _this.handleQuerySuccess(args); }); return _this; } SimpleFilter.simpleFilterSortCritera = function () { return ['score', 'occurrences', 'alphaascending', 'alphadescending', 'chisquare']; }; /** * Gets the `SimpleFilter` `valueContainer`. * @returns {Dom} The `SimpleFilter` valueContainer. */ SimpleFilter.prototype.getValueContainer = function () { return this.valueContainer; }; /** * Gets the caption of a specific field value. * @param value The field value whose caption the method should attempt to get. * @returns {any} The value caption, if available; the original value otherwise. */ SimpleFilter.prototype.getValueCaption = function (value) { var ret = value; if (underscore_1.contains(underscore_1.keys(this.options.valueCaption), value)) { ret = this.options.valueCaption[ret] || ret; return Strings_1.l(ret); } else { return FacetUtils_1.FacetUtils.tryToGetTranslatedCaption(this.options.field.toString(), ret); } }; /** * Gets the captions of the currently selected field values in the `SimpleFilter`. * @returns {string[]} An array containing the selected captions. */ SimpleFilter.prototype.getSelectedCaptions = function () { var _this = this; return underscore_1.map(this.getSelectedValues(), function (selectedValue) { return _this.getValueCaption(selectedValue); }); }; /** * Opens or closes the `SimpleFilter` `valueContainer`, depending on its current state. */ SimpleFilter.prototype.toggleContainer = function () { Dom_1.$$(this.valueContainer).hasClass('coveo-simplefilter-value-container-expanded') ? this.closeContainer() : this.openContainer(); }; /** * Selects the specified value. Also triggers a query, by default. * @param value The value to select. * @param triggerQuery `true` by default. If set to `false`, the method triggers no query. */ SimpleFilter.prototype.selectValue = function (value, triggerQuery) { var _this = this; if (triggerQuery === void 0) { triggerQuery = true; } underscore_1.each(this.checkboxes, function (labeledCheckbox) { var translated = _this.getValueCaption(labeledCheckbox.label); if (labeledCheckbox.label == value || translated == value) { labeledCheckbox.checkbox.select(triggerQuery); } }); }; /** * Un-selects the specified value. * @param value The value whose state the method should reset. */ SimpleFilter.prototype.deselectValue = function (value) { var _this = this; underscore_1.each(this.checkboxes, function (labeledCheckbox) { var translated = _this.getValueCaption(labeledCheckbox.label); if (labeledCheckbox.label == value || translated == value) { labeledCheckbox.checkbox.reset(); } }); }; /** * Selects or un-selects the specified value, depending on its current state. * @param value The value whose state the method should toggle. */ SimpleFilter.prototype.toggleValue = function (value) { var _this = this; underscore_1.each(this.checkboxes, function (labeledCheckbox) { var translated = _this.getValueCaption(labeledCheckbox.label); if (labeledCheckbox.label == value || translated == value) { labeledCheckbox.checkbox.toggle(); } }); }; /** * Resets the component to its original state. */ SimpleFilter.prototype.resetSimpleFilter = function () { var _this = this; underscore_1.each(this.checkboxes, function (labeledCheckbox) { if (labeledCheckbox.checkbox.isSelected()) { _this.deselectValue(labeledCheckbox.label); } }); }; /** * Opens the `SimpleFilter` `valueContainer`. */ SimpleFilter.prototype.openContainer = function () { Dom_1.$$(this.element).addClass('coveo-simplefilter-value-container-expanded'); this.valueContainer.addClass('coveo-simplefilter-value-container-expanded'); this.refreshValueContainer(); this.isSticky = true; if (!this.backdrop.hasClass('coveo-dropdown-background-active')) { this.showBackdrop(); } }; /** * Closes the `SimpleFilter` `valueContainer`. */ SimpleFilter.prototype.closeContainer = function () { Dom_1.$$(this.element).removeClass('coveo-simplefilter-value-container-expanded'); this.valueContainer.removeClass('coveo-simplefilter-value-container-expanded'); if (this.backdrop.hasClass('coveo-dropdown-background-active')) { this.hideBackdrop(); } if (this.getSelectedLabeledCheckboxes().length == 0) { this.isSticky = false; } }; SimpleFilter.prototype.getSelectedValues = function () { return underscore_1.map(this.getSelectedLabeledCheckboxes(), function (labeledCheckbox) { return labeledCheckbox.label; }); }; SimpleFilter.prototype.handleClick = function (e) { e.stopPropagation(); if (e.target == this.element) { this.toggleContainer(); } }; SimpleFilter.prototype.handleKeyboardSelect = function (e) { if (e.target == this.element) { this.toggleContainer(); } else { this.toggleValue(Dom_1.$$(e.target).text()); } }; SimpleFilter.prototype.handleBlur = function (e) { var relatedTarget = e.relatedTarget; if (!relatedTarget) { return; } if (!Dom_1.$$(relatedTarget).parent(Component_1.Component.computeCssClassName(SimpleFilter))) { this.closeContainer(); } }; SimpleFilter.prototype.handleValueToggle = function (checkbox) { var selectedValues = this.getSelectedValues(); this.circleElement.text(selectedValues.length.toString()); this.circleElement.removeClass('coveo-simplefilter-circle-hidden'); this.options.enableClearButton && this.clearElement.show(); if (selectedValues.length == 1) { this.setDisplayedTitle(this.getValueCaption(selectedValues[0])); this.element.title = this.getValueCaption(selectedValues[0]); } else { this.setDisplayedTitle(this.options.title); this.element.title = this.options.title; if (selectedValues.length < 1) { this.circleElement.addClass('coveo-simplefilter-circle-hidden'); this.options.enableClearButton && this.clearElement.hide(); } } if (selectedValues.length == 0) { this.isSticky = false; } var action = checkbox.isSelected() ? AnalyticsActionListMeta_1.analyticsActionCauseList.simpleFilterSelectValue : AnalyticsActionListMeta_1.analyticsActionCauseList.simpleFilterDeselectValue; if (this.shouldTriggerQuery) { this.usageAnalytics.logSearchEvent(action, { simpleFilterTitle: this.options.title, simpleFilterSelectedValue: checkbox.label, simpleFilterField: this.options.field }); this.queryController.executeQuery(); } }; SimpleFilter.prototype.createCheckbox = function (label) { var _this = this; var checkbox = new Checkbox_1.Checkbox(function () { _this.handleValueToggle(checkbox); }, this.getValueCaption(label)); checkbox.getElement().title = Strings_1.l(label); return { checkbox: checkbox, label: label }; }; SimpleFilter.prototype.createCheckboxes = function () { var _this = this; if (this.previouslySelected.length > 0) { this.checkboxes = underscore_1.map(this.previouslySelected, function (caption) { return _this.createCheckbox(caption); }); underscore_1.each(this.checkboxes, function (checkbox) { if (_this.previouslySelected.indexOf(checkbox.label) >= 0) { _this.selectValue(checkbox.label, false); } }); } else if (this.options.values != undefined) { this.checkboxes = underscore_1.map(this.options.values, function (caption) { return _this.createCheckbox(caption); }); } else if (this.groupByRequestValues != undefined) { this.checkboxes = underscore_1.map(this.groupByRequestValues, function (caption) { return _this.createCheckbox(caption); }); } if (this.options.sortCriteria.toLocaleLowerCase() === 'alphaascending' || this.options.sortCriteria.toLowerCase() === 'alphadescending') { this.checkboxes.sort(function (a, b) { return a.checkbox.label.localeCompare(b.checkbox.label); }); if (this.options.sortCriteria.toLowerCase() === 'alphadescending') { this.checkboxes.reverse(); } } underscore_1.each(this.checkboxes, function (result) { _this.valueContainer.append(result.checkbox.getElement()); }); if (this.checkboxes.length > 0) { Dom_1.$$(Dom_1.$$(this.checkboxes[this.checkboxes.length - 1].checkbox.getElement()).find('.coveo-checkbox-button')).on('blur', function () { _this.closeContainer(); }); } }; SimpleFilter.prototype.createValueContainer = function () { this.valueContainer = Dom_1.$$('div', { className: 'coveo-simplefilter-value-container' }); }; SimpleFilter.prototype.buildContent = function () { this.createValueContainer(); this.element.appendChild(this.buildSelect()); this.element.appendChild(this.valueContainer.el); this.findOrCreateWrapper().append(this.element); this.createBackdrop(); }; SimpleFilter.prototype.buildSelect = function () { var select = Dom_1.$$('span', { className: 'coveo-simplefilter-select' }); this.selectTitle = Dom_1.$$('span', { className: 'coveo-simplefilter-selecttext' }, this.options.title); select.append(this.selectTitle.el); select.append(this.buildCircleElement()); this.options.enableClearButton && select.append(this.buildClearElement()); select.append(this.buildSvgToggleUpIcon()); return select.el; }; SimpleFilter.prototype.buildSvgToggleUpIcon = function () { var svgIcon = Dom_1.$$('span', { className: 'coveo-simplefilter-toggle-svg-container' }, SVGIcons_1.SVGIcons.icons.arrowDown).el; SVGDom_1.SVGDom.addClassToSVGInContainer(svgIcon, 'coveo-simplefilter-toggle-down-svg'); return svgIcon; }; SimpleFilter.prototype.buildCircleElement = function () { this.circleElement = Dom_1.$$('span', { className: 'coveo-simplefilter-circle coveo-simplefilter-circle-hidden' }, this.getSelectedLabeledCheckboxes().length.toString()); return this.circleElement.el; }; SimpleFilter.prototype.buildClearElement = function () { var _this = this; this.clearElement = Dom_1.$$('button', { title: Strings_1.l('DeselectFilterValues', this.options.title), 'aria-label': Strings_1.l('Clear', this.options.title), className: 'coveo-simplefilter-eraser', type: 'button' }, SVGIcons_1.SVGIcons.icons.mainClear); this.clearElement.hide(); this.clearElement.on('click', function (evt) { evt.stopPropagation(); _this.handleClear(); }); return this.clearElement.el; }; SimpleFilter.prototype.createBackdrop = function () { var _this = this; var backdrop = Dom_1.$$(this.root).find('.coveo-dropdown-background'); if (backdrop == null) { this.backdrop = Dom_1.$$('div', { className: 'coveo-dropdown-background' }); this.root.appendChild(this.backdrop.el); } else { this.backdrop = Dom_1.$$(backdrop); } this.backdrop.on('click', function () { return _this.closeContainer(); }); }; SimpleFilter.prototype.handlePopulateBreadcrumb = function (args) { var _this = this; if (this.getSelectedLabeledCheckboxes().length > 0) { var elem = Dom_1.$$('div', { className: 'coveo-simplefilter-breadcrumb' }); var title = Dom_1.$$(AccessibilityUtils_1.getHeadingTag(args.headingLevel, 'span'), { className: 'coveo-simplefilter-breadcrumb-title' }, this.options.title + ":"); elem.append(title.el); var values_1 = Dom_1.$$('span', { className: 'coveo-simplefilter-breadcrumb-values' }); elem.append(values_1.el); underscore_1.each(this.getSelectedLabeledCheckboxes(), function (selectedlabeledCheckbox) { var value = Dom_1.$$('span', { className: 'coveo-simplefilter-breadcrumb-value' }, _this.getValueCaption(selectedlabeledCheckbox.label)); values_1.append(value.el); var svgContainer = Dom_1.$$('span', { className: 'coveo-simplefilter-breadcrumb-clear' }, SVGIcons_1.SVGIcons.icons.mainClear); value.append(svgContainer.el); value.el.title = _this.getValueCaption(selectedlabeledCheckbox.label); Dom_1.$$(value).on('click', function () { return _this.handleRemoveFromBreadcrumb(selectedlabeledCheckbox); }); }); args.breadcrumbs.push({ element: elem.el }); } }; SimpleFilter.prototype.handleRemoveFromBreadcrumb = function (labeledCheckbox) { labeledCheckbox.checkbox.reset(); this.refreshValueContainer(); }; SimpleFilter.prototype.handleClearBreadcrumb = function () { // Bit of a hack with that flag, but essentially we want "clear breadcrumb" to be a global, unique event. // Not something that will log a special event for SimpleFilter (or any component) this.resetWithoutTriggeringQuery(); }; SimpleFilter.prototype.handleClear = function () { this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.simpleFilterClearAll, { simpleFilterTitle: this.options.title, simpleFilterField: this.options.field }); this.resetWithoutTriggeringQuery(); this.queryController.executeQuery(); }; SimpleFilter.prototype.resetWithoutTriggeringQuery = function () { this.shouldTriggerQuery = false; this.resetSimpleFilter(); this.shouldTriggerQuery = true; }; SimpleFilter.prototype.handleQuerySuccess = function (data) { if (data.results.results.length > 0) { this.findOrCreateWrapper().removeClass('coveo-no-results'); } else { this.findOrCreateWrapper().addClass('coveo-no-results'); } if (this.options.values == undefined) { this.groupByBuilder.groupBy(data); this.groupByRequestValues = this.groupByBuilder.getValuesFromGroupBy(); this.refreshValueContainer(); if (!Dom_1.$$(this.element).hasClass('coveo-simplefilter-value-container-expanded')) { this.isSticky = false; } } }; SimpleFilter.prototype.handleBuildingQuery = function (args) { Assert_1.Assert.exists(args); Assert_1.Assert.exists(args.queryBuilder); var selectedValues = this.getSelectedValues(); if (selectedValues.length > 0) { args.queryBuilder.advancedExpression.addFieldExpression(this.options.field.toString(), '==', selectedValues); } }; SimpleFilter.prototype.handleDoneBuildingQuery = function (data) { if (this.options.values == undefined) { Assert_1.Assert.exists(data); Assert_1.Assert.exists(data.queryBuilder); this.previouslySelected = this.getSelectedValues(); this.groupByBuilder = new SimpleFilterValues_1.SimpleFilterValues(this, this.options); this.groupByBuilder.handleDoneBuildingQuery(data); } }; SimpleFilter.prototype.getSelectedLabeledCheckboxes = function () { return underscore_1.filter(this.checkboxes, function (labeledCheckbox) { return labeledCheckbox.checkbox.isSelected(); }); }; SimpleFilter.prototype.setDisplayedTitle = function (title) { this.selectTitle.text(this.getValueCaption(title)); }; SimpleFilter.prototype.showBackdrop = function () { this.backdrop.addClass('coveo-dropdown-background-active'); }; SimpleFilter.prototype.hideBackdrop = function () { this.backdrop.removeClass('coveo-dropdown-background-active'); }; SimpleFilter.prototype.findOrCreateWrapper = function () { if (Dom_1.$$(this.root).find('.coveo-simplefilter-header-wrapper') == null) { var wrapper = Dom_1.$$('div', { className: 'coveo-simplefilter-header-wrapper' }); wrapper.insertBefore(this.element); return wrapper; } else { var wrapper = Dom_1.$$(this.root).find('.coveo-simplefilter-header-wrapper'); return Dom_1.$$(wrapper); } }; SimpleFilter.prototype.refreshValueContainer = function () { if (!this.isSticky) { this.valueContainer.empty(); this.createCheckboxes(); } if (this.checkboxes.length == 0 && !this.isSticky) { Dom_1.$$(this.element).addClass('coveo-simplefilter-empty'); } else { Dom_1.$$(this.element).removeClass('coveo-simplefilter-empty'); } Dom_1.$$(this.circleElement).text(this.getSelectedLabeledCheckboxes().length.toString()); }; SimpleFilter.ID = 'SimpleFilter'; SimpleFilter.doExport = function () { GlobalExports_1.exportGlobally({ SimpleFilter: SimpleFilter }); }; /** * The possible options for the SimpleFilter. * @componentOptions */ SimpleFilter.options = { /** * Specifies the maximum number of field values to display in the `SimpleFilter` dropdown menu. * * Default value is `5`. Minimum value is `0`. */ maximumNumberOfValues: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0 }), /** * Specifies a static list of field values to display in the `SimpleFilter` dropdown menu. * * This option is undefined by default, which means that the component generates a dynamic list of field values * by performing a [`GroupByRequest`]{@link IGroupByRequest} operation at the same time as the main query. */ values: ComponentOptions_1.ComponentOptions.buildListOption(), /** * Specifies the field whose values the `SimpleFilter` should output result filters from. * * Specifying a value for this option is required for the `SimpleFilter` component to work. */ field: ComponentOptions_1.ComponentOptions.buildFieldOption({ required: true }), /** * Specifies the title to display for the `SimpleFilter`. * * Default value is the localized string for `NoTitle`. */ title: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({ localizedString: function () { return Strings_1.l('NoTitle'); } }), /** * Specifies a JSON object describing a mapping of `SimpleFilter` values to their desired captions. * * **Examples:** * * * You can set the option in the ['init']{@link init} call: * ```javascript * var myValueCaptions = { * "txt" : "Text files", * "html" : "Web page", * [ ... ] * }; * * Coveo.init(document.querySelector("#search"), { * SimpleFilter : { * valueCaption : myValueCaptions * } * }); * ``` * * * Or before the `init` call, using the ['options']{@link options} top-level function: * ```javascript * Coveo.options(document.querySelector("#search"), { * SimpleFilter : { * valueCaption : myValueCaptions * } * }); * ``` * * * Or directly in the markup: * ```html * <!-- Ensure that the double quotes are properly handled in `data-value-caption`. --> * <div class='CoveoSimpleFilter' data-field='@myotherfield' data-value-caption='{"txt":"Text files","html":"Web page"}'></div> * ``` */ valueCaption: ComponentOptions_1.ComponentOptions.buildJsonOption(), /** * * string? * The sort criteria to use. * * **Default:** `score` * * **Allowed values:** * * `score`: sort using the score value which is computed from the number of occurrences of a field value, as well as from the position * where query result items having this field value appear in the ranked query result set. When using this sort criterion, a field value * with 100 occurrences might appear after one with only 10 occurrences, if the occurrences of the latter field value tend to appear higher * in the ranked query result set. * * `occurrences`: sort by number of occurrences, with field values having the highest number of occurrences appearing first. * * `alphaascending/alphadescending`: sort alphabetically on the field values. * * `chisquare`: sort based on the relative frequency of field values in the query result set compared to their frequency in the entire index. This means that a field value that does * not appear often in the index, but does appear often in the query result set will tend to appear higher. * * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/) * */ sortCriteria: ComponentOptions_1.ComponentOptions.buildStringOption({ postProcessing: function (value, options) { var sortCriteriaToValidate = value || 'score'; if (SimpleFilter.simpleFilterSortCritera().indexOf(sortCriteriaToValidate.toLowerCase()) !== -1) { return sortCriteriaToValidate; } else { new Logger_1.Logger(SimpleFilter).warn("The simpleFilter component doesn't accept " + sortCriteriaToValidate + " as the value for the sortCriteria option.", "Available option are : " + SimpleFilter.simpleFilterSortCritera().toString()); return 'score'; } } }), /** * Whether to show a button to clear all selected values. * * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/) */ enableClearButton: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }) }; return SimpleFilter; }(Component_1.Component)); exports.SimpleFilter = SimpleFilter; Initialization_1.Initialization.registerAutoCreateComponent(SimpleFilter); /***/ }), /***/ 40: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /// <reference path='Facet.ts' /> var StringUtils_1 = __webpack_require__(22); var QueryUtils_1 = __webpack_require__(21); var FileTypes_1 = __webpack_require__(121); var DateUtils_1 = __webpack_require__(33); var Utils_1 = __webpack_require__(4); var Dom_1 = __webpack_require__(1); var _ = __webpack_require__(0); var Strings_1 = __webpack_require__(6); var FacetUtils = /** @class */ (function () { function FacetUtils() { } FacetUtils.getRegexToUseForFacetSearch = function (value, ignoreAccent) { return new RegExp(StringUtils_1.StringUtils.stringToRegex(value, ignoreAccent), 'i'); }; FacetUtils.getDisplayValueFromValueCaption = function (value, field, valueCaption) { var returnValue = this.tryToGetTranslatedCaption(field, value, false); return valueCaption[value] || returnValue; }; FacetUtils.getValuesToUseForSearchInFacet = function (original, facet) { var ret = [original]; var regex = this.getRegexToUseForFacetSearch(original, facet.options.facetSearchIgnoreAccents); if (facet.options.valueCaption) { _.chain(facet.options.valueCaption) .pairs() .filter(function (pair) { return regex.test(pair[1]); }) .each(function (match) { ret.push(match[0]); }); if (QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') || QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')) { _.each(FileTypes_1.FileTypes.getFileTypeCaptions(), function (value, key) { if (!(key in facet.options.valueCaption) && regex.test(value)) { ret.push(key); } }); } } else if (QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') || QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')) { _.each(_.filter(_.pairs(FileTypes_1.FileTypes.getFileTypeCaptions()), function (pair) { return regex.test(pair[1]); }), function (match) { ret.push(match[0]); }); } else if (QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@month')) { _.each(_.range(1, 13), function (month) { if (regex.test(DateUtils_1.DateUtils.monthToString(month - 1))) { ret.push(('0' + month.toString()).substr(-2)); } }); } return ret; }; FacetUtils.buildFacetSearchPattern = function (values) { values = _.map(values, function (value) { return Utils_1.Utils.escapeRegexCharacter(value); }); values[0] = '.*' + values[0] + '.*'; return values.join('|'); }; FacetUtils.needAnotherFacetSearch = function (currentSearchLength, newSearchLength, oldSearchLength, desiredSearchLength) { // Something was removed (currentSearch < newSearch) // && we might want to display more facet search result(currentSearch < desiredSearch) // && the new query returned more stuff than the old one so there's still more results(currentSearchLength > oldLength) return currentSearchLength < newSearchLength && currentSearchLength < desiredSearchLength && currentSearchLength > oldSearchLength; }; FacetUtils.addNoStateCssClassToFacetValues = function (facet, container) { // This takes care of adding the correct css class on each facet value checkbox (empty white box) if at least one value is selected in that facet if (facet.values.getSelected().length != 0) { var noStates = Dom_1.$$(container).findAll('li:not(.coveo-selected)'); _.each(noStates, function (noState) { Dom_1.$$(noState).addClass('coveo-no-state'); }); } }; FacetUtils.tryToGetTranslatedCaption = function (field, value, fallbackOnLocalization) { if (fallbackOnLocalization === void 0) { fallbackOnLocalization = true; } var found; if (QueryUtils_1.QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@filetype')) { found = FileTypes_1.FileTypes.getFileType(value, fallbackOnLocalization).caption; } else if (QueryUtils_1.QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@objecttype')) { found = FileTypes_1.FileTypes.getObjectType(value, fallbackOnLocalization).caption; } else if (FacetUtils.isMonthFieldValue(field, value)) { var month = parseInt(value, 10); found = DateUtils_1.DateUtils.monthToString(month - 1); } else if (fallbackOnLocalization) { found = Strings_1.l(value); } return found != undefined && Utils_1.Utils.isNonEmptyString(found) ? found : value; }; FacetUtils.isMonthFieldValue = function (field, value) { if (!QueryUtils_1.QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@month')) { return false; } var asInt = parseInt(value, 10); if (isNaN(asInt)) { return false; } if (asInt < 1 || asInt > 12) { return false; } return true; }; return FacetUtils; }()); exports.FacetUtils = FacetUtils; /***/ }), /***/ 525: /***/ (function(module, exports) { // removed by extract-text-webpack-plugin /***/ }), /***/ 680: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); __webpack_require__(525); var _ = __webpack_require__(0); var SimpleFilterValues = /** @class */ (function () { function SimpleFilterValues(simpleFilter, options) { this.simpleFilter = simpleFilter; this.options = options; this.groupByRequestValues = []; } SimpleFilterValues.prototype.getValuesFromGroupBy = function () { return this.groupByRequestValues; }; SimpleFilterValues.prototype.groupBy = function (data) { var _this = this; this.groupByRequestValues = []; var groupByResult = data.results.groupByResults; if (groupByResult.length > 0 && this.position != undefined) { _.each(groupByResult[this.position].values, function (value) { if (_this.groupByRequestValues.indexOf(value.lookupValue) < 0) { _this.groupByRequestValues.push(value.lookupValue); } }); } }; SimpleFilterValues.prototype.handleDoneBuildingQuery = function (data) { var queryBuilder = data.queryBuilder; this.putGroupByIntoQueryBuilder(queryBuilder); }; SimpleFilterValues.prototype.putGroupByIntoQueryBuilder = function (queryBuilder) { var groupByRequest = this.createBasicGroupByRequest(); queryBuilder.groupByRequests.push(groupByRequest); this.position = queryBuilder.groupByRequests.length - 1; }; SimpleFilterValues.prototype.createBasicGroupByRequest = function () { var groupByRequest = { field: this.options.field, maximumNumberOfValues: this.options.maximumNumberOfValues, injectionDepth: 1000, sortCriteria: this.simpleFilter.options.sortCriteria }; return groupByRequest; }; return SimpleFilterValues; }()); exports.SimpleFilterValues = SimpleFilterValues; /***/ }) }); //# sourceMappingURL=SimpleFilter__65d8de8a9f769489e2ff.js.map