coveo-search-ui
Version:
Coveo JavaScript Search Framework
228 lines (214 loc) • 10.3 kB
JavaScript
webpackJsonpCoveo__temporary([45],{
/***/ 272:
/***/ (function(module, exports, __webpack_require__) {
;
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 });
var Component_1 = __webpack_require__(7);
var ComponentOptions_1 = __webpack_require__(8);
var DefaultResultAttachmentTemplate_1 = __webpack_require__(658);
var Utils_1 = __webpack_require__(4);
var QueryUtils_1 = __webpack_require__(21);
var Initialization_1 = __webpack_require__(2);
var Assert_1 = __webpack_require__(5);
var Dom_1 = __webpack_require__(1);
var _ = __webpack_require__(0);
var GlobalExports_1 = __webpack_require__(3);
__webpack_require__(659);
var TemplateComponentOptions_1 = __webpack_require__(63);
/**
* The `ResultAttachments` component renders attachments in a result set, for example when displaying emails. This
* component is usable inside a result template when there is an active [`Folding`]{@link Folding} component in the
* page.
*
* This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).
* @notSupportedIn salesforcefree
*/
var ResultAttachments = /** @class */ (function (_super) {
__extends(ResultAttachments, _super);
/**
* Creates a new `ResultAttachments` component.
* @param element The HTMLElement on which to instantiate the component.
* @param options The options for the `ResultAttachments` component.
* @param bindings The bindings that the component requires to function normally. If not set, these will be
* automatically resolved (with a slower execution time).
* @param result The result to associate the component with.
* @param attachmentLevel The nesting depth.
*/
function ResultAttachments(element, options, bindings, result, attachmentLevel) {
if (attachmentLevel === void 0) { attachmentLevel = 0; }
var _this = _super.call(this, element, ResultAttachments.ID, bindings) || this;
_this.element = element;
_this.options = options;
_this.bindings = bindings;
_this.attachmentLevel = attachmentLevel;
_this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, ResultAttachments, options);
_this.attachments = result.attachments;
if (Utils_1.Utils.isNonEmptyArray(_this.attachments)) {
_this.renderAttachments();
}
return _this;
}
ResultAttachments.prototype.renderAttachments = function () {
var _this = this;
_.each(this.attachments, function (attachment) {
QueryUtils_1.QueryUtils.setStateObjectOnQueryResult(_this.queryStateModel.get(), attachment);
QueryUtils_1.QueryUtils.setSearchInterfaceObjectOnQueryResult(_this.searchInterface, attachment);
var subTemplatePromise = _this.attachmentLevel > 0
? _this.options.subResultTemplate.instantiateToElement(attachment)
: _this.options.resultTemplate.instantiateToElement(attachment);
subTemplatePromise.then(function (container) {
_this.autoCreateComponentsInsideResult(container, _.extend({}, attachment, { attachments: [] }));
Dom_1.$$(container).addClass('coveo-result-attachments-container');
_this.element.appendChild(container);
if (_this.attachmentHasSubAttachment(attachment) && _this.attachmentLevel < _this.options.maximumAttachmentLevel) {
var childAttachmentContainer = Dom_1.$$('div').el;
container.appendChild(childAttachmentContainer);
new ResultAttachments(childAttachmentContainer, _this.options, _this.bindings, attachment, _this.attachmentLevel + 1);
}
});
});
};
ResultAttachments.prototype.attachmentHasSubAttachment = function (attachment) {
if (Utils_1.Utils.isNonEmptyArray(attachment.attachments)) {
return true;
}
else if (Utils_1.Utils.isNonEmptyArray(attachment.childResults)) {
attachment.attachments = attachment.childResults;
return true;
}
else {
return false;
}
};
ResultAttachments.prototype.autoCreateComponentsInsideResult = function (element, result) {
Assert_1.Assert.exists(element);
var initOptions = this.searchInterface.options;
var initParameters = {
options: initOptions,
bindings: this.getBindings(),
result: result
};
Initialization_1.Initialization.automaticallyCreateComponentsInside(element, initParameters, [ResultAttachments.ID]);
};
ResultAttachments.ID = 'ResultAttachments';
ResultAttachments.doExport = function () {
GlobalExports_1.exportGlobally({
ResultAttachments: ResultAttachments,
DefaultResultAttachmentTemplate: DefaultResultAttachmentTemplate_1.DefaultResultAttachmentTemplate
});
};
/**
* The options for the component
* @componentOptions
*/
ResultAttachments.options = {
/**
* Specifies the template to use to render each attachment for a top result.
*
* You can specify a previously registered template to use either by referring to its HTML `id` attribute or to a
* CSS selector (see {@link TemplateCache}).
*
* **Examples:**
*
* Specifying a previously registered template by referring to its HTML `id` attribute:
*
* ```html
* <div class="CoveoResultAttachments" data-result-template-id="Foo"></div>
* ```
*
* Specifying a previously registered template by referring to a CSS selector:
*
* ```html
* <div class='CoveoResultAttachments' data-result-template-selector=".Foo"></div>
* ```
*
* If you do not specify a custom folding template, the component uses the default result attachment template.
*/
resultTemplate: TemplateComponentOptions_1.TemplateComponentOptions.buildTemplateOption({
defaultFunction: function (e) { return new DefaultResultAttachmentTemplate_1.DefaultResultAttachmentTemplate(); }
}),
/**
* Specifies the template to use to render sub-attachments, which are attachments within attachments, for example
* when multiple files are embedded within a `.zip` attachment.
*
* Sub-attachments can themselves contain sub-attachments, and so on up to a certain level (see the
* [`maximumAttachmentLevel`]{@link ResultAttachments.options.maximumAttachmentLevel} option).
*
* You can specify a previously registered template to use either by referring to its HTML `id` attribute or to a
* CSS selector (see {@link TemplateCache}).
*
* **Example:**
*
* Specifying a previously registered template by referring to its HTML `id` attribute:
*
* ```html
* <div class="CoveoResultAttachments" data-sub-result-template-id="Foo"></div>
* ```
*
* Specifying a previously registered template by referring to a CSS selector:
*
* ```html
* <div class="CoveoResultAttachments" data-sub-result-template-selector=".Foo"></div>
* ```
*
* By default, this option uses the same template you specify for the
* [`resultTemplate`]{@link ResultAttachments.options.resultTemplate} option.
*/
subResultTemplate: TemplateComponentOptions_1.TemplateComponentOptions.buildTemplateOption({
postProcessing: function (value, options) { return (value != null ? value : options.resultTemplate); }
}),
/**
* Specifies the maximum nesting depth. Beyond this depth, the component stops rendering sub-attachments.
*
* Default value is `5`. Minimum value is `0`.
*/
maximumAttachmentLevel: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0 })
};
return ResultAttachments;
}(Component_1.Component));
exports.ResultAttachments = ResultAttachments;
Initialization_1.Initialization.registerAutoCreateComponent(ResultAttachments);
/***/ }),
/***/ 658:
/***/ (function(module, exports, __webpack_require__) {
;
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 });
var Template_1 = __webpack_require__(27);
var DefaultResultAttachmentTemplate = /** @class */ (function (_super) {
__extends(DefaultResultAttachmentTemplate, _super);
function DefaultResultAttachmentTemplate() {
return _super.call(this) || this;
}
DefaultResultAttachmentTemplate.prototype.instantiateToString = function (queryResult) {
return '<div><span class="CoveoIcon"></span> <a class="CoveoResultLink"></a> <span class="CoveoQuickview"></span></div>';
};
return DefaultResultAttachmentTemplate;
}(Template_1.Template));
exports.DefaultResultAttachmentTemplate = DefaultResultAttachmentTemplate;
/***/ }),
/***/ 659:
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ })
});
//# sourceMappingURL=ResultAttachments__65d8de8a9f769489e2ff.js.map