@searchstax-inc/searchstudio-ux-angular 0.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +734 -13
  2. package/esm2022/lib/components/searchstax-input/searchstax-input.component.mjs +75 -0
  3. package/esm2022/lib/components/searchstax-results/searchstax-results.component.mjs +66 -0
  4. package/esm2022/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +40 -0
  5. package/esm2022/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +112 -0
  6. package/esm2022/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +41 -0
  7. package/esm2022/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +60 -0
  8. package/esm2022/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +44 -0
  9. package/esm2022/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +45 -0
  10. package/esm2022/lib/components/searchstax-wrapper.component.mjs +74 -0
  11. package/esm2022/lib/searchstudio-ux-angular.module.mjs +62 -0
  12. package/{esm2020 → esm2022}/lib/services/store-service.service.mjs +4 -4
  13. package/esm2022/public-api.mjs +15 -0
  14. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs +602 -0
  15. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs.map +1 -0
  16. package/lib/components/searchstax-input/searchstax-input.component.d.ts +1 -1
  17. package/lib/components/searchstax-results/searchstax-results.component.d.ts +1 -1
  18. package/lib/components/searchstax-search-external/searchstax-search-external.component.d.ts +17 -0
  19. package/lib/components/searchstax-search-facets/searchstax-search-facets.component.d.ts +37 -0
  20. package/lib/components/searchstax-search-overview/searchstax-search-overview.component.d.ts +1 -1
  21. package/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.d.ts +1 -1
  22. package/lib/components/searchstax-search-related/searchstax-search-related.component.d.ts +19 -0
  23. package/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.d.ts +18 -0
  24. package/lib/components/searchstax-wrapper.component.d.ts +1 -1
  25. package/lib/searchstudio-ux-angular.module.d.ts +6 -2
  26. package/package.json +9 -15
  27. package/public-api.d.ts +4 -0
  28. package/esm2020/lib/components/searchstax-input/searchstax-input.component.mjs +0 -75
  29. package/esm2020/lib/components/searchstax-results/searchstax-results.component.mjs +0 -66
  30. package/esm2020/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +0 -41
  31. package/esm2020/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +0 -60
  32. package/esm2020/lib/components/searchstax-wrapper.component.mjs +0 -78
  33. package/esm2020/lib/searchstudio-ux-angular.module.mjs +0 -42
  34. package/esm2020/public-api.mjs +0 -11
  35. package/fesm2015/searchstax-inc-searchstudio-ux-angular.mjs +0 -373
  36. package/fesm2015/searchstax-inc-searchstudio-ux-angular.mjs.map +0 -1
  37. package/fesm2020/searchstax-inc-searchstudio-ux-angular.mjs +0 -365
  38. package/fesm2020/searchstax-inc-searchstudio-ux-angular.mjs.map +0 -1
  39. /package/{esm2020 → esm2022}/searchstax-inc-searchstudio-ux-angular.mjs +0 -0
  40. /package/{searchstax-inc-searchstudio-ux-angular.d.ts → index.d.ts} +0 -0
@@ -1,373 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
3
- import { Searchstax } from '@searchstax-inc/searchstudio-ux-js';
4
- import * as i2 from '@angular/common';
5
- import { CommonModule } from '@angular/common';
6
-
7
- class StoreServiceService {
8
- constructor() {
9
- this.searchstax = new Searchstax('vue');
10
- }
11
- }
12
- StoreServiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
13
- StoreServiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, providedIn: 'root' });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, decorators: [{
15
- type: Injectable,
16
- args: [{
17
- providedIn: 'root'
18
- }]
19
- }], ctorParameters: function () { return []; } });
20
-
21
- class SearchstaxWrapper {
22
- constructor(storeServiceService) {
23
- this.storeServiceService = storeServiceService;
24
- this.language = 'en';
25
- this.searchURL = '';
26
- this.suggesterURL = '';
27
- this.trackApiKey = '';
28
- this.searchAuth = '';
29
- this.authType = 'basic';
30
- this.autoCorrect = true;
31
- this.initialized = new EventEmitter();
32
- this.hooks = {};
33
- if (this.beforeSearch) {
34
- this.hooks.beforeSearch = this.beforeSearch;
35
- }
36
- if (this.afterSearch) {
37
- this.hooks.afterSearch = this.afterSearch;
38
- }
39
- }
40
- ngOnInit() {
41
- this.storeServiceService.searchstax.initialize({
42
- language: this.language,
43
- searchURL: this.searchURL,
44
- suggesterURL: this.suggesterURL,
45
- trackApiKey: this.trackApiKey,
46
- searchAuth: this.searchAuth,
47
- authType: this.authType,
48
- autoCorrect: this.autoCorrect,
49
- router: this.router,
50
- hooks: this.hooks
51
- });
52
- this.initialized.emit(this.storeServiceService.searchstax);
53
- }
54
- }
55
- SearchstaxWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxWrapper, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
56
- SearchstaxWrapper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxWrapper, selector: "app-searchstax-wrapper", inputs: { language: "language", searchURL: "searchURL", suggesterURL: "suggesterURL", trackApiKey: "trackApiKey", searchAuth: "searchAuth", authType: "authType", autoCorrect: "autoCorrect", router: "router", beforeSearch: "beforeSearch", afterSearch: "afterSearch" }, outputs: { initialized: "initialized" }, ngImport: i0, template: `
57
- <div>
58
- <ng-content></ng-content>
59
- </div>
60
- `, isInline: true });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxWrapper, decorators: [{
62
- type: Component,
63
- args: [{
64
- selector: 'app-searchstax-wrapper',
65
- template: `
66
- <div>
67
- <ng-content></ng-content>
68
- </div>
69
- `,
70
- styles: []
71
- }]
72
- }], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { language: [{
73
- type: Input
74
- }], searchURL: [{
75
- type: Input
76
- }], suggesterURL: [{
77
- type: Input
78
- }], trackApiKey: [{
79
- type: Input
80
- }], searchAuth: [{
81
- type: Input
82
- }], authType: [{
83
- type: Input
84
- }], autoCorrect: [{
85
- type: Input
86
- }], router: [{
87
- type: Input
88
- }], beforeSearch: [{
89
- type: Input
90
- }], afterSearch: [{
91
- type: Input
92
- }], initialized: [{
93
- type: Output
94
- }] } });
95
-
96
- class SearchstaxInputWidget {
97
- constructor(storeServiceService) {
98
- this.storeServiceService = storeServiceService;
99
- this.searchInputId = '';
100
- this.suggestAfterMinChars = 3;
101
- this.hooks = {};
102
- this.suggestions = [];
103
- this.context = this;
104
- }
105
- ngOnInit() {
106
- console.log('this.templateOverride', this.templateOverride);
107
- if (this.storeServiceService.searchstax) {
108
- this.attachObservables();
109
- // const hooks: { [key: string]: (prop: any) => any } = {}
110
- if (this.afterAutosuggest) {
111
- this.hooks['afterAutosuggest'] = this.afterAutosuggest;
112
- }
113
- if (this.beforeAutosuggest) {
114
- this.hooks['beforeAutosuggest'] = this.beforeAutosuggest;
115
- }
116
- setTimeout(() => {
117
- var _a;
118
- this.storeServiceService.searchstax.addSearchInputWidget('searchstax-input-container', {
119
- suggestAfterMinChars: this.suggestAfterMinChars,
120
- hooks: this.hooks,
121
- templates: {
122
- mainTemplate: {
123
- template: ``,
124
- searchInputId: (_a = this.searchInputId) !== null && _a !== void 0 ? _a : 'searchstax-search-input'
125
- }
126
- }
127
- });
128
- }, 0);
129
- }
130
- else {
131
- throw Error('Searchstax instance needs to be passed via props');
132
- }
133
- }
134
- onMouseLeave(context) {
135
- var _a, _b;
136
- (_a = context.storeServiceService.searchstax.searchInputWidget) === null || _a === void 0 ? void 0 : _a.resetAutosuggestSelection();
137
- (_b = context.storeServiceService.searchstax.searchInputWidget) === null || _b === void 0 ? void 0 : _b.markActiveAutosuggestItem();
138
- }
139
- onMouseOver(suggestion, context) {
140
- var _a;
141
- (_a = context.storeServiceService.searchstax.searchInputWidget) === null || _a === void 0 ? void 0 : _a.onSuggestionEnter(suggestion);
142
- }
143
- onMouseClick(e, context) {
144
- var _a;
145
- e.stopImmediatePropagation();
146
- (_a = context.storeServiceService.searchstax.searchInputWidget) === null || _a === void 0 ? void 0 : _a.suggestionChosen();
147
- }
148
- attachObservables() {
149
- this.storeServiceService.searchstax.dataLayer.$autosuggestResults.subscribe((suggestions) => {
150
- var _a;
151
- this.suggestions = (_a = suggestions === null || suggestions === void 0 ? void 0 : suggestions.suggestions) !== null && _a !== void 0 ? _a : [];
152
- });
153
- }
154
- }
155
- SearchstaxInputWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxInputWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
156
- SearchstaxInputWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxInputWidget, selector: "app-searchstax-input", inputs: { afterAutosuggest: "afterAutosuggest", beforeAutosuggest: "beforeAutosuggest", searchInputId: "searchInputId", suggestAfterMinChars: "suggestAfterMinChars", templateOverride: "templateOverride" }, ngImport: i0, template: "<div id=\"searchstax-input-container\">\n <div class=\"searchstax-search-input-container\">\n <div *ngIf=\"!templateOverride\" class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"(onMouseLeave)\"\n >\n <div\n class=\"searchstax-autosuggest-item\"\n *ngFor=\"let suggestion of suggestions\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion, context)\"\n (click)=\"onMouseClick($event, context)\"\n ></div>\n </div>\n </div>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n ></button>\n </div>\n <div *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <!-- <slot\n name=\"input\"\n :suggestions=\"suggestions\"\n :onMouseClick=\"onMouseClick\"\n :onMouseOver=\"onMouseOver\"\n :onMouseLeave=\"onMouseLeave\"\n ></slot> -->\n </div>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxInputWidget, decorators: [{
158
- type: Component,
159
- args: [{ selector: 'app-searchstax-input', styles: [], template: "<div id=\"searchstax-input-container\">\n <div class=\"searchstax-search-input-container\">\n <div *ngIf=\"!templateOverride\" class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"(onMouseLeave)\"\n >\n <div\n class=\"searchstax-autosuggest-item\"\n *ngFor=\"let suggestion of suggestions\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion, context)\"\n (click)=\"onMouseClick($event, context)\"\n ></div>\n </div>\n </div>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n ></button>\n </div>\n <div *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <!-- <slot\n name=\"input\"\n :suggestions=\"suggestions\"\n :onMouseClick=\"onMouseClick\"\n :onMouseOver=\"onMouseOver\"\n :onMouseLeave=\"onMouseLeave\"\n ></slot> -->\n </div>\n</div>\n" }]
160
- }], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { afterAutosuggest: [{
161
- type: Input
162
- }], beforeAutosuggest: [{
163
- type: Input
164
- }], searchInputId: [{
165
- type: Input
166
- }], suggestAfterMinChars: [{
167
- type: Input
168
- }], templateOverride: [{
169
- type: Input
170
- }] } });
171
-
172
- class SearchstaxResultsWidget {
173
- constructor(storeServiceService) {
174
- this.storeServiceService = storeServiceService;
175
- this.searchResults = null;
176
- this.metadata = null;
177
- this.searchTerm = '';
178
- this.context = this;
179
- }
180
- get hooks() {
181
- const hooks = {};
182
- if (this.afterLinkClick) {
183
- hooks['afterLinkClick'] = this.afterLinkClick;
184
- }
185
- return hooks;
186
- }
187
- ngOnInit() {
188
- if (this.storeServiceService.searchstax) {
189
- this.attachObservables();
190
- setTimeout(() => {
191
- this.storeServiceService.searchstax.addSearchResultsWidget('searchstax-results-container', {
192
- templates: {},
193
- hooks: this.hooks,
194
- });
195
- }, 0);
196
- }
197
- else {
198
- throw Error('Searchstax instance needs to be passed via props');
199
- }
200
- }
201
- attachObservables() {
202
- this.storeServiceService.searchstax.dataLayer.$searchResults.subscribe((results) => {
203
- this.searchResults = results;
204
- });
205
- this.storeServiceService.searchstax.dataLayer.$searchTermChange.subscribe((result) => {
206
- this.searchTerm = result;
207
- });
208
- this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata.subscribe((value) => {
209
- this.metadata = value;
210
- });
211
- }
212
- resultClicked(result, event, context) {
213
- event.preventDefault();
214
- event.stopPropagation();
215
- context.storeServiceService.searchstax.executeLinkClick(result.uniqueId);
216
- }
217
- isImage(field) {
218
- return field.isImage && typeof field.value === 'string';
219
- }
220
- }
221
- SearchstaxResultsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxResultsWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
222
- SearchstaxResultsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxResultsWidget, selector: "app-searchstax-results", inputs: { afterLinkClick: "afterLinkClick", noResultsTemplate: "noResultsTemplate", resultsTemplate: "resultsTemplate" }, ngImport: i0, template: "<div id=\"searchstax-results-container\">\n <div class=\"searchstax-search-results-container\">\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults && searchResults.length === 0 && !noResultsTemplate\n \"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n <span *ngIf=\"metadata?.spellingSuggestion\"\n >&nbsp;Did you mean\n <a href=\"#\" class=\"searchstax-suggestion-term\">{{\n metadata?.spellingSuggestion\n }}</a\n >?</span\n >\n </div>\n <div>\n <p>\n Try searching for search related terms or topics. We offer a wide\n variety of content to help you get the information you need.\n </p>\n <p>Lost? Click on the \u2018X\u201D in the Search Box to reset your search.</p>\n </div>\n </div>\n <div\n *ngIf=\"searchResults && searchResults.length === 0 && noResultsTemplate\"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <div\n class=\"searchstax-search-results\"\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <div\n class=\"searchstax-search-result\"\n [ngClass]=\"{ 'has-thumbnail': searchResult.thumbnail }\"\n *ngFor=\"let searchResult of searchResults\"\n >\n <div\n *ngIf=\"searchResult.promoted\"\n class=\"searchstax-search-result-promoted\"\n ></div>\n <a\n *ngIf=\"searchResult.url\"\n [href]=\"searchResult.url\"\n [attr.data-searchstax-unique-result-id]=\"searchResult.uniqueId\"\n (click)=\"resultClicked(searchResult, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div\n *ngIf=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n >\n {{ searchResult.ribbon }}\n </div>\n <img\n *ngIf=\"searchResult.thumbnail\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n searchResult.title\n }}</span>\n </div>\n <p *ngIf=\"searchResult.paths\" class=\"searchstax-search-result-common\">\n {{ searchResult.paths }}\n </p>\n <p\n *ngIf=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ searchResult.description }}\n </p>\n <div *ngFor=\"let unmappedField of searchResult.unmappedFields\">\n <div\n *ngIf=\"isImage(unmappedField)\"\n class=\"searchstax-search-result-image-container\"\n >\n <img\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n <div *ngIf=\"!isImage(unmappedField)\">\n <p class=\"searchstax-search-result-common\">\n {{ unmappedField.value }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxResultsWidget, decorators: [{
224
- type: Component,
225
- args: [{ selector: 'app-searchstax-results', styles: [], template: "<div id=\"searchstax-results-container\">\n <div class=\"searchstax-search-results-container\">\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults && searchResults.length === 0 && !noResultsTemplate\n \"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n <span *ngIf=\"metadata?.spellingSuggestion\"\n >&nbsp;Did you mean\n <a href=\"#\" class=\"searchstax-suggestion-term\">{{\n metadata?.spellingSuggestion\n }}</a\n >?</span\n >\n </div>\n <div>\n <p>\n Try searching for search related terms or topics. We offer a wide\n variety of content to help you get the information you need.\n </p>\n <p>Lost? Click on the \u2018X\u201D in the Search Box to reset your search.</p>\n </div>\n </div>\n <div\n *ngIf=\"searchResults && searchResults.length === 0 && noResultsTemplate\"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <div\n class=\"searchstax-search-results\"\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <div\n class=\"searchstax-search-result\"\n [ngClass]=\"{ 'has-thumbnail': searchResult.thumbnail }\"\n *ngFor=\"let searchResult of searchResults\"\n >\n <div\n *ngIf=\"searchResult.promoted\"\n class=\"searchstax-search-result-promoted\"\n ></div>\n <a\n *ngIf=\"searchResult.url\"\n [href]=\"searchResult.url\"\n [attr.data-searchstax-unique-result-id]=\"searchResult.uniqueId\"\n (click)=\"resultClicked(searchResult, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div\n *ngIf=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n >\n {{ searchResult.ribbon }}\n </div>\n <img\n *ngIf=\"searchResult.thumbnail\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n searchResult.title\n }}</span>\n </div>\n <p *ngIf=\"searchResult.paths\" class=\"searchstax-search-result-common\">\n {{ searchResult.paths }}\n </p>\n <p\n *ngIf=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ searchResult.description }}\n </p>\n <div *ngFor=\"let unmappedField of searchResult.unmappedFields\">\n <div\n *ngIf=\"isImage(unmappedField)\"\n class=\"searchstax-search-result-image-container\"\n >\n <img\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n <div *ngIf=\"!isImage(unmappedField)\">\n <p class=\"searchstax-search-result-common\">\n {{ unmappedField.value }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n</div>\n" }]
226
- }], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { afterLinkClick: [{
227
- type: Input
228
- }], noResultsTemplate: [{
229
- type: Input
230
- }], resultsTemplate: [{
231
- type: Input
232
- }] } });
233
-
234
- class SearchstaxSearchFeedbackWidget {
235
- constructor(storeServiceService) {
236
- this.storeServiceService = storeServiceService;
237
- this.searchFeedbackData = null;
238
- this.rand = Math.random();
239
- this.context = this;
240
- }
241
- ngOnInit() {
242
- if (this.storeServiceService.searchstax) {
243
- this.attachObservables();
244
- setTimeout(() => {
245
- this.storeServiceService.searchstax.addSearchFeedbackWidget("search-feedback-container" + this.rand, {});
246
- }, 0);
247
- }
248
- else {
249
- throw Error("Searchstax instance needs to be passed via props");
250
- }
251
- }
252
- onOriginalQueryClick(e, context) {
253
- var _a;
254
- e.stopImmediatePropagation();
255
- (_a = context.storeServiceService.searchstax.searchFeedbackWidget) === null || _a === void 0 ? void 0 : _a.onOriginalQueryClick(e);
256
- }
257
- attachObservables() {
258
- this.storeServiceService.searchstax.dataLayer.$searchFeedbackData.subscribe((searchFeedbackData) => {
259
- this.searchFeedbackData = searchFeedbackData;
260
- });
261
- }
262
- }
263
- SearchstaxSearchFeedbackWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxSearchFeedbackWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
264
- SearchstaxSearchFeedbackWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxSearchFeedbackWidget, selector: "app-searchstax-seach-feedback", inputs: { templateOverride: "templateOverride" }, ngImport: i0, template: "<div\n class=\"search-feedback-container\"\n [id]=\"'search-feedback-container' + rand\"\n>\n <div\n class=\"searchstax-feedback-container\"\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n !templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n Showing\n <b\n >{{ searchFeedbackData!.startResultIndex }} -\n {{ searchFeedbackData!.endResultIndex }}</b\n >\n of <b>{{ searchFeedbackData!.totalResults }}</b> results\n <span *ngIf=\"searchFeedbackData.searchTerm\"\n >for \"<b>{{ searchFeedbackData!.searchTerm }}</b\n >\"\n </span>\n <div class=\"searchstax-feedback-container-suggested\">\n <div *ngIf=\"searchFeedbackData.autoCorrectedQuery\">\n Search instead for\n <a\n href=\"#\"\n (click)=\"onOriginalQueryClick($event, context)\"\n class=\"searchstax-feedback-original-query\"\n >{{ searchFeedbackData!.originalQuery }}</a\n >\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxSearchFeedbackWidget, decorators: [{
266
- type: Component,
267
- args: [{ selector: "app-searchstax-seach-feedback", styles: [], template: "<div\n class=\"search-feedback-container\"\n [id]=\"'search-feedback-container' + rand\"\n>\n <div\n class=\"searchstax-feedback-container\"\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n !templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n Showing\n <b\n >{{ searchFeedbackData!.startResultIndex }} -\n {{ searchFeedbackData!.endResultIndex }}</b\n >\n of <b>{{ searchFeedbackData!.totalResults }}</b> results\n <span *ngIf=\"searchFeedbackData.searchTerm\"\n >for \"<b>{{ searchFeedbackData!.searchTerm }}</b\n >\"\n </span>\n <div class=\"searchstax-feedback-container-suggested\">\n <div *ngIf=\"searchFeedbackData.autoCorrectedQuery\">\n Search instead for\n <a\n href=\"#\"\n (click)=\"onOriginalQueryClick($event, context)\"\n class=\"searchstax-feedback-original-query\"\n >{{ searchFeedbackData!.originalQuery }}</a\n >\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
268
- }], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { templateOverride: [{
269
- type: Input
270
- }] } });
271
-
272
- class SearchstaxSearchPaginationWidget {
273
- constructor(storeServiceService) {
274
- this.storeServiceService = storeServiceService;
275
- this.paginationData = null;
276
- this.rand = Math.random();
277
- this.context = this;
278
- this.paginationAdded = false;
279
- }
280
- ngOnInit() {
281
- if (this.storeServiceService.searchstax) {
282
- this.attachObservables();
283
- setTimeout(() => {
284
- this.addWidget();
285
- }, 0);
286
- }
287
- else {
288
- throw Error("Searchstax instance needs to be passed via props");
289
- }
290
- }
291
- nextPage(event, context) {
292
- var _a, _b;
293
- event.stopImmediatePropagation();
294
- if (!((_a = context.paginationData) === null || _a === void 0 ? void 0 : _a.isLastPage)) {
295
- (_b = context.storeServiceService.searchstax.searchPaginationWidget) === null || _b === void 0 ? void 0 : _b.nextPage(event);
296
- }
297
- }
298
- previousPage(event, context) {
299
- var _a, _b;
300
- event.stopImmediatePropagation();
301
- if (!((_a = context.paginationData) === null || _a === void 0 ? void 0 : _a.isFirstPage)) {
302
- (_b = context.storeServiceService.searchstax.searchPaginationWidget) === null || _b === void 0 ? void 0 : _b.previousPage(event);
303
- }
304
- }
305
- addWidget() {
306
- if (!this.paginationAdded &&
307
- this.storeServiceService.searchstax.routerHelper) {
308
- this.paginationAdded = true;
309
- this.storeServiceService.searchstax.addPaginationWidget("searchstax-pagination-container" + this.rand, {});
310
- }
311
- }
312
- attachObservables() {
313
- this.storeServiceService.searchstax.dataLayer.$searchObject.subscribe((pagination) => {
314
- this.addWidget();
315
- });
316
- this.storeServiceService.searchstax.dataLayer.$paginationData.subscribe((pagination) => {
317
- this.paginationData = pagination;
318
- });
319
- }
320
- }
321
- SearchstaxSearchPaginationWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxSearchPaginationWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
322
- SearchstaxSearchPaginationWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxSearchPaginationWidget, selector: "app-searchstax-seach-pagination", inputs: { templateOverride: "templateOverride" }, ngImport: i0, template: "<div [id]=\"'searchstax-pagination-container' + rand\">\n <div\n class=\"searchstax-pagination-container\"\n *ngIf=\"paginationData?.totalResults && !templateOverride\"\n >\n <div class=\"searchstax-pagination-content\">\n <a\n class=\"searchstax-pagination-previous\"\n (click)=\"previousPage($event, context)\"\n id=\"searchstax-pagination-previous\"\n >\n &lt; Previous\n </a>\n <div class=\"searchstax-pagination-details\">\n {{ paginationData?.startResultIndex }} -\n {{ paginationData?.endResultIndex }} of\n {{ paginationData?.totalResults }}\n </div>\n <a\n class=\"searchstax-pagination-next\"\n (click)=\"nextPage($event, context)\"\n id=\"searchstax-pagination-next\"\n >Next ></a\n >\n </div>\n </div>\n\n <div *ngIf=\"paginationData?.totalResults && templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
323
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxSearchPaginationWidget, decorators: [{
324
- type: Component,
325
- args: [{ selector: "app-searchstax-seach-pagination", styles: [], template: "<div [id]=\"'searchstax-pagination-container' + rand\">\n <div\n class=\"searchstax-pagination-container\"\n *ngIf=\"paginationData?.totalResults && !templateOverride\"\n >\n <div class=\"searchstax-pagination-content\">\n <a\n class=\"searchstax-pagination-previous\"\n (click)=\"previousPage($event, context)\"\n id=\"searchstax-pagination-previous\"\n >\n &lt; Previous\n </a>\n <div class=\"searchstax-pagination-details\">\n {{ paginationData?.startResultIndex }} -\n {{ paginationData?.endResultIndex }} of\n {{ paginationData?.totalResults }}\n </div>\n <a\n class=\"searchstax-pagination-next\"\n (click)=\"nextPage($event, context)\"\n id=\"searchstax-pagination-next\"\n >Next ></a\n >\n </div>\n </div>\n\n <div *ngIf=\"paginationData?.totalResults && templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
326
- }], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { templateOverride: [{
327
- type: Input
328
- }] } });
329
-
330
- class SearchstudioUxAngularModule {
331
- }
332
- SearchstudioUxAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
333
- SearchstudioUxAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, declarations: [SearchstaxWrapper,
334
- SearchstaxInputWidget,
335
- SearchstaxResultsWidget,
336
- SearchstaxSearchFeedbackWidget,
337
- SearchstaxSearchPaginationWidget], imports: [CommonModule], exports: [SearchstaxWrapper,
338
- SearchstaxInputWidget,
339
- SearchstaxResultsWidget,
340
- SearchstaxSearchFeedbackWidget,
341
- SearchstaxSearchPaginationWidget] });
342
- SearchstudioUxAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, imports: [[CommonModule]] });
343
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, decorators: [{
344
- type: NgModule,
345
- args: [{
346
- declarations: [
347
- SearchstaxWrapper,
348
- SearchstaxInputWidget,
349
- SearchstaxResultsWidget,
350
- SearchstaxSearchFeedbackWidget,
351
- SearchstaxSearchPaginationWidget
352
- ],
353
- imports: [CommonModule],
354
- exports: [
355
- SearchstaxWrapper,
356
- SearchstaxInputWidget,
357
- SearchstaxResultsWidget,
358
- SearchstaxSearchFeedbackWidget,
359
- SearchstaxSearchPaginationWidget
360
- ],
361
- }]
362
- }] });
363
-
364
- /*
365
- * Public API Surface of searchstudio-ux-angular
366
- */
367
-
368
- /**
369
- * Generated bundle index. Do not edit.
370
- */
371
-
372
- export { SearchstaxInputWidget, SearchstaxResultsWidget, SearchstaxSearchFeedbackWidget, SearchstaxSearchPaginationWidget, SearchstaxWrapper, SearchstudioUxAngularModule, StoreServiceService };
373
- //# sourceMappingURL=searchstax-inc-searchstudio-ux-angular.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchstax-inc-searchstudio-ux-angular.mjs","sources":["../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/services/store-service.service.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-wrapper.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-input/searchstax-input.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-input/searchstax-input.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-results/searchstax-results.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-results/searchstax-results.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-overview/searchstax-search-overview.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-overview/searchstax-seach-overview.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-pagination/searchstax-seach-pagination.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/searchstudio-ux-angular.module.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/public-api.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/searchstax-inc-searchstudio-ux-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Searchstax } from '@searchstax-inc/searchstudio-ux-js'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StoreServiceService {\n searchstax = new Searchstax('vue' as any)\n constructor() { }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IRouterConfig, ISearchObject, ISearchstaxParsedResult, Searchstax } from '@searchstax-inc/searchstudio-ux-js';\nimport { StoreServiceService } from '../services/store-service.service';\n\n@Component({\n selector: 'app-searchstax-wrapper',\n template: `\n <div>\n <ng-content></ng-content>\n </div>\n `,\n styles: [\n ]\n})\nexport class SearchstaxWrapper implements OnInit {\n @Input() language = 'en';\n @Input() searchURL: string = '';\n @Input() suggesterURL: string = '';\n @Input() trackApiKey: string = '';\n @Input() searchAuth: string = '';\n @Input() authType: 'basic' | 'token' = 'basic';\n @Input() autoCorrect = true;\n @Input() router?: IRouterConfig;\n @Input() beforeSearch?: (props: ISearchObject) => ISearchObject | null ;\n @Input() afterSearch?: (results: ISearchstaxParsedResult[]) => ISearchstaxParsedResult[];\n @Output() initialized = new EventEmitter<Searchstax>();\n hooks: { beforeSearch?: (props: ISearchObject) => ISearchObject | null, afterSearch?: (results: ISearchstaxParsedResult[]) => ISearchstaxParsedResult[] } = {};\n constructor(private storeServiceService: StoreServiceService) {\n if (this.beforeSearch) {\n this.hooks.beforeSearch = this.beforeSearch;\n }\n if (this.afterSearch) {\n this.hooks.afterSearch = this.afterSearch;\n }\n\n }\n\n ngOnInit(): void {\n\n this.storeServiceService.searchstax.initialize({\n language: this.language,\n searchURL: this.searchURL,\n suggesterURL: this.suggesterURL,\n trackApiKey: this.trackApiKey,\n searchAuth: this.searchAuth,\n authType: this.authType,\n autoCorrect: this.autoCorrect,\n router: this.router,\n hooks: this.hooks\n })\n\n this.initialized.emit(this.storeServiceService.searchstax)\n }\n\n}\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { ISearchstaxSEARCHTERM, ISearchstaxSuggestProps, ISearchstaxSuggestResponse, ISearchstaxSuggestion } from '@searchstax-inc/searchstudio-ux-js';\nimport { StoreServiceService } from '../../services/store-service.service';\n\n@Component({\n selector: 'app-searchstax-input',\n templateUrl: './searchstax-input.component.html',\n styles: []\n})\nexport class SearchstaxInputWidget implements OnInit {\n @Input() afterAutosuggest?: (result: ISearchstaxSuggestResponse) => ISearchstaxSuggestResponse;\n @Input() beforeAutosuggest?: (props: ISearchstaxSuggestProps) => ISearchstaxSuggestProps | null\n @Input() searchInputId = '';\n @Input() suggestAfterMinChars = 3;\n @Input() templateOverride?: TemplateRef<any>;\n\n hooks: {[key: string]: (prop: any) => any } = {};\n suggestions: ISearchstaxSuggestion[] = []\n context = this;\n\n constructor(private storeServiceService: StoreServiceService) { }\n\n ngOnInit(): void {\n console.log('this.templateOverride', this.templateOverride);\n if (this.storeServiceService.searchstax) {\n this.attachObservables();\n // const hooks: { [key: string]: (prop: any) => any } = {}\n if (this.afterAutosuggest) {\n this.hooks['afterAutosuggest'] = this.afterAutosuggest\n }\n if (this.beforeAutosuggest) {\n this.hooks['beforeAutosuggest'] = this.beforeAutosuggest\n }\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchInputWidget('searchstax-input-container', {\n suggestAfterMinChars: this.suggestAfterMinChars,\n hooks: this.hooks,\n templates: {\n mainTemplate: {\n template: ``,\n searchInputId: this.searchInputId ?? 'searchstax-search-input'\n }\n }\n })\n }, 0);\n } else {\n throw Error('Searchstax instance needs to be passed via props')\n }\n }\n\n onMouseLeave(context: this) {\n context.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();\n context.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();\n }\n\n onMouseOver(suggestion: ISearchstaxSuggestion, context: this) {\n context.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion)\n }\n\n onMouseClick(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchInputWidget?.suggestionChosen()\n }\n\n attachObservables() {\n this.storeServiceService.searchstax.dataLayer.$autosuggestResults.subscribe(\n (suggestions: null | ISearchstaxSEARCHTERM) => {\n this.suggestions = suggestions?.suggestions ?? [];\n }\n );\n }\n\n}\n","<div id=\"searchstax-input-container\">\n <div class=\"searchstax-search-input-container\">\n <div *ngIf=\"!templateOverride\" class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"(onMouseLeave)\"\n >\n <div\n class=\"searchstax-autosuggest-item\"\n *ngFor=\"let suggestion of suggestions\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion, context)\"\n (click)=\"onMouseClick($event, context)\"\n ></div>\n </div>\n </div>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n ></button>\n </div>\n <div *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <!-- <slot\n name=\"input\"\n :suggestions=\"suggestions\"\n :onMouseClick=\"onMouseClick\"\n :onMouseOver=\"onMouseOver\"\n :onMouseLeave=\"onMouseLeave\"\n ></slot> -->\n </div>\n</div>\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { StoreServiceService } from '../../services/store-service.service';\nimport {\n ISearchstaxParsedResult,\n ISearchstaxSearchMetadata,\n} from '@searchstax-inc/searchstudio-ux-js';\n\n@Component({\n selector: 'app-searchstax-results',\n templateUrl: './searchstax-results.component.html',\n styles: [],\n})\nexport class SearchstaxResultsWidget implements OnInit {\n @Input() afterLinkClick?: (\n results: ISearchstaxParsedResult\n ) => ISearchstaxParsedResult;\n\n @Input() noResultsTemplate?: TemplateRef<any>;\n @Input() resultsTemplate?: TemplateRef<any>;\n\n searchResults: ISearchstaxParsedResult[] | null = null;\n metadata: ISearchstaxSearchMetadata | null = null;\n searchTerm = '';\n context = this;\n\n get hooks(): { [key: string]: (prop: any) => any } {\n const hooks: { [key: string]: (prop: any) => any } = {};\n if (this.afterLinkClick) {\n hooks['afterLinkClick'] = this.afterLinkClick;\n }\n return hooks;\n }\n\n constructor(private storeServiceService: StoreServiceService) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.attachObservables();\n\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchResultsWidget(\n 'searchstax-results-container',\n {\n templates: {},\n hooks: this.hooks,\n }\n );\n }, 0);\n } else {\n throw Error('Searchstax instance needs to be passed via props');\n }\n }\n\n attachObservables() {\n this.storeServiceService.searchstax.dataLayer.$searchResults.subscribe(\n (results: ISearchstaxParsedResult[] | null) => {\n this.searchResults = results;\n }\n );\n this.storeServiceService.searchstax.dataLayer.$searchTermChange.subscribe(\n (result: string) => {\n this.searchTerm = result;\n }\n );\n\n this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata.subscribe(\n (value: ISearchstaxSearchMetadata) => {\n this.metadata = value;\n }\n );\n }\n\n resultClicked(result: ISearchstaxParsedResult, event: Event, context: this) {\n event.preventDefault();\n event.stopPropagation();\n context.storeServiceService.searchstax.executeLinkClick(result.uniqueId);\n }\n\n isImage(field: any){\n return field.isImage && typeof field.value === 'string'\n }\n}\n","<div id=\"searchstax-results-container\">\n <div class=\"searchstax-search-results-container\">\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults && searchResults.length === 0 && !noResultsTemplate\n \"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n <span *ngIf=\"metadata?.spellingSuggestion\"\n >&nbsp;Did you mean\n <a href=\"#\" class=\"searchstax-suggestion-term\">{{\n metadata?.spellingSuggestion\n }}</a\n >?</span\n >\n </div>\n <div>\n <p>\n Try searching for search related terms or topics. We offer a wide\n variety of content to help you get the information you need.\n </p>\n <p>Lost? Click on the ‘X” in the Search Box to reset your search.</p>\n </div>\n </div>\n <div\n *ngIf=\"searchResults && searchResults.length === 0 && noResultsTemplate\"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <div\n class=\"searchstax-search-results\"\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <div\n class=\"searchstax-search-result\"\n [ngClass]=\"{ 'has-thumbnail': searchResult.thumbnail }\"\n *ngFor=\"let searchResult of searchResults\"\n >\n <div\n *ngIf=\"searchResult.promoted\"\n class=\"searchstax-search-result-promoted\"\n ></div>\n <a\n *ngIf=\"searchResult.url\"\n [href]=\"searchResult.url\"\n [attr.data-searchstax-unique-result-id]=\"searchResult.uniqueId\"\n (click)=\"resultClicked(searchResult, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div\n *ngIf=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n >\n {{ searchResult.ribbon }}\n </div>\n <img\n *ngIf=\"searchResult.thumbnail\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n searchResult.title\n }}</span>\n </div>\n <p *ngIf=\"searchResult.paths\" class=\"searchstax-search-result-common\">\n {{ searchResult.paths }}\n </p>\n <p\n *ngIf=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ searchResult.description }}\n </p>\n <div *ngFor=\"let unmappedField of searchResult.unmappedFields\">\n <div\n *ngIf=\"isImage(unmappedField)\"\n class=\"searchstax-search-result-image-container\"\n >\n <img\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n <div *ngIf=\"!isImage(unmappedField)\">\n <p class=\"searchstax-search-result-common\">\n {{ unmappedField.value }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit, TemplateRef } from \"@angular/core\";\nimport {\n ISearchstaxSEARCHTERM,\n ISearchstaxSearchFeedbackData,\n ISearchstaxSuggestProps,\n ISearchstaxSuggestResponse,\n ISearchstaxSuggestion,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\n\n@Component({\n selector: \"app-searchstax-seach-feedback\",\n templateUrl: \"./searchstax-seach-overview.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchFeedbackWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n searchFeedbackData: null | ISearchstaxSearchFeedbackData = null;\n rand = Math.random();\n context = this;\n constructor(private storeServiceService: StoreServiceService) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.attachObservables();\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchFeedbackWidget(\n \"search-feedback-container\" + this.rand,\n {}\n );\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n onOriginalQueryClick(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchFeedbackWidget?.onOriginalQueryClick(\n e\n );\n }\n\n attachObservables() {\n this.storeServiceService.searchstax.dataLayer.$searchFeedbackData.subscribe(\n (searchFeedbackData: null | ISearchstaxSearchFeedbackData) => {\n this.searchFeedbackData = searchFeedbackData;\n }\n );\n }\n}\n","<div\n class=\"search-feedback-container\"\n [id]=\"'search-feedback-container' + rand\"\n>\n <div\n class=\"searchstax-feedback-container\"\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n !templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n Showing\n <b\n >{{ searchFeedbackData!.startResultIndex }} -\n {{ searchFeedbackData!.endResultIndex }}</b\n >\n of <b>{{ searchFeedbackData!.totalResults }}</b> results\n <span *ngIf=\"searchFeedbackData.searchTerm\"\n >for \"<b>{{ searchFeedbackData!.searchTerm }}</b\n >\"\n </span>\n <div class=\"searchstax-feedback-container-suggested\">\n <div *ngIf=\"searchFeedbackData.autoCorrectedQuery\">\n Search instead for\n <a\n href=\"#\"\n (click)=\"onOriginalQueryClick($event, context)\"\n class=\"searchstax-feedback-original-query\"\n >{{ searchFeedbackData!.originalQuery }}</a\n >\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n","import { Component, Input, OnInit, TemplateRef } from \"@angular/core\";\nimport {\n IPaginationData,\n ISearchObject,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\n\n@Component({\n selector: \"app-searchstax-seach-pagination\",\n templateUrl: \"./searchstax-seach-pagination.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchPaginationWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n paginationData: null | IPaginationData = null;\n rand = Math.random();\n context = this;\n paginationAdded = false;\n constructor(private storeServiceService: StoreServiceService) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.attachObservables();\n setTimeout(() => {\n this.addWidget();\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n nextPage(event: Event, context: this) {\n event.stopImmediatePropagation();\n if (!context.paginationData?.isLastPage) {\n context.storeServiceService.searchstax.searchPaginationWidget?.nextPage(\n event\n );\n }\n }\n\n previousPage(event: Event, context: this) {\n event.stopImmediatePropagation();\n if (!context.paginationData?.isFirstPage) {\n context.storeServiceService.searchstax.searchPaginationWidget?.previousPage(\n event\n );\n }\n }\n\n addWidget() {\n if (\n !this.paginationAdded &&\n this.storeServiceService.searchstax.routerHelper\n ) {\n this.paginationAdded = true;\n this.storeServiceService.searchstax.addPaginationWidget(\n \"searchstax-pagination-container\" + this.rand,\n {}\n );\n }\n }\n\n attachObservables() {\n this.storeServiceService.searchstax.dataLayer.$searchObject.subscribe(\n (pagination: ISearchObject | null) => {\n this.addWidget();\n }\n );\n\n this.storeServiceService.searchstax.dataLayer.$paginationData.subscribe(\n (pagination: IPaginationData | null) => {\n this.paginationData = pagination;\n }\n );\n }\n}\n","<div [id]=\"'searchstax-pagination-container' + rand\">\n <div\n class=\"searchstax-pagination-container\"\n *ngIf=\"paginationData?.totalResults && !templateOverride\"\n >\n <div class=\"searchstax-pagination-content\">\n <a\n class=\"searchstax-pagination-previous\"\n (click)=\"previousPage($event, context)\"\n id=\"searchstax-pagination-previous\"\n >\n &lt; Previous\n </a>\n <div class=\"searchstax-pagination-details\">\n {{ paginationData?.startResultIndex }} -\n {{ paginationData?.endResultIndex }} of\n {{ paginationData?.totalResults }}\n </div>\n <a\n class=\"searchstax-pagination-next\"\n (click)=\"nextPage($event, context)\"\n id=\"searchstax-pagination-next\"\n >Next ></a\n >\n </div>\n </div>\n\n <div *ngIf=\"paginationData?.totalResults && templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { SearchstaxWrapper } from \"./components/searchstax-wrapper.component\";\nimport { SearchstaxInputWidget } from \"./components/searchstax-input/searchstax-input.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { SearchstaxResultsWidget } from \"./components/searchstax-results/searchstax-results.component\";\nimport { SearchstaxSearchFeedbackWidget } from \"../public-api\";\nimport { SearchstaxSearchPaginationWidget } from \"./components/searchstax-search-pagination/searchstax-search-pagination.component\";\n\n@NgModule({\n declarations: [\n SearchstaxWrapper,\n SearchstaxInputWidget,\n SearchstaxResultsWidget,\n SearchstaxSearchFeedbackWidget,\n SearchstaxSearchPaginationWidget\n ],\n imports: [CommonModule],\n exports: [\n SearchstaxWrapper,\n SearchstaxInputWidget,\n SearchstaxResultsWidget,\n SearchstaxSearchFeedbackWidget,\n SearchstaxSearchPaginationWidget\n ],\n})\nexport class SearchstudioUxAngularModule {}\n","/*\n * Public API Surface of searchstudio-ux-angular\n */\n\nexport * from './lib/components/searchstax-wrapper.component';\nexport * from './lib/components/searchstax-input/searchstax-input.component';\nexport * from './lib/components/searchstax-results/searchstax-results.component';\nexport * from './lib/components/searchstax-search-overview/searchstax-search-overview.component';\nexport * from './lib/components/searchstax-search-pagination/searchstax-search-pagination.component';\nexport * from './lib/services/store-service.service';\nexport * from './lib/searchstudio-ux-angular.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.StoreServiceService"],"mappings":"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"}