@searchstax-inc/searchstudio-ux-angular 2.0.0 → 4.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 (63) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +40 -5
  3. package/package.json +5 -2
  4. package/esm2022/lib/components/searchstax-input/searchstax-input.component.mjs +0 -81
  5. package/esm2022/lib/components/searchstax-results/searchstax-results.component.mjs +0 -85
  6. package/esm2022/lib/components/searchstax-search-answer/searchstax-search-answer.component.mjs +0 -47
  7. package/esm2022/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +0 -41
  8. package/esm2022/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +0 -114
  9. package/esm2022/lib/components/searchstax-search-location/searchstax-search-location.component.mjs +0 -92
  10. package/esm2022/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +0 -42
  11. package/esm2022/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +0 -64
  12. package/esm2022/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +0 -45
  13. package/esm2022/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +0 -46
  14. package/esm2022/lib/components/searchstax-wrapper.component.mjs +0 -93
  15. package/esm2022/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.mjs +0 -91
  16. package/esm2022/lib/components/templates/searchstax-search-answer-template.mjs +0 -119
  17. package/esm2022/lib/components/templates/searchstax-search-external-template.mjs +0 -107
  18. package/esm2022/lib/components/templates/searchstax-search-facet-desktop-template.mjs +0 -207
  19. package/esm2022/lib/components/templates/searchstax-search-facet-mobile-template.mjs +0 -343
  20. package/esm2022/lib/components/templates/searchstax-search-input-template.mjs +0 -126
  21. package/esm2022/lib/components/templates/searchstax-search-location-template.mjs +0 -152
  22. package/esm2022/lib/components/templates/searchstax-search-no-results-template.mjs +0 -85
  23. package/esm2022/lib/components/templates/searchstax-search-overview-template.mjs +0 -87
  24. package/esm2022/lib/components/templates/searchstax-search-pagination-infinite-template.mjs +0 -60
  25. package/esm2022/lib/components/templates/searchstax-search-pagination-template.mjs +0 -96
  26. package/esm2022/lib/components/templates/searchstax-search-related-template.mjs +0 -81
  27. package/esm2022/lib/components/templates/searchstax-search-results-template.mjs +0 -171
  28. package/esm2022/lib/components/templates/searchstax-search-sorting-template.mjs +0 -76
  29. package/esm2022/lib/searchstudio-ux-angular.module.mjs +0 -138
  30. package/esm2022/lib/services/store-service.service.mjs +0 -17
  31. package/esm2022/public-api.mjs +0 -30
  32. package/esm2022/searchstax-inc-searchstudio-ux-angular.mjs +0 -5
  33. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs +0 -2594
  34. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs.map +0 -1
  35. package/index.d.ts +0 -5
  36. package/lib/components/searchstax-input/searchstax-input.component.d.ts +0 -37
  37. package/lib/components/searchstax-results/searchstax-results.component.d.ts +0 -26
  38. package/lib/components/searchstax-search-answer/searchstax-search-answer.component.d.ts +0 -19
  39. package/lib/components/searchstax-search-external/searchstax-search-external.component.d.ts +0 -17
  40. package/lib/components/searchstax-search-facets/searchstax-search-facets.component.d.ts +0 -37
  41. package/lib/components/searchstax-search-location/searchstax-search-location.component.d.ts +0 -33
  42. package/lib/components/searchstax-search-overview/searchstax-search-overview.component.d.ts +0 -17
  43. package/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.d.ts +0 -21
  44. package/lib/components/searchstax-search-related/searchstax-search-related.component.d.ts +0 -19
  45. package/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.d.ts +0 -18
  46. package/lib/components/searchstax-wrapper.component.d.ts +0 -31
  47. package/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.d.ts +0 -13
  48. package/lib/components/templates/searchstax-search-answer-template.d.ts +0 -7
  49. package/lib/components/templates/searchstax-search-external-template.d.ts +0 -7
  50. package/lib/components/templates/searchstax-search-facet-desktop-template.d.ts +0 -7
  51. package/lib/components/templates/searchstax-search-facet-mobile-template.d.ts +0 -7
  52. package/lib/components/templates/searchstax-search-input-template.d.ts +0 -7
  53. package/lib/components/templates/searchstax-search-location-template.d.ts +0 -7
  54. package/lib/components/templates/searchstax-search-no-results-template.d.ts +0 -7
  55. package/lib/components/templates/searchstax-search-overview-template.d.ts +0 -7
  56. package/lib/components/templates/searchstax-search-pagination-infinite-template.d.ts +0 -7
  57. package/lib/components/templates/searchstax-search-pagination-template.d.ts +0 -7
  58. package/lib/components/templates/searchstax-search-related-template.d.ts +0 -7
  59. package/lib/components/templates/searchstax-search-results-template.d.ts +0 -7
  60. package/lib/components/templates/searchstax-search-sorting-template.d.ts +0 -7
  61. package/lib/searchstudio-ux-angular.module.d.ts +0 -32
  62. package/lib/services/store-service.service.d.ts +0 -8
  63. package/public-api.d.ts +0 -26
@@ -1,2594 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, EventEmitter, Output, Input, Component, ViewChild, NgModule } from '@angular/core';
3
- import { Searchstax } from '@searchstax-inc/searchstudio-ux-js';
4
- import * as i1 from '@angular/common';
5
- import { CommonModule } from '@angular/common';
6
- import * as i2 from '@angular/forms';
7
- import { FormsModule } from '@angular/forms';
8
-
9
- class StoreServiceService {
10
- constructor() {
11
- this.searchstax = new Searchstax('vue');
12
- }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreServiceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreServiceService, providedIn: 'root' }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreServiceService, decorators: [{
17
- type: Injectable,
18
- args: [{
19
- providedIn: 'root'
20
- }]
21
- }], ctorParameters: () => [] });
22
-
23
- class SearchstaxWrapper {
24
- constructor(storeServiceService) {
25
- this.storeServiceService = storeServiceService;
26
- this.language = 'en';
27
- this.model = '';
28
- this.searchURL = '';
29
- this.suggesterURL = '';
30
- this.trackApiKey = '';
31
- this.searchAuth = '';
32
- this.analyticsBaseUrl = '';
33
- this.analyticsSrc = '';
34
- this.questionURL = '';
35
- this.authType = 'basic';
36
- this.autoCorrect = true;
37
- this.initialized = new EventEmitter();
38
- this.hooks = {};
39
- }
40
- ngOnInit() {
41
- if (this.beforeSearch) {
42
- this.hooks.beforeSearch = this.beforeSearch;
43
- }
44
- if (this.afterSearch) {
45
- this.hooks.afterSearch = this.afterSearch;
46
- }
47
- this.storeServiceService.searchstax.initialize({
48
- language: this.language,
49
- model: this.model,
50
- searchURL: this.searchURL,
51
- suggesterURL: this.suggesterURL,
52
- trackApiKey: this.trackApiKey,
53
- searchAuth: this.searchAuth,
54
- authType: this.authType,
55
- autoCorrect: this.autoCorrect,
56
- router: this.router,
57
- hooks: this.hooks,
58
- analyticsBaseUrl: this.analyticsBaseUrl,
59
- analyticsSrc: this.analyticsSrc,
60
- sessionId: this.sessionId,
61
- questionURL: this.questionURL
62
- });
63
- this.initialized.emit(this.storeServiceService.searchstax);
64
- }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxWrapper, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxWrapper, selector: "app-searchstax-wrapper", inputs: { language: "language", model: "model", searchURL: "searchURL", suggesterURL: "suggesterURL", trackApiKey: "trackApiKey", searchAuth: "searchAuth", sessionId: "sessionId", analyticsBaseUrl: "analyticsBaseUrl", analyticsSrc: "analyticsSrc", questionURL: "questionURL", authType: "authType", autoCorrect: "autoCorrect", router: "router", beforeSearch: "beforeSearch", afterSearch: "afterSearch" }, outputs: { initialized: "initialized" }, ngImport: i0, template: `
67
- <div>
68
- <ng-content></ng-content>
69
- </div>
70
- `, isInline: true }); }
71
- }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxWrapper, decorators: [{
73
- type: Component,
74
- args: [{ selector: 'app-searchstax-wrapper', template: `
75
- <div>
76
- <ng-content></ng-content>
77
- </div>
78
- ` }]
79
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { language: [{
80
- type: Input
81
- }], model: [{
82
- type: Input
83
- }], searchURL: [{
84
- type: Input
85
- }], suggesterURL: [{
86
- type: Input
87
- }], trackApiKey: [{
88
- type: Input
89
- }], searchAuth: [{
90
- type: Input
91
- }], sessionId: [{
92
- type: Input
93
- }], analyticsBaseUrl: [{
94
- type: Input
95
- }], analyticsSrc: [{
96
- type: Input
97
- }], questionURL: [{
98
- type: Input
99
- }], authType: [{
100
- type: Input
101
- }], autoCorrect: [{
102
- type: Input
103
- }], router: [{
104
- type: Input
105
- }], beforeSearch: [{
106
- type: Input
107
- }], afterSearch: [{
108
- type: Input
109
- }], initialized: [{
110
- type: Output
111
- }] } });
112
-
113
- //CUT START
114
- const config = {
115
- appId: "APP_ID",
116
- relatedSearchesAPIKey: "KEY"
117
- };
118
- const locationWidgetConfig = {
119
- locationDecode: (term) => {
120
- return new Promise((resolve) => {
121
- // make a request to google geocoding API to retrieve lat, lon and address
122
- const geocodingAPIKey = "GEOCODING_API_KEY";
123
- const geocodingURL = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(term)}&key=${geocodingAPIKey}`;
124
- fetch(geocodingURL)
125
- .then((response) => response.json())
126
- .then((data) => {
127
- if (data.status === "OK" && data.results.length > 0) {
128
- const result = data.results[0];
129
- const location = {
130
- lat: result.geometry.location.lat,
131
- lon: result.geometry.location.lng,
132
- address: result.formatted_address,
133
- };
134
- resolve(location);
135
- }
136
- else {
137
- resolve({
138
- address: undefined,
139
- lat: undefined,
140
- lon: undefined,
141
- error: true,
142
- });
143
- }
144
- })
145
- .catch(() => {
146
- resolve({
147
- address: undefined,
148
- lat: undefined,
149
- lon: undefined,
150
- error: true,
151
- });
152
- });
153
- });
154
- },
155
- locationDecodeCoordinatesToAddress: (lat, lon) => {
156
- return new Promise((resolve) => {
157
- fetch(`https://geocoding-staging.searchstax.co/reverse?location=${lat},${lon}&components=country:US&app_id=${config.appId}`, {
158
- method: "GET",
159
- headers: {
160
- Authorization: `Token ${config.relatedSearchesAPIKey}`,
161
- },
162
- })
163
- .then((response) => response.json())
164
- .then((data) => {
165
- if (data.status === "OK" && data.results.length > 0) {
166
- const result = data.results[0];
167
- resolve({
168
- address: result.formatted_address,
169
- lat: lat,
170
- lon: lon,
171
- error: false,
172
- });
173
- }
174
- else {
175
- resolve({
176
- address: undefined,
177
- lat: lat,
178
- lon: lon,
179
- error: true,
180
- });
181
- }
182
- })
183
- .catch(() => {
184
- resolve({
185
- address: undefined,
186
- lat: lat,
187
- lon: lon,
188
- error: true,
189
- });
190
- });
191
- });
192
- },
193
- locationSearchEnabled: false,
194
- locationValuesOverride: {
195
- locationDistanceEnabled: true,
196
- filterValues: ["any", "1000"],
197
- filterUnit: "miles",
198
- locationFilterDefaultValue: "any"
199
- },
200
- };
201
-
202
- // reusable-template.component.ts
203
- class LocationTemplateComponent {
204
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocationTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LocationTemplateComponent, selector: "app-location-template", viewQueries: [{ propertyName: "locationTemplate", first: true, predicate: ["locationTemplate"], descendants: true }], ngImport: i0, template: `
206
- <ng-template
207
- #locationTemplate
208
- let-context="context"
209
- let-locationData="locationData"
210
- let-inputValue="inputValue"
211
- let-selectValue="selectValue"
212
- let-radiusChange="radiusChange"
213
- let-inputChange="inputChange"
214
- let-locationBlur="locationBlur"
215
- let-locationError="locationError"
216
- let-getCurrentLocation="getCurrentLocation"
217
- >
218
- <div
219
- class="searchstax-location-input-container"
220
- data-test-id="searchstax-location-input-container"
221
- *ngIf="locationData"
222
- >
223
- <div class="searchstax-location-input-wrapper">
224
- <span class="searchstax-location-input-label">NEAR</span>
225
- <div class="searchstax-location-input-wrapper-inner">
226
- <input
227
- type="text"
228
- id="searchstax-location-input"
229
- class="searchstax-location-input"
230
- [ngClass]="{
231
- 'searchstax-input-location-error': locationError
232
- }"
233
- placeholder="Zip, Postal Code or City..."
234
- aria-label="Search Location Input"
235
- data-test-id="searchstax-location-input"
236
- [value]="inputValue"
237
- (change)="inputChange($event, context)"
238
- (blur)="locationBlur(context)"
239
- />
240
- <button
241
- (click)="getCurrentLocation(context)"
242
- class="searchstax-get-current-location-button"
243
- >
244
- Use my current location
245
- </button>
246
- </div>
247
- <span
248
- *ngIf="locationData.shouldShowLocationDistanceDropdown"
249
- class="searchstax-location-input-label"
250
- >WITHIN</span
251
- >
252
- <select
253
- *ngIf="locationData.shouldShowLocationDistanceDropdown"
254
- id="searchstax-location-radius-select"
255
- class="searchstax-location-radius-select"
256
- aria-label="Search Location Radius Select"
257
- data-test-id="searchstax-location-radius-select"
258
- (change)="radiusChange($event, context)"
259
- [(ngModel)]="context.selectValue"
260
- >
261
- <option
262
- *ngFor="let value of locationData.locationSearchDistanceValues"
263
- [value]="value.value"
264
- >
265
- {{ value.label }}
266
- </option>
267
- </select>
268
- </div>
269
- </div>
270
- </ng-template>
271
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
272
- }
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocationTemplateComponent, decorators: [{
274
- type: Component,
275
- args: [{
276
- selector: "app-location-template",
277
- template: `
278
- <ng-template
279
- #locationTemplate
280
- let-context="context"
281
- let-locationData="locationData"
282
- let-inputValue="inputValue"
283
- let-selectValue="selectValue"
284
- let-radiusChange="radiusChange"
285
- let-inputChange="inputChange"
286
- let-locationBlur="locationBlur"
287
- let-locationError="locationError"
288
- let-getCurrentLocation="getCurrentLocation"
289
- >
290
- <div
291
- class="searchstax-location-input-container"
292
- data-test-id="searchstax-location-input-container"
293
- *ngIf="locationData"
294
- >
295
- <div class="searchstax-location-input-wrapper">
296
- <span class="searchstax-location-input-label">NEAR</span>
297
- <div class="searchstax-location-input-wrapper-inner">
298
- <input
299
- type="text"
300
- id="searchstax-location-input"
301
- class="searchstax-location-input"
302
- [ngClass]="{
303
- 'searchstax-input-location-error': locationError
304
- }"
305
- placeholder="Zip, Postal Code or City..."
306
- aria-label="Search Location Input"
307
- data-test-id="searchstax-location-input"
308
- [value]="inputValue"
309
- (change)="inputChange($event, context)"
310
- (blur)="locationBlur(context)"
311
- />
312
- <button
313
- (click)="getCurrentLocation(context)"
314
- class="searchstax-get-current-location-button"
315
- >
316
- Use my current location
317
- </button>
318
- </div>
319
- <span
320
- *ngIf="locationData.shouldShowLocationDistanceDropdown"
321
- class="searchstax-location-input-label"
322
- >WITHIN</span
323
- >
324
- <select
325
- *ngIf="locationData.shouldShowLocationDistanceDropdown"
326
- id="searchstax-location-radius-select"
327
- class="searchstax-location-radius-select"
328
- aria-label="Search Location Radius Select"
329
- data-test-id="searchstax-location-radius-select"
330
- (change)="radiusChange($event, context)"
331
- [(ngModel)]="context.selectValue"
332
- >
333
- <option
334
- *ngFor="let value of locationData.locationSearchDistanceValues"
335
- [value]="value.value"
336
- >
337
- {{ value.label }}
338
- </option>
339
- </select>
340
- </div>
341
- </div>
342
- </ng-template>
343
- `,
344
- }]
345
- }], propDecorators: { locationTemplate: [{
346
- type: ViewChild,
347
- args: ["locationTemplate"]
348
- }] } });
349
-
350
- class SearchstaxSearchLocationWidget {
351
- constructor(storeServiceService) {
352
- this.storeServiceService = storeServiceService;
353
- this.locationData = null;
354
- this.inputValue = "";
355
- this.selectValue = "";
356
- this.locationAdded = false;
357
- this.locationError = false;
358
- this.rand = Math.random();
359
- this.context = this;
360
- }
361
- ngOnInit() {
362
- if (this.storeServiceService.searchstax) {
363
- this.attachObservables();
364
- setTimeout(() => {
365
- this.addWidget();
366
- }, 100);
367
- }
368
- else {
369
- throw Error("Searchstax instance needs to be passed via props");
370
- }
371
- }
372
- locationBlur(context) {
373
- context.storeServiceService.searchstax.searchLocationWidget?.triggerGeocoder(context.inputValue);
374
- }
375
- radiusChange(e, context) {
376
- const target = e.target;
377
- context.selectValue = target.value;
378
- context.storeServiceService.searchstax.searchLocationWidget?.setRadiusValue(context.selectValue);
379
- }
380
- inputChange(e, context) {
381
- const target = e.target;
382
- context.inputValue = target.value;
383
- }
384
- getCurrentLocation(context) {
385
- context.storeServiceService.searchstax.searchLocationWidget?.getCurrentLocation();
386
- }
387
- addWidget() {
388
- if (!this.locationAdded &&
389
- this.storeServiceService.searchstax.routerHelper) {
390
- this.locationAdded = true;
391
- this.storeServiceService.searchstax.addSearchLocationWidget("searchstax-location-container" + this.rand, {
392
- hooks: {
393
- locationDecode: this.locationDecode,
394
- locationDecodeCoordinatesToAddress: this.locationDecodeCoordinatesToAddress,
395
- },
396
- locationSearchEnabled: this.locationSearchEnabled,
397
- locationValuesOverride: this.locationValuesOverride,
398
- });
399
- }
400
- }
401
- attachObservables() {
402
- this.storeServiceService.searchstax.dataLayer.$locationWidgetTemplateData.subscribe((sortingData) => {
403
- this.locationData = sortingData;
404
- });
405
- this.storeServiceService.searchstax.dataLayer.$searchObject.subscribe((result) => {
406
- this.inputValue = result.location.address ?? "";
407
- this.selectValue = result.location.radius || "";
408
- });
409
- this.storeServiceService.searchstax.dataLayer.$locationError.subscribe((locationError) => {
410
- this.locationError = locationError;
411
- });
412
- this.storeServiceService.searchstax.dataLayer.$searchLocationChange.subscribe((location) => {
413
- this.inputValue = location;
414
- });
415
- this.storeServiceService.searchstax.dataLayer.$searchRadiusChange.subscribe((radius) => {
416
- this.selectValue = radius;
417
- });
418
- }
419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchLocationWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
420
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchLocationWidget, selector: "app-searchstax-search-location", inputs: { templateOverride: "templateOverride", locationSearchEnabled: "locationSearchEnabled", locationValuesOverride: "locationValuesOverride", locationDecode: "locationDecode", locationDecodeCoordinatesToAddress: "locationDecodeCoordinatesToAddress" }, ngImport: i0, template: "<div\n [id]=\"'searchstax-location-container' + rand\"\n class=\"searchstax-location-container\"\n>\n <div *ngIf=\"!!locationData && !templateOverride\">\n <app-location-template #ref></app-location-template>\n <ng-template\n *ngTemplateOutlet=\"ref.locationTemplate; context: context\"\n ></ng-template>\n </div>\n\n <div *ngIf=\"!!locationData && templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LocationTemplateComponent, selector: "app-location-template" }] }); }
421
- }
422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchLocationWidget, decorators: [{
423
- type: Component,
424
- args: [{ selector: "app-searchstax-search-location", template: "<div\n [id]=\"'searchstax-location-container' + rand\"\n class=\"searchstax-location-container\"\n>\n <div *ngIf=\"!!locationData && !templateOverride\">\n <app-location-template #ref></app-location-template>\n <ng-template\n *ngTemplateOutlet=\"ref.locationTemplate; context: context\"\n ></ng-template>\n </div>\n\n <div *ngIf=\"!!locationData && templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
425
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { templateOverride: [{
426
- type: Input
427
- }], locationSearchEnabled: [{
428
- type: Input
429
- }], locationValuesOverride: [{
430
- type: Input
431
- }], locationDecode: [{
432
- type: Input
433
- }], locationDecodeCoordinatesToAddress: [{
434
- type: Input
435
- }] } });
436
-
437
- // reusable-template.component.ts
438
- class InputTemplateComponent {
439
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
440
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputTemplateComponent, selector: "app-input-template", viewQueries: [{ propertyName: "inputTemplate", first: true, predicate: ["inputTemplate"], descendants: true }], ngImport: i0, template: `
441
- <ng-template
442
- #inputTemplate
443
- let-suggestions="suggestions"
444
- let-onMouseLeave="onMouseLeave"
445
- let-onMouseOver="onMouseOver"
446
- let-onMouseClick="onMouseClick"
447
- let-context="context"
448
- let-locationWidgetConfig="locationWidgetConfig"
449
- >
450
- <div class="searchstax-search-input-wrapper">
451
- <input
452
- type="text"
453
- id="searchstax-search-input"
454
- class="searchstax-search-input"
455
- placeholder="SEARCH FOR..."
456
- aria-label="search"
457
- />
458
- <div
459
- class="searchstax-autosuggest-container"
460
- [ngClass]="{ hidden: suggestions.length === 0 }"
461
- (mouseleave)="onMouseLeave(context)"
462
- >
463
- <div
464
- class="searchstax-autosuggest-item"
465
- *ngFor="let suggestion of suggestions"
466
- >
467
- <div
468
- class="searchstax-autosuggest-item-term-container"
469
- [innerHtml]="suggestion.term"
470
- (mouseover)="onMouseOver(suggestion, context)"
471
- tabindex="0"
472
- (click)="onMouseClick($event, context)"
473
- ></div>
474
- </div>
475
- </div>
476
- </div>
477
- <app-searchstax-search-location
478
- [locationDecode]="locationWidgetConfig.locationDecode"
479
- [locationDecodeCoordinatesToAddress]="
480
- locationWidgetConfig.locationDecodeCoordinatesToAddress
481
- "
482
- [locationSearchEnabled]="locationWidgetConfig.locationSearchEnabled"
483
- [locationValuesOverride]="locationWidgetConfig.locationValuesOverride"
484
- >
485
- </app-searchstax-search-location>
486
- <button
487
- class="searchstax-spinner-icon"
488
- id="searchstax-search-input-action-button"
489
- role="button"
490
- aria-label="search"
491
- ></button>
492
- </ng-template>
493
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SearchstaxSearchLocationWidget, selector: "app-searchstax-search-location", inputs: ["templateOverride", "locationSearchEnabled", "locationValuesOverride", "locationDecode", "locationDecodeCoordinatesToAddress"] }] }); }
494
- }
495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputTemplateComponent, decorators: [{
496
- type: Component,
497
- args: [{
498
- selector: "app-input-template",
499
- template: `
500
- <ng-template
501
- #inputTemplate
502
- let-suggestions="suggestions"
503
- let-onMouseLeave="onMouseLeave"
504
- let-onMouseOver="onMouseOver"
505
- let-onMouseClick="onMouseClick"
506
- let-context="context"
507
- let-locationWidgetConfig="locationWidgetConfig"
508
- >
509
- <div class="searchstax-search-input-wrapper">
510
- <input
511
- type="text"
512
- id="searchstax-search-input"
513
- class="searchstax-search-input"
514
- placeholder="SEARCH FOR..."
515
- aria-label="search"
516
- />
517
- <div
518
- class="searchstax-autosuggest-container"
519
- [ngClass]="{ hidden: suggestions.length === 0 }"
520
- (mouseleave)="onMouseLeave(context)"
521
- >
522
- <div
523
- class="searchstax-autosuggest-item"
524
- *ngFor="let suggestion of suggestions"
525
- >
526
- <div
527
- class="searchstax-autosuggest-item-term-container"
528
- [innerHtml]="suggestion.term"
529
- (mouseover)="onMouseOver(suggestion, context)"
530
- tabindex="0"
531
- (click)="onMouseClick($event, context)"
532
- ></div>
533
- </div>
534
- </div>
535
- </div>
536
- <app-searchstax-search-location
537
- [locationDecode]="locationWidgetConfig.locationDecode"
538
- [locationDecodeCoordinatesToAddress]="
539
- locationWidgetConfig.locationDecodeCoordinatesToAddress
540
- "
541
- [locationSearchEnabled]="locationWidgetConfig.locationSearchEnabled"
542
- [locationValuesOverride]="locationWidgetConfig.locationValuesOverride"
543
- >
544
- </app-searchstax-search-location>
545
- <button
546
- class="searchstax-spinner-icon"
547
- id="searchstax-search-input-action-button"
548
- role="button"
549
- aria-label="search"
550
- ></button>
551
- </ng-template>
552
- `,
553
- }]
554
- }], propDecorators: { inputTemplate: [{
555
- type: ViewChild,
556
- args: ["inputTemplate"]
557
- }] } });
558
-
559
- class SearchstaxInputWidget {
560
- constructor(storeServiceService) {
561
- this.storeServiceService = storeServiceService;
562
- this.searchInputId = "";
563
- this.hooks = {};
564
- this.suggestions = [];
565
- this.context = this;
566
- this.templateData = null;
567
- this.locationWidgetConfig = locationWidgetConfig;
568
- }
569
- ngOnInit() {
570
- if (this.storeServiceService.searchstax) {
571
- this.attachObservables();
572
- // const hooks: { [key: string]: (prop: any) => any } = {}
573
- if (this.afterAutosuggest) {
574
- this.hooks["afterAutosuggest"] = this.afterAutosuggest;
575
- }
576
- if (this.beforeAutosuggest) {
577
- this.hooks["beforeAutosuggest"] = this.beforeAutosuggest;
578
- }
579
- setTimeout(() => {
580
- this.storeServiceService.searchstax.addSearchInputWidget("searchstax-input-container", {
581
- suggestAfterMinChars: this.suggestAfterMinChars,
582
- hooks: this.hooks,
583
- templates: {
584
- mainTemplate: {
585
- template: ``,
586
- searchInputId: this.searchInputId ?? "searchstax-search-input",
587
- },
588
- },
589
- });
590
- this.storeServiceService.searchstax.dataLayer.setInputTemplateRendered(true);
591
- }, 100);
592
- }
593
- else {
594
- throw Error("Searchstax instance needs to be passed via props");
595
- }
596
- }
597
- onMouseLeave(context) {
598
- context.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();
599
- context.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();
600
- }
601
- onMouseOver(suggestion, context) {
602
- context.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion);
603
- }
604
- onMouseClick(e, context) {
605
- e.stopImmediatePropagation();
606
- context.storeServiceService.searchstax.searchInputWidget?.suggestionChosen();
607
- }
608
- attachObservables() {
609
- this.storeServiceService.searchstax.dataLayer.$autosuggestResults.subscribe((suggestions) => {
610
- this.suggestions = suggestions?.suggestions ?? [];
611
- });
612
- this.storeServiceService.searchstax.dataLayer.$inputWidgetTemplateData.subscribe((data) => {
613
- this.templateData = data;
614
- });
615
- }
616
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxInputWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
617
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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\n class=\"searchstax-search-input-container searchstax-search-input-container-new\"\n [class]=\"{\n 'searchstax-alternative-render': !!templateData?.locationEnabled\n }\"\n >\n <ng-container *ngIf=\"!templateOverride\">\n <app-input-template #ref></app-input-template>\n <ng-template\n *ngTemplateOutlet=\"ref.inputTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InputTemplateComponent, selector: "app-input-template" }] }); }
618
- }
619
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxInputWidget, decorators: [{
620
- type: Component,
621
- args: [{ selector: "app-searchstax-input", template: "<div id=\"searchstax-input-container\">\n <div\n class=\"searchstax-search-input-container searchstax-search-input-container-new\"\n [class]=\"{\n 'searchstax-alternative-render': !!templateData?.locationEnabled\n }\"\n >\n <ng-container *ngIf=\"!templateOverride\">\n <app-input-template #ref></app-input-template>\n <ng-template\n *ngTemplateOutlet=\"ref.inputTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </ng-container>\n </div>\n</div>\n" }]
622
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { afterAutosuggest: [{
623
- type: Input
624
- }], beforeAutosuggest: [{
625
- type: Input
626
- }], searchInputId: [{
627
- type: Input
628
- }], suggestAfterMinChars: [{
629
- type: Input
630
- }], templateOverride: [{
631
- type: Input
632
- }] } });
633
-
634
- // reusable-template.component.ts
635
- class ResultsTemplateComponent {
636
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResultsTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
637
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ResultsTemplateComponent, selector: "app-results-template", viewQueries: [{ propertyName: "resultsTemplate", first: true, predicate: ["resultsTemplate"], descendants: true }], ngImport: i0, template: `
638
- <ng-template
639
- #resultsTemplate
640
- let-searchResults="searchResults"
641
- let-resultClicked="resultClicked"
642
- let-isImage="isImage"
643
- let-context="context"
644
- >
645
- <div class="searchstax-search-results">
646
- <a
647
- *ngFor="let searchResult of searchResults"
648
- [href]="searchResult.url"
649
- [attr.data-searchstax-unique-result-id]="searchResult.uniqueId"
650
- (click)="resultClicked(searchResult, $event, context)"
651
- (keyup.enter)="resultClicked(searchResult, $event, context)"
652
- (keyup.space)="resultClicked(searchResult, $event, context)"
653
- tabindex="0"
654
- class="searchstax-result-item-link searchstax-result-item-link-wrapping"
655
- >
656
- <div
657
- class="searchstax-search-result"
658
- [ngClass]="{ 'has-thumbnail': searchResult.thumbnail }"
659
- >
660
- <div
661
- *ngIf="searchResult.promoted"
662
- class="searchstax-search-result-promoted"
663
- ></div>
664
- <div
665
- *ngIf="searchResult.ribbon"
666
- [innerHTML]="searchResult.ribbon"
667
- class="searchstax-search-result-ribbon"
668
- ></div>
669
- <img
670
- alt=""
671
- *ngIf="searchResult.thumbnail"
672
- [src]="searchResult.thumbnail"
673
- class="searchstax-thumbnail"
674
- />
675
- <div class="searchstax-search-result-title-container">
676
- <span
677
- class="searchstax-search-result-title"
678
- [innerHTML]="searchResult.title"
679
- ></span>
680
- </div>
681
- <p
682
- *ngIf="searchResult.paths"
683
- class="searchstax-search-result-common"
684
- [innerHTML]="searchResult.paths"
685
- ></p>
686
- <p
687
- *ngIf="searchResult.description"
688
- [innerHTML]="searchResult.description"
689
- class="searchstax-search-result-description searchstax-search-result-common"
690
- ></p>
691
- <div *ngFor="let unmappedField of searchResult.unmappedFields">
692
- <div
693
- *ngIf="isImage(unmappedField)"
694
- class="searchstax-search-result-image-container"
695
- >
696
- <img
697
- alt=""
698
- [src]="unmappedField.value"
699
- class="searchstax-result-image"
700
- />
701
- </div>
702
- <div *ngIf="!isImage(unmappedField)">
703
- <p
704
- class="searchstax-search-result-common"
705
- [innerHTML]="unmappedField.value"
706
- ></p>
707
- </div>
708
- </div>
709
- </div>
710
- </a>
711
- </div>
712
- </ng-template>
713
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
714
- }
715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResultsTemplateComponent, decorators: [{
716
- type: Component,
717
- args: [{
718
- selector: "app-results-template",
719
- template: `
720
- <ng-template
721
- #resultsTemplate
722
- let-searchResults="searchResults"
723
- let-resultClicked="resultClicked"
724
- let-isImage="isImage"
725
- let-context="context"
726
- >
727
- <div class="searchstax-search-results">
728
- <a
729
- *ngFor="let searchResult of searchResults"
730
- [href]="searchResult.url"
731
- [attr.data-searchstax-unique-result-id]="searchResult.uniqueId"
732
- (click)="resultClicked(searchResult, $event, context)"
733
- (keyup.enter)="resultClicked(searchResult, $event, context)"
734
- (keyup.space)="resultClicked(searchResult, $event, context)"
735
- tabindex="0"
736
- class="searchstax-result-item-link searchstax-result-item-link-wrapping"
737
- >
738
- <div
739
- class="searchstax-search-result"
740
- [ngClass]="{ 'has-thumbnail': searchResult.thumbnail }"
741
- >
742
- <div
743
- *ngIf="searchResult.promoted"
744
- class="searchstax-search-result-promoted"
745
- ></div>
746
- <div
747
- *ngIf="searchResult.ribbon"
748
- [innerHTML]="searchResult.ribbon"
749
- class="searchstax-search-result-ribbon"
750
- ></div>
751
- <img
752
- alt=""
753
- *ngIf="searchResult.thumbnail"
754
- [src]="searchResult.thumbnail"
755
- class="searchstax-thumbnail"
756
- />
757
- <div class="searchstax-search-result-title-container">
758
- <span
759
- class="searchstax-search-result-title"
760
- [innerHTML]="searchResult.title"
761
- ></span>
762
- </div>
763
- <p
764
- *ngIf="searchResult.paths"
765
- class="searchstax-search-result-common"
766
- [innerHTML]="searchResult.paths"
767
- ></p>
768
- <p
769
- *ngIf="searchResult.description"
770
- [innerHTML]="searchResult.description"
771
- class="searchstax-search-result-description searchstax-search-result-common"
772
- ></p>
773
- <div *ngFor="let unmappedField of searchResult.unmappedFields">
774
- <div
775
- *ngIf="isImage(unmappedField)"
776
- class="searchstax-search-result-image-container"
777
- >
778
- <img
779
- alt=""
780
- [src]="unmappedField.value"
781
- class="searchstax-result-image"
782
- />
783
- </div>
784
- <div *ngIf="!isImage(unmappedField)">
785
- <p
786
- class="searchstax-search-result-common"
787
- [innerHTML]="unmappedField.value"
788
- ></p>
789
- </div>
790
- </div>
791
- </div>
792
- </a>
793
- </div>
794
- </ng-template>
795
- `,
796
- }]
797
- }], propDecorators: { resultsTemplate: [{
798
- type: ViewChild,
799
- args: ["resultsTemplate"]
800
- }] } });
801
-
802
- // reusable-template.component.ts
803
- class NoResultsTemplateComponent {
804
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoResultsTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
805
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NoResultsTemplateComponent, selector: "app-no-results-template", viewQueries: [{ propertyName: "noResultsTemplate", first: true, predicate: ["noResultsTemplate"], descendants: true }], ngImport: i0, template: `
806
- <ng-template
807
- #noResultsTemplate
808
- let-metadata="metadata"
809
- let-searchTerm="searchTerm"
810
- let-executeSearch="executeSearch"
811
- let-context="context"
812
- >
813
- <div class="searchstax-no-results">
814
- Showing <strong>no results</strong> for
815
- <strong>"{{ searchTerm }}"</strong>
816
- <br />
817
- <span *ngIf="metadata?.spellingSuggestion"
818
- >&nbsp;Did you mean
819
- <a
820
- href="#"
821
- [attr.aria-label]="'did you mean: ' + metadata?.spellingSuggestion"
822
- class="searchstax-suggestion-term"
823
- (click)="
824
- executeSearch(metadata?.spellingSuggestion ?? '', $event, context)
825
- "
826
- >{{ metadata?.spellingSuggestion }}</a
827
- >?</span
828
- >
829
- </div>
830
- <ul>
831
- <li>
832
- Try searching for search related terms or topics. We offer a wide
833
- variety of content to help you get the information you need.
834
- </li>
835
- <li>Lost? Click on the ‘X” in the Search Box to reset your search.</li>
836
- </ul>
837
- </ng-template>
838
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
839
- }
840
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoResultsTemplateComponent, decorators: [{
841
- type: Component,
842
- args: [{
843
- selector: "app-no-results-template",
844
- template: `
845
- <ng-template
846
- #noResultsTemplate
847
- let-metadata="metadata"
848
- let-searchTerm="searchTerm"
849
- let-executeSearch="executeSearch"
850
- let-context="context"
851
- >
852
- <div class="searchstax-no-results">
853
- Showing <strong>no results</strong> for
854
- <strong>"{{ searchTerm }}"</strong>
855
- <br />
856
- <span *ngIf="metadata?.spellingSuggestion"
857
- >&nbsp;Did you mean
858
- <a
859
- href="#"
860
- [attr.aria-label]="'did you mean: ' + metadata?.spellingSuggestion"
861
- class="searchstax-suggestion-term"
862
- (click)="
863
- executeSearch(metadata?.spellingSuggestion ?? '', $event, context)
864
- "
865
- >{{ metadata?.spellingSuggestion }}</a
866
- >?</span
867
- >
868
- </div>
869
- <ul>
870
- <li>
871
- Try searching for search related terms or topics. We offer a wide
872
- variety of content to help you get the information you need.
873
- </li>
874
- <li>Lost? Click on the ‘X” in the Search Box to reset your search.</li>
875
- </ul>
876
- </ng-template>
877
- `,
878
- }]
879
- }], propDecorators: { noResultsTemplate: [{
880
- type: ViewChild,
881
- args: ["noResultsTemplate"]
882
- }] } });
883
-
884
- class SearchstaxResultsWidget {
885
- get hooks() {
886
- const hooks = {};
887
- if (this.afterLinkClick) {
888
- hooks['afterLinkClick'] = this.afterLinkClick;
889
- }
890
- return hooks;
891
- }
892
- constructor(storeServiceService) {
893
- this.storeServiceService = storeServiceService;
894
- this.searchResults = null;
895
- this.metadata = null;
896
- this.searchTerm = '';
897
- this.context = this;
898
- }
899
- ngOnInit() {
900
- if (this.storeServiceService.searchstax) {
901
- this.attachObservables();
902
- setTimeout(() => {
903
- this.storeServiceService.searchstax.addSearchResultsWidget('searchstax-results-container', {
904
- templates: {},
905
- hooks: this.hooks,
906
- renderMethod: this.renderMethod ?? "pagination",
907
- });
908
- }, 0);
909
- }
910
- else {
911
- throw Error('Searchstax instance needs to be passed via props');
912
- }
913
- }
914
- executeSearch(term, event, context) {
915
- event.preventDefault();
916
- context.storeServiceService.searchstax.executeSearch(term);
917
- }
918
- attachObservables() {
919
- this.storeServiceService.searchstax.dataLayer.$searchResults.subscribe((results) => {
920
- const current = this.searchResults ? [...this.searchResults] : [];
921
- const newResults = results ?? [];
922
- const resultsCombined = this.renderMethod === "infiniteScroll"
923
- ? [...current, ...newResults]
924
- : results;
925
- if (this.storeServiceService.searchstax.dataLayer.$searchObject.value?.page === 1) {
926
- this.searchResults = newResults;
927
- }
928
- else {
929
- this.searchResults = resultsCombined;
930
- }
931
- });
932
- this.storeServiceService.searchstax.dataLayer.$searchTermChange.subscribe((result) => {
933
- this.searchTerm = result;
934
- });
935
- this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata.subscribe((value) => {
936
- this.metadata = value;
937
- });
938
- }
939
- resultClicked(result, event, context) {
940
- event.preventDefault();
941
- event.stopPropagation();
942
- context.storeServiceService.searchstax.executeLinkClick(result.uniqueId);
943
- }
944
- isImage(field) {
945
- return field.isImage && typeof field.value === 'string';
946
- }
947
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxResultsWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
948
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxResultsWidget, selector: "app-searchstax-results", inputs: { afterLinkClick: "afterLinkClick", noResultsTemplate: "noResultsTemplate", resultsTemplate: "resultsTemplate", renderMethod: "renderMethod" }, ngImport: i0, template: "<div id=\"searchstax-results-container\">\n <section aria-label=\"search results container\" tabindex=\"0\">\n <div\n class=\"searchstax-search-results-container\"\n id=\"searchstax-search-results-container\"\n >\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n !noResultsTemplate\n \"\n >\n <app-no-results-template #ref></app-no-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.noResultsTemplate; context: context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n noResultsTemplate\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <app-results-template #ref></app-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.resultsTemplate; context: context\"\n ></ng-template>\n </ng-container>\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 </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResultsTemplateComponent, selector: "app-results-template" }, { kind: "component", type: NoResultsTemplateComponent, selector: "app-no-results-template" }] }); }
949
- }
950
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxResultsWidget, decorators: [{
951
- type: Component,
952
- args: [{ selector: 'app-searchstax-results', template: "<div id=\"searchstax-results-container\">\n <section aria-label=\"search results container\" tabindex=\"0\">\n <div\n class=\"searchstax-search-results-container\"\n id=\"searchstax-search-results-container\"\n >\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n !noResultsTemplate\n \"\n >\n <app-no-results-template #ref></app-no-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.noResultsTemplate; context: context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n noResultsTemplate\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <app-results-template #ref></app-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.resultsTemplate; context: context\"\n ></ng-template>\n </ng-container>\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 </section>\n</div>\n" }]
953
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { afterLinkClick: [{
954
- type: Input
955
- }], noResultsTemplate: [{
956
- type: Input
957
- }], resultsTemplate: [{
958
- type: Input
959
- }], renderMethod: [{
960
- type: Input
961
- }] } });
962
-
963
- // reusable-template.component.ts
964
- class OverviewTemplateComponent {
965
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverviewTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: OverviewTemplateComponent, selector: "app-overview-template", viewQueries: [{ propertyName: "overviewTemplate", first: true, predicate: ["feedbackTemplate"], descendants: true }], ngImport: i0, template: `
967
- <ng-template
968
- #feedbackTemplate
969
- let-searchFeedbackData="searchFeedbackData"
970
- let-onOriginalQueryClick="onOriginalQueryClick"
971
- let-context="context"
972
- >
973
- <h2 class="searchstax-feedback-container">
974
- Showing
975
- <b
976
- >{{ searchFeedbackData!.startResultIndex }} -
977
- {{ searchFeedbackData!.endResultIndex }}</b
978
- >
979
- of <b>{{ searchFeedbackData!.totalResults }}</b> results
980
- <span *ngIf="searchFeedbackData.searchTerm"
981
- >for "<b>{{ searchFeedbackData!.searchTerm }}</b
982
- >"
983
- </span>
984
- <div class="searchstax-feedback-container-suggested">
985
- <div *ngIf="searchFeedbackData.autoCorrectedQuery">
986
- Search instead for
987
- <a
988
- href="#"
989
- (click)="onOriginalQueryClick($event, context)"
990
- class="searchstax-feedback-original-query"
991
- [attr.aria-label]="
992
- 'Search instead for: ' + searchFeedbackData!.originalQuery
993
- "
994
- >{{ searchFeedbackData!.originalQuery }}</a
995
- >
996
- </div>
997
- </div>
998
- </h2>
999
- </ng-template>
1000
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1001
- }
1002
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverviewTemplateComponent, decorators: [{
1003
- type: Component,
1004
- args: [{
1005
- selector: "app-overview-template",
1006
- template: `
1007
- <ng-template
1008
- #feedbackTemplate
1009
- let-searchFeedbackData="searchFeedbackData"
1010
- let-onOriginalQueryClick="onOriginalQueryClick"
1011
- let-context="context"
1012
- >
1013
- <h2 class="searchstax-feedback-container">
1014
- Showing
1015
- <b
1016
- >{{ searchFeedbackData!.startResultIndex }} -
1017
- {{ searchFeedbackData!.endResultIndex }}</b
1018
- >
1019
- of <b>{{ searchFeedbackData!.totalResults }}</b> results
1020
- <span *ngIf="searchFeedbackData.searchTerm"
1021
- >for "<b>{{ searchFeedbackData!.searchTerm }}</b
1022
- >"
1023
- </span>
1024
- <div class="searchstax-feedback-container-suggested">
1025
- <div *ngIf="searchFeedbackData.autoCorrectedQuery">
1026
- Search instead for
1027
- <a
1028
- href="#"
1029
- (click)="onOriginalQueryClick($event, context)"
1030
- class="searchstax-feedback-original-query"
1031
- [attr.aria-label]="
1032
- 'Search instead for: ' + searchFeedbackData!.originalQuery
1033
- "
1034
- >{{ searchFeedbackData!.originalQuery }}</a
1035
- >
1036
- </div>
1037
- </div>
1038
- </h2>
1039
- </ng-template>
1040
- `,
1041
- }]
1042
- }], propDecorators: { overviewTemplate: [{
1043
- type: ViewChild,
1044
- args: ["feedbackTemplate"]
1045
- }] } });
1046
-
1047
- class SearchstaxSearchFeedbackWidget {
1048
- constructor(storeServiceService) {
1049
- this.storeServiceService = storeServiceService;
1050
- this.searchFeedbackData = null;
1051
- this.rand = Math.random();
1052
- this.context = this;
1053
- }
1054
- ngOnInit() {
1055
- if (this.storeServiceService.searchstax) {
1056
- this.attachObservables();
1057
- setTimeout(() => {
1058
- this.storeServiceService.searchstax.addSearchFeedbackWidget("search-feedback-container" + this.rand, {});
1059
- }, 0);
1060
- }
1061
- else {
1062
- throw Error("Searchstax instance needs to be passed via props");
1063
- }
1064
- }
1065
- onOriginalQueryClick(e, context) {
1066
- e.stopImmediatePropagation();
1067
- context.storeServiceService.searchstax.searchFeedbackWidget?.onOriginalQueryClick(e);
1068
- }
1069
- attachObservables() {
1070
- this.storeServiceService.searchstax.dataLayer.$searchFeedbackData.subscribe((searchFeedbackData) => {
1071
- this.searchFeedbackData = searchFeedbackData;
1072
- });
1073
- }
1074
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchFeedbackWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
1075
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchFeedbackWidget, selector: "app-searchstax-search-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 <app-overview-template #ref></app-overview-template>\n <ng-template\n *ngTemplateOutlet=\"ref.overviewTemplate; context: context\"\n ></ng-template>\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", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: OverviewTemplateComponent, selector: "app-overview-template" }] }); }
1076
- }
1077
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchFeedbackWidget, decorators: [{
1078
- type: Component,
1079
- args: [{ selector: "app-searchstax-search-feedback", 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 <app-overview-template #ref></app-overview-template>\n <ng-template\n *ngTemplateOutlet=\"ref.overviewTemplate; context: context\"\n ></ng-template>\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" }]
1080
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { templateOverride: [{
1081
- type: Input
1082
- }] } });
1083
-
1084
- // reusable-template.component.ts
1085
- class PaginationTemplateComponent {
1086
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1087
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PaginationTemplateComponent, selector: "app-pagination-template", viewQueries: [{ propertyName: "paginationTemplate", first: true, predicate: ["paginationTemplate"], descendants: true }], ngImport: i0, template: `
1088
- <ng-template
1089
- #paginationTemplate
1090
- let-paginationData="paginationData"
1091
- let-previousPage="previousPage"
1092
- let-nextPage="nextPage"
1093
- let-context="context"
1094
- >
1095
- <div class="searchstax-pagination-container">
1096
- <div class="searchstax-pagination-content">
1097
- <a
1098
- class="searchstax-pagination-previous"
1099
- [class]="paginationData.isFirstPage ? 'disabled' : ''"
1100
- (click)="previousPage($event, context)"
1101
- (keyup.enter)="previousPage($event, context)"
1102
- (keyup.space)="previousPage($event, context)"
1103
- tabindex="0"
1104
- id="searchstax-pagination-previous"
1105
- >
1106
- &lt; Previous
1107
- </a>
1108
- <div class="searchstax-pagination-details">
1109
- {{ paginationData?.startResultIndex }} -
1110
- {{ paginationData?.endResultIndex }} of
1111
- {{ paginationData?.totalResults }}
1112
- </div>
1113
- <a
1114
- class="searchstax-pagination-next"
1115
- [class]="paginationData.isLastPage ? 'disabled' : ''"
1116
- (click)="nextPage($event, context)"
1117
- (keyup.enter)="nextPage($event, context)"
1118
- (keyup.space)="nextPage($event, context)"
1119
- tabindex="0"
1120
- id="searchstax-pagination-next"
1121
- >Next ></a
1122
- >
1123
- </div>
1124
- </div>
1125
- </ng-template>
1126
- `, isInline: true }); }
1127
- }
1128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationTemplateComponent, decorators: [{
1129
- type: Component,
1130
- args: [{
1131
- selector: "app-pagination-template",
1132
- template: `
1133
- <ng-template
1134
- #paginationTemplate
1135
- let-paginationData="paginationData"
1136
- let-previousPage="previousPage"
1137
- let-nextPage="nextPage"
1138
- let-context="context"
1139
- >
1140
- <div class="searchstax-pagination-container">
1141
- <div class="searchstax-pagination-content">
1142
- <a
1143
- class="searchstax-pagination-previous"
1144
- [class]="paginationData.isFirstPage ? 'disabled' : ''"
1145
- (click)="previousPage($event, context)"
1146
- (keyup.enter)="previousPage($event, context)"
1147
- (keyup.space)="previousPage($event, context)"
1148
- tabindex="0"
1149
- id="searchstax-pagination-previous"
1150
- >
1151
- &lt; Previous
1152
- </a>
1153
- <div class="searchstax-pagination-details">
1154
- {{ paginationData?.startResultIndex }} -
1155
- {{ paginationData?.endResultIndex }} of
1156
- {{ paginationData?.totalResults }}
1157
- </div>
1158
- <a
1159
- class="searchstax-pagination-next"
1160
- [class]="paginationData.isLastPage ? 'disabled' : ''"
1161
- (click)="nextPage($event, context)"
1162
- (keyup.enter)="nextPage($event, context)"
1163
- (keyup.space)="nextPage($event, context)"
1164
- tabindex="0"
1165
- id="searchstax-pagination-next"
1166
- >Next ></a
1167
- >
1168
- </div>
1169
- </div>
1170
- </ng-template>
1171
- `,
1172
- }]
1173
- }], propDecorators: { paginationTemplate: [{
1174
- type: ViewChild,
1175
- args: ["paginationTemplate"]
1176
- }] } });
1177
-
1178
- // reusable-template.component.ts
1179
- class PaginationInfiniteTemplateComponent {
1180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationInfiniteTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PaginationInfiniteTemplateComponent, selector: "app-pagination-infinite-template", viewQueries: [{ propertyName: "infiniteScrollTemplate", first: true, predicate: ["infiniteScrollTemplate"], descendants: true }], ngImport: i0, template: `
1182
- <ng-template
1183
- #infiniteScrollTemplate
1184
- let-paginationData="paginationData"
1185
- let-nextPage="nextPage"
1186
- let-context="context"
1187
- >
1188
- <div class="searchstax-pagination-container">
1189
- <div class="searchstax-pagination-content">
1190
- <a
1191
- class="searchstax-pagination-load-more"
1192
- (click)="nextPage($event, context)"
1193
- (keyup.enter)="nextPage($event, context)"
1194
- (keyup.space)="nextPage($event, context)"
1195
- tabindex="0"
1196
- >
1197
- Load More
1198
- </a>
1199
- </div>
1200
- </div>
1201
- </ng-template>
1202
- `, isInline: true }); }
1203
- }
1204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationInfiniteTemplateComponent, decorators: [{
1205
- type: Component,
1206
- args: [{
1207
- selector: "app-pagination-infinite-template",
1208
- template: `
1209
- <ng-template
1210
- #infiniteScrollTemplate
1211
- let-paginationData="paginationData"
1212
- let-nextPage="nextPage"
1213
- let-context="context"
1214
- >
1215
- <div class="searchstax-pagination-container">
1216
- <div class="searchstax-pagination-content">
1217
- <a
1218
- class="searchstax-pagination-load-more"
1219
- (click)="nextPage($event, context)"
1220
- (keyup.enter)="nextPage($event, context)"
1221
- (keyup.space)="nextPage($event, context)"
1222
- tabindex="0"
1223
- >
1224
- Load More
1225
- </a>
1226
- </div>
1227
- </div>
1228
- </ng-template>
1229
- `,
1230
- }]
1231
- }], propDecorators: { infiniteScrollTemplate: [{
1232
- type: ViewChild,
1233
- args: ["infiniteScrollTemplate"]
1234
- }] } });
1235
-
1236
- class SearchstaxSearchPaginationWidget {
1237
- constructor(storeServiceService) {
1238
- this.storeServiceService = storeServiceService;
1239
- this.paginationData = null;
1240
- this.rand = Math.random();
1241
- this.context = this;
1242
- this.paginationAdded = false;
1243
- }
1244
- ngOnInit() {
1245
- if (this.storeServiceService.searchstax) {
1246
- this.attachObservables();
1247
- setTimeout(() => {
1248
- this.addWidget();
1249
- }, 0);
1250
- }
1251
- else {
1252
- throw Error("Searchstax instance needs to be passed via props");
1253
- }
1254
- }
1255
- nextPage(event, context) {
1256
- event.stopImmediatePropagation();
1257
- if (!context.paginationData?.isLastPage) {
1258
- context.storeServiceService.searchstax.searchPaginationWidget?.nextPage(event);
1259
- }
1260
- }
1261
- previousPage(event, context) {
1262
- event.stopImmediatePropagation();
1263
- if (!context.paginationData?.isFirstPage) {
1264
- context.storeServiceService.searchstax.searchPaginationWidget?.previousPage(event);
1265
- }
1266
- }
1267
- addWidget() {
1268
- if (!this.paginationAdded &&
1269
- this.storeServiceService.searchstax.routerHelper) {
1270
- this.paginationAdded = true;
1271
- this.storeServiceService.searchstax.addPaginationWidget("searchstax-pagination-container" + this.rand, {});
1272
- }
1273
- }
1274
- attachObservables() {
1275
- this.storeServiceService.searchstax.dataLayer.$searchObject.subscribe((pagination) => {
1276
- this.addWidget();
1277
- });
1278
- this.storeServiceService.searchstax.dataLayer.$paginationData.subscribe((pagination) => {
1279
- this.paginationData = pagination;
1280
- });
1281
- }
1282
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchPaginationWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
1283
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchPaginationWidget, selector: "app-searchstax-search-pagination", inputs: { templateOverride: "templateOverride", infiniteScrollTemplateOverride: "infiniteScrollTemplateOverride" }, ngImport: i0, template: "<div [id]=\"'searchstax-pagination-container' + rand\">\n <ng-container\n *ngIf=\"\n paginationData?.totalResults &&\n !templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <app-pagination-template #ref></app-pagination-template>\n <ng-template\n *ngTemplateOutlet=\"ref.paginationTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"\n paginationData?.totalResults &&\n !infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <app-pagination-infinite-template #ref></app-pagination-infinite-template>\n <ng-template\n *ngTemplateOutlet=\"ref.infiniteScrollTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"infiniteScrollTemplateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PaginationTemplateComponent, selector: "app-pagination-template" }, { kind: "component", type: PaginationInfiniteTemplateComponent, selector: "app-pagination-infinite-template" }] }); }
1284
- }
1285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchPaginationWidget, decorators: [{
1286
- type: Component,
1287
- args: [{ selector: "app-searchstax-search-pagination", template: "<div [id]=\"'searchstax-pagination-container' + rand\">\n <ng-container\n *ngIf=\"\n paginationData?.totalResults &&\n !templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <app-pagination-template #ref></app-pagination-template>\n <ng-template\n *ngTemplateOutlet=\"ref.paginationTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"\n paginationData?.totalResults &&\n !infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <app-pagination-infinite-template #ref></app-pagination-infinite-template>\n <ng-template\n *ngTemplateOutlet=\"ref.infiniteScrollTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"infiniteScrollTemplateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
1288
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { templateOverride: [{
1289
- type: Input
1290
- }], infiniteScrollTemplateOverride: [{
1291
- type: Input
1292
- }] } });
1293
-
1294
- // reusable-template.component.ts
1295
- class FacetDesktopTemplateComponent {
1296
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetDesktopTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1297
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FacetDesktopTemplateComponent, selector: "app-facet-desktop-template", viewQueries: [{ propertyName: "templateOverrideDesktop", first: true, predicate: ["templateOverrideDesktop"], descendants: true }], ngImport: i0, template: `
1298
- <ng-template
1299
- #templateOverrideDesktop
1300
- let-facetsTemplateDataDesktop="facetsTemplateDataDesktop"
1301
- let-isNotDeactivated="isNotDeactivated"
1302
- let-context="context"
1303
- let-toggleFacetGroup="toggleFacetGroup"
1304
- let-facetValues="facetValues"
1305
- let-isChecked="isChecked"
1306
- let-selectFacet="selectFacet"
1307
- let-showMoreLessDesktop="showMoreLessDesktop"
1308
- >
1309
- <div class="searchstax-facets-container-desktop">
1310
- <div
1311
- class="searchstax-facet-container"
1312
- *ngFor="let facet of facetsTemplateDataDesktop?.facets"
1313
- [class]="{ active: isNotDeactivated(facet.name, context) }"
1314
- >
1315
- <div>
1316
- <div
1317
- class="searchstax-facet-title-container"
1318
- (click)="toggleFacetGroup(facet.name, context)"
1319
- >
1320
- <div class="searchstax-facet-title">
1321
- {{ facet.label }}
1322
- </div>
1323
- <div class="searchstax-facet-title-arrow active"></div>
1324
- </div>
1325
- <div class="searchstax-facet-values-container" aria-live="polite">
1326
- <div
1327
- *ngFor="let facetValue of facetValues(facet); index as key"
1328
- class="searchstax-facet-value-container"
1329
- [class]="{
1330
- 'searchstax-facet-value-disabled': facetValue.disabled
1331
- }"
1332
- #ref
1333
- >
1334
- <div class="searchstax-facet-input">
1335
- <input
1336
- type="checkbox"
1337
- class="searchstax-facet-input-checkbox"
1338
- [checked]="isChecked(facetValue, context)"
1339
- [attr.aria-label]="
1340
- facetValue.value + ' ' + facetValue.count
1341
- "
1342
- [disabled]="facetValue.disabled"
1343
- (click)="
1344
- selectFacet(ref, $event, facetValue, true, context)
1345
- "
1346
- />
1347
- </div>
1348
- <div
1349
- class="searchstax-facet-value-label"
1350
- (click)="selectFacet(ref, $event, facetValue, false, context)"
1351
- >
1352
- {{ facetValue.value }}
1353
- </div>
1354
- <div
1355
- class="searchstax-facet-value-count"
1356
- (click)="selectFacet(ref, $event, facetValue, false, context)"
1357
- >
1358
- ({{ facetValue.count }})
1359
- </div>
1360
- </div>
1361
- <div
1362
- class="searchstax-facet-show-more-container"
1363
- *ngIf="facet.hasMoreFacets"
1364
- >
1365
- <div
1366
- class="searchstax-facet-show-more-container"
1367
- (click)="showMoreLessDesktop($event, facet, context)"
1368
- (keyup.enter)="showMoreLessDesktop($event, facet, context)"
1369
- (keyup.space)="showMoreLessDesktop($event, facet, context)"
1370
- tabindex="0"
1371
- >
1372
- <div
1373
- *ngIf="facet.showingAllFacets"
1374
- class="searchstax-facet-show-less-button searchstax-facet-show-button"
1375
- >
1376
- less
1377
- </div>
1378
- <div
1379
- *ngIf="!facet.showingAllFacets"
1380
- class="searchstax-facet-show-more-button searchstax-facet-show-button"
1381
- >
1382
- more
1383
- </div>
1384
- </div>
1385
- </div>
1386
- </div>
1387
- </div>
1388
- </div>
1389
- </div>
1390
- </ng-template>
1391
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1392
- }
1393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetDesktopTemplateComponent, decorators: [{
1394
- type: Component,
1395
- args: [{
1396
- selector: "app-facet-desktop-template",
1397
- template: `
1398
- <ng-template
1399
- #templateOverrideDesktop
1400
- let-facetsTemplateDataDesktop="facetsTemplateDataDesktop"
1401
- let-isNotDeactivated="isNotDeactivated"
1402
- let-context="context"
1403
- let-toggleFacetGroup="toggleFacetGroup"
1404
- let-facetValues="facetValues"
1405
- let-isChecked="isChecked"
1406
- let-selectFacet="selectFacet"
1407
- let-showMoreLessDesktop="showMoreLessDesktop"
1408
- >
1409
- <div class="searchstax-facets-container-desktop">
1410
- <div
1411
- class="searchstax-facet-container"
1412
- *ngFor="let facet of facetsTemplateDataDesktop?.facets"
1413
- [class]="{ active: isNotDeactivated(facet.name, context) }"
1414
- >
1415
- <div>
1416
- <div
1417
- class="searchstax-facet-title-container"
1418
- (click)="toggleFacetGroup(facet.name, context)"
1419
- >
1420
- <div class="searchstax-facet-title">
1421
- {{ facet.label }}
1422
- </div>
1423
- <div class="searchstax-facet-title-arrow active"></div>
1424
- </div>
1425
- <div class="searchstax-facet-values-container" aria-live="polite">
1426
- <div
1427
- *ngFor="let facetValue of facetValues(facet); index as key"
1428
- class="searchstax-facet-value-container"
1429
- [class]="{
1430
- 'searchstax-facet-value-disabled': facetValue.disabled
1431
- }"
1432
- #ref
1433
- >
1434
- <div class="searchstax-facet-input">
1435
- <input
1436
- type="checkbox"
1437
- class="searchstax-facet-input-checkbox"
1438
- [checked]="isChecked(facetValue, context)"
1439
- [attr.aria-label]="
1440
- facetValue.value + ' ' + facetValue.count
1441
- "
1442
- [disabled]="facetValue.disabled"
1443
- (click)="
1444
- selectFacet(ref, $event, facetValue, true, context)
1445
- "
1446
- />
1447
- </div>
1448
- <div
1449
- class="searchstax-facet-value-label"
1450
- (click)="selectFacet(ref, $event, facetValue, false, context)"
1451
- >
1452
- {{ facetValue.value }}
1453
- </div>
1454
- <div
1455
- class="searchstax-facet-value-count"
1456
- (click)="selectFacet(ref, $event, facetValue, false, context)"
1457
- >
1458
- ({{ facetValue.count }})
1459
- </div>
1460
- </div>
1461
- <div
1462
- class="searchstax-facet-show-more-container"
1463
- *ngIf="facet.hasMoreFacets"
1464
- >
1465
- <div
1466
- class="searchstax-facet-show-more-container"
1467
- (click)="showMoreLessDesktop($event, facet, context)"
1468
- (keyup.enter)="showMoreLessDesktop($event, facet, context)"
1469
- (keyup.space)="showMoreLessDesktop($event, facet, context)"
1470
- tabindex="0"
1471
- >
1472
- <div
1473
- *ngIf="facet.showingAllFacets"
1474
- class="searchstax-facet-show-less-button searchstax-facet-show-button"
1475
- >
1476
- less
1477
- </div>
1478
- <div
1479
- *ngIf="!facet.showingAllFacets"
1480
- class="searchstax-facet-show-more-button searchstax-facet-show-button"
1481
- >
1482
- more
1483
- </div>
1484
- </div>
1485
- </div>
1486
- </div>
1487
- </div>
1488
- </div>
1489
- </div>
1490
- </ng-template>
1491
- `,
1492
- }]
1493
- }], propDecorators: { templateOverrideDesktop: [{
1494
- type: ViewChild,
1495
- args: ["templateOverrideDesktop"]
1496
- }] } });
1497
-
1498
- // reusable-template.component.ts
1499
- class FacetMobileTemplateComponent {
1500
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetMobileTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1501
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FacetMobileTemplateComponent, selector: "app-facet-mobile-template", viewQueries: [{ propertyName: "templateOverrideMobile", first: true, predicate: ["templateOverrideMobile"], descendants: true }], ngImport: i0, template: `
1502
- <ng-template
1503
- #templateOverrideMobile
1504
- let-isNotDeactivated="isNotDeactivated"
1505
- let-context="context"
1506
- let-toggleFacetGroup="toggleFacetGroup"
1507
- let-facetValues="facetValues"
1508
- let-isChecked="isChecked"
1509
- let-selectFacet="selectFacet"
1510
- let-openOverlay="openOverlay"
1511
- let-selectedFacetsCheckboxes="selectedFacetsCheckboxes"
1512
- let-unselectFacet="unselectFacet"
1513
- let-unselectAll="unselectAll"
1514
- let-facetMobileData="facetMobileData"
1515
- let-facetsTemplateDataMobile="facetsTemplateDataMobile"
1516
- let-closeOverlay="closeOverlay"
1517
- let-showMoreLessDesktop="showMoreLessDesktop"
1518
- let-showMoreLessMobile="showMoreLessMobile"
1519
- >
1520
- <div class="searchstax-facets-container-mobile">
1521
- <div class="searchstax-facets-pills-container">
1522
- <div
1523
- class="searchstax-facets-pill searchstax-facets-pill-filter-by"
1524
- (click)="openOverlay(context)"
1525
- >
1526
- <div class="searchstax-facets-pill-label">Filter By</div>
1527
- </div>
1528
- <div class="searchstax-facets-pills-selected">
1529
- <div
1530
- class="searchstax-facets-pill searchstax-facets-pill-facets"
1531
- *ngFor="let facet of selectedFacetsCheckboxes"
1532
- (click)="unselectFacet(facet, context)"
1533
- >
1534
- <div class="searchstax-facets-pill-label">
1535
- {{ facet.value }} ({{ facet.count }})
1536
- </div>
1537
- <div class="searchstax-facets-pill-icon-close"></div>
1538
- </div>
1539
- </div>
1540
- <div
1541
- class="searchstax-facets-pill searchstax-clear-filters searchstax-facets-pill-clear-all"
1542
- *ngIf="selectedFacetsCheckboxes.length"
1543
- (click)="unselectAll(context)"
1544
- >
1545
- <div class="searchstax-facets-pill-label">Clear Filters</div>
1546
- </div>
1547
- </div>
1548
- <div
1549
- class="searchstax-facets-mobile-overlay"
1550
- [class]="{
1551
- 'searchstax-show': facetMobileData(facetsTemplateDataMobile)
1552
- ?.overlayOpened
1553
- }"
1554
- >
1555
- <div class="searchstax-facets-mobile-overlay-header">
1556
- <div class="searchstax-facets-mobile-overlay-header-title">
1557
- Filter By
1558
- </div>
1559
- <div
1560
- class="searchstax-search-close"
1561
- (click)="closeOverlay(context)"
1562
- ></div>
1563
- </div>
1564
- <div class="searchstax-facets-container-mobile">
1565
- <div
1566
- *ngFor="let facet of facetsTemplateDataMobile?.facets"
1567
- class="searchstax-facet-container"
1568
- [class]="{
1569
- active: isNotDeactivated(facet.name, context)
1570
- }"
1571
- >
1572
- <div>
1573
- <div
1574
- class="searchstax-facet-title-container"
1575
- (click)="toggleFacetGroup(facet.name, context)"
1576
- >
1577
- <div class="searchstax-facet-title">
1578
- {{ facet.label }}
1579
- </div>
1580
- <div class="searchstax-facet-title-arrow active"></div>
1581
- </div>
1582
- <div
1583
- class="searchstax-facet-values-container"
1584
- aria-live="polite"
1585
- >
1586
- <div
1587
- *ngFor="let facetValue of facetValues(facet); index as key"
1588
- class="searchstax-facet-value-container"
1589
- [class]="{
1590
- 'searchstax-facet-value-disabled': facetValue.disabled
1591
- }"
1592
- #ref
1593
- >
1594
- <div class="searchstax-facet-input">
1595
- <input
1596
- type="checkbox"
1597
- class="searchstax-facet-input-checkbox"
1598
- [checked]="isChecked(facetValue, context)"
1599
- [attr.aria-label]="
1600
- facetValue.value + ' ' + facetValue.count
1601
- "
1602
- [disabled]="facetValue.disabled"
1603
- (click)="
1604
- selectFacet(ref, $event, facetValue, true, context)
1605
- "
1606
- />
1607
- </div>
1608
- <div
1609
- class="searchstax-facet-value-label"
1610
- (click)="
1611
- selectFacet(ref, $event, facetValue, false, context)
1612
- "
1613
- >
1614
- {{ facetValue.value }}
1615
- </div>
1616
- <div
1617
- class="searchstax-facet-value-count"
1618
- (click)="
1619
- selectFacet(ref, $event, facetValue, false, context)
1620
- "
1621
- >
1622
- ({{ facetValue.count }})
1623
- </div>
1624
- </div>
1625
- <div
1626
- class="searchstax-facet-show-more-container"
1627
- *ngIf="facet.hasMoreFacets"
1628
- >
1629
- <div
1630
- class="searchstax-facet-show-more-container"
1631
- (click)="showMoreLessMobile($event, facet, context)"
1632
- (keyup.enter)="showMoreLessMobile($event, facet, context)"
1633
- (keyup.space)="showMoreLessMobile($event, facet, context)"
1634
- tabindex="0"
1635
- >
1636
- <div
1637
- *ngIf="facet.showingAllFacets"
1638
- class="searchstax-facet-show-less-button searchstax-facet-show-button"
1639
- >
1640
- less
1641
- </div>
1642
- <div
1643
- *ngIf="!facet.showingAllFacets"
1644
- class="searchstax-facet-show-more-button searchstax-facet-show-button"
1645
- >
1646
- more
1647
- </div>
1648
- </div>
1649
- </div>
1650
- </div>
1651
- </div>
1652
- </div>
1653
- </div>
1654
- <button
1655
- class="searchstax-facets-mobile-overlay-done"
1656
- (click)="closeOverlay(context)"
1657
- >
1658
- Done
1659
- </button>
1660
- </div>
1661
- </div>
1662
- </ng-template>
1663
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1664
- }
1665
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetMobileTemplateComponent, decorators: [{
1666
- type: Component,
1667
- args: [{
1668
- selector: "app-facet-mobile-template",
1669
- template: `
1670
- <ng-template
1671
- #templateOverrideMobile
1672
- let-isNotDeactivated="isNotDeactivated"
1673
- let-context="context"
1674
- let-toggleFacetGroup="toggleFacetGroup"
1675
- let-facetValues="facetValues"
1676
- let-isChecked="isChecked"
1677
- let-selectFacet="selectFacet"
1678
- let-openOverlay="openOverlay"
1679
- let-selectedFacetsCheckboxes="selectedFacetsCheckboxes"
1680
- let-unselectFacet="unselectFacet"
1681
- let-unselectAll="unselectAll"
1682
- let-facetMobileData="facetMobileData"
1683
- let-facetsTemplateDataMobile="facetsTemplateDataMobile"
1684
- let-closeOverlay="closeOverlay"
1685
- let-showMoreLessDesktop="showMoreLessDesktop"
1686
- let-showMoreLessMobile="showMoreLessMobile"
1687
- >
1688
- <div class="searchstax-facets-container-mobile">
1689
- <div class="searchstax-facets-pills-container">
1690
- <div
1691
- class="searchstax-facets-pill searchstax-facets-pill-filter-by"
1692
- (click)="openOverlay(context)"
1693
- >
1694
- <div class="searchstax-facets-pill-label">Filter By</div>
1695
- </div>
1696
- <div class="searchstax-facets-pills-selected">
1697
- <div
1698
- class="searchstax-facets-pill searchstax-facets-pill-facets"
1699
- *ngFor="let facet of selectedFacetsCheckboxes"
1700
- (click)="unselectFacet(facet, context)"
1701
- >
1702
- <div class="searchstax-facets-pill-label">
1703
- {{ facet.value }} ({{ facet.count }})
1704
- </div>
1705
- <div class="searchstax-facets-pill-icon-close"></div>
1706
- </div>
1707
- </div>
1708
- <div
1709
- class="searchstax-facets-pill searchstax-clear-filters searchstax-facets-pill-clear-all"
1710
- *ngIf="selectedFacetsCheckboxes.length"
1711
- (click)="unselectAll(context)"
1712
- >
1713
- <div class="searchstax-facets-pill-label">Clear Filters</div>
1714
- </div>
1715
- </div>
1716
- <div
1717
- class="searchstax-facets-mobile-overlay"
1718
- [class]="{
1719
- 'searchstax-show': facetMobileData(facetsTemplateDataMobile)
1720
- ?.overlayOpened
1721
- }"
1722
- >
1723
- <div class="searchstax-facets-mobile-overlay-header">
1724
- <div class="searchstax-facets-mobile-overlay-header-title">
1725
- Filter By
1726
- </div>
1727
- <div
1728
- class="searchstax-search-close"
1729
- (click)="closeOverlay(context)"
1730
- ></div>
1731
- </div>
1732
- <div class="searchstax-facets-container-mobile">
1733
- <div
1734
- *ngFor="let facet of facetsTemplateDataMobile?.facets"
1735
- class="searchstax-facet-container"
1736
- [class]="{
1737
- active: isNotDeactivated(facet.name, context)
1738
- }"
1739
- >
1740
- <div>
1741
- <div
1742
- class="searchstax-facet-title-container"
1743
- (click)="toggleFacetGroup(facet.name, context)"
1744
- >
1745
- <div class="searchstax-facet-title">
1746
- {{ facet.label }}
1747
- </div>
1748
- <div class="searchstax-facet-title-arrow active"></div>
1749
- </div>
1750
- <div
1751
- class="searchstax-facet-values-container"
1752
- aria-live="polite"
1753
- >
1754
- <div
1755
- *ngFor="let facetValue of facetValues(facet); index as key"
1756
- class="searchstax-facet-value-container"
1757
- [class]="{
1758
- 'searchstax-facet-value-disabled': facetValue.disabled
1759
- }"
1760
- #ref
1761
- >
1762
- <div class="searchstax-facet-input">
1763
- <input
1764
- type="checkbox"
1765
- class="searchstax-facet-input-checkbox"
1766
- [checked]="isChecked(facetValue, context)"
1767
- [attr.aria-label]="
1768
- facetValue.value + ' ' + facetValue.count
1769
- "
1770
- [disabled]="facetValue.disabled"
1771
- (click)="
1772
- selectFacet(ref, $event, facetValue, true, context)
1773
- "
1774
- />
1775
- </div>
1776
- <div
1777
- class="searchstax-facet-value-label"
1778
- (click)="
1779
- selectFacet(ref, $event, facetValue, false, context)
1780
- "
1781
- >
1782
- {{ facetValue.value }}
1783
- </div>
1784
- <div
1785
- class="searchstax-facet-value-count"
1786
- (click)="
1787
- selectFacet(ref, $event, facetValue, false, context)
1788
- "
1789
- >
1790
- ({{ facetValue.count }})
1791
- </div>
1792
- </div>
1793
- <div
1794
- class="searchstax-facet-show-more-container"
1795
- *ngIf="facet.hasMoreFacets"
1796
- >
1797
- <div
1798
- class="searchstax-facet-show-more-container"
1799
- (click)="showMoreLessMobile($event, facet, context)"
1800
- (keyup.enter)="showMoreLessMobile($event, facet, context)"
1801
- (keyup.space)="showMoreLessMobile($event, facet, context)"
1802
- tabindex="0"
1803
- >
1804
- <div
1805
- *ngIf="facet.showingAllFacets"
1806
- class="searchstax-facet-show-less-button searchstax-facet-show-button"
1807
- >
1808
- less
1809
- </div>
1810
- <div
1811
- *ngIf="!facet.showingAllFacets"
1812
- class="searchstax-facet-show-more-button searchstax-facet-show-button"
1813
- >
1814
- more
1815
- </div>
1816
- </div>
1817
- </div>
1818
- </div>
1819
- </div>
1820
- </div>
1821
- </div>
1822
- <button
1823
- class="searchstax-facets-mobile-overlay-done"
1824
- (click)="closeOverlay(context)"
1825
- >
1826
- Done
1827
- </button>
1828
- </div>
1829
- </div>
1830
- </ng-template>
1831
- `,
1832
- }]
1833
- }], propDecorators: { templateOverrideMobile: [{
1834
- type: ViewChild,
1835
- args: ["templateOverrideMobile"]
1836
- }] } });
1837
-
1838
- class SearchstaxSearchFacetsWidget {
1839
- // @ViewChildren("facetContainers") facetContainers: QueryList<ElementRef>;
1840
- constructor(storeServiceService) {
1841
- this.storeServiceService = storeServiceService;
1842
- this.facetsTemplateDataDesktop = null;
1843
- this.facetsTemplateDataMobile = null;
1844
- this.context = this;
1845
- this.selectedFacetsCheckboxes = [];
1846
- this.selectedFacetsRange = [];
1847
- this.rand = Math.random();
1848
- }
1849
- ngOnInit() {
1850
- if (this.storeServiceService.searchstax) {
1851
- this.attachObservables();
1852
- setTimeout(() => {
1853
- this.addWidget();
1854
- }, 0);
1855
- }
1856
- else {
1857
- throw Error("Searchstax instance needs to be passed via props");
1858
- }
1859
- }
1860
- addWidget() {
1861
- this.storeServiceService.searchstax.addFacetsWidget('searchstax-facets-container' + this.rand, {
1862
- facetingType: this.facetingType,
1863
- specificFacets: this.specificFacets,
1864
- itemsPerPageDesktop: this.itemsPerPageDesktop,
1865
- itemsPerPageMobile: this.itemsPerPageMobile
1866
- });
1867
- }
1868
- attachObservables() {
1869
- this.storeServiceService.searchstax.dataLayer.$facetsTemplateData.subscribe((data) => {
1870
- if (data?.isMobile) {
1871
- this.facetsTemplateDataMobile = data;
1872
- }
1873
- else {
1874
- this.facetsTemplateDataDesktop = data;
1875
- }
1876
- });
1877
- this.storeServiceService.searchstax.dataLayer.$selectedFacetsTemplateData.subscribe((data) => {
1878
- const da = data ?? [];
1879
- this.selectedFacetsCheckboxes = da.filter((d) => d.type === 'checkbox');
1880
- });
1881
- }
1882
- unselectFacet(facet, context) {
1883
- context.storeServiceService.searchstax.searchFacetsWidget?.unselectFacet(facet);
1884
- }
1885
- unselectAll(context) {
1886
- context.storeServiceService.searchstax.searchFacetsWidget?.removeSelectedFacets();
1887
- }
1888
- isNotDeactivated(name, context) {
1889
- return !context.storeServiceService.searchstax.searchFacetsWidget?.deactivatedFacets[name];
1890
- }
1891
- toggleFacetGroup(name, context) {
1892
- if (context.storeServiceService.searchstax.searchFacetsWidget)
1893
- if (context.isNotDeactivated(name, context)) {
1894
- context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = true;
1895
- }
1896
- else {
1897
- context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = false;
1898
- }
1899
- }
1900
- isChecked(facetValue, context) {
1901
- return context.storeServiceService.searchstax.searchFacetsWidget?.isChecked(facetValue);
1902
- }
1903
- selectFacet(el, event, data, isInput, context) {
1904
- const wrapperDiv = document.createElement('div');
1905
- wrapperDiv.innerHTML = el.outerHTML;
1906
- context.storeServiceService.searchstax.searchFacetsWidget?.onFacetSelect(event, data, el, isInput);
1907
- }
1908
- showMoreLessDesktop(e, data, context) {
1909
- context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, false);
1910
- }
1911
- showMoreLessMobile(e, data, context) {
1912
- context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, true);
1913
- }
1914
- openOverlay(context) {
1915
- context.storeServiceService.searchstax.searchFacetsWidget?.openOverlay();
1916
- }
1917
- closeOverlay(context) {
1918
- context.storeServiceService.searchstax.searchFacetsWidget?.closeOverlay();
1919
- }
1920
- facetValues(facet) {
1921
- return facet.values;
1922
- }
1923
- facetMobileData(facet) {
1924
- return facet;
1925
- }
1926
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchFacetsWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
1927
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchFacetsWidget, selector: "app-searchstax-search-facets", inputs: { templateOverrideMobile: "templateOverrideMobile", templateOverrideDesktop: "templateOverrideDesktop", facetingType: "facetingType", itemsPerPageDesktop: "itemsPerPageDesktop", itemsPerPageMobile: "itemsPerPageMobile", specificFacets: "specificFacets" }, ngImport: i0, template: "<div [id]=\"'searchstax-facets-container' + rand\">\n <ng-container\n *ngIf=\"\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n !templateOverrideDesktop\n \"\n >\n <app-facet-desktop-template #ref></app-facet-desktop-template>\n <ng-template\n *ngTemplateOutlet=\"ref.templateOverrideDesktop; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n templateOverrideDesktop\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverrideDesktop; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n !templateOverrideMobile\n \"\n >\n <app-facet-mobile-template #ref></app-facet-mobile-template>\n <ng-template\n *ngTemplateOutlet=\"ref.templateOverrideMobile; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n templateOverrideMobile\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverrideMobile; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FacetDesktopTemplateComponent, selector: "app-facet-desktop-template" }, { kind: "component", type: FacetMobileTemplateComponent, selector: "app-facet-mobile-template" }] }); }
1928
- }
1929
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchFacetsWidget, decorators: [{
1930
- type: Component,
1931
- args: [{ selector: "app-searchstax-search-facets", template: "<div [id]=\"'searchstax-facets-container' + rand\">\n <ng-container\n *ngIf=\"\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n !templateOverrideDesktop\n \"\n >\n <app-facet-desktop-template #ref></app-facet-desktop-template>\n <ng-template\n *ngTemplateOutlet=\"ref.templateOverrideDesktop; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n templateOverrideDesktop\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverrideDesktop; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n !templateOverrideMobile\n \"\n >\n <app-facet-mobile-template #ref></app-facet-mobile-template>\n <ng-template\n *ngTemplateOutlet=\"ref.templateOverrideMobile; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n templateOverrideMobile\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverrideMobile; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
1932
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { templateOverrideMobile: [{
1933
- type: Input
1934
- }], templateOverrideDesktop: [{
1935
- type: Input
1936
- }], facetingType: [{
1937
- type: Input
1938
- }], itemsPerPageDesktop: [{
1939
- type: Input
1940
- }], itemsPerPageMobile: [{
1941
- type: Input
1942
- }], specificFacets: [{
1943
- type: Input
1944
- }] } });
1945
-
1946
- // reusable-template.component.ts
1947
- class SortingTemplateComponent {
1948
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SortingTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1949
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SortingTemplateComponent, selector: "app-sorting-template", viewQueries: [{ propertyName: "sortingTemplate", first: true, predicate: ["sortingTemplateOverride"], descendants: true }], ngImport: i0, template: `
1950
- <ng-template
1951
- #sortingTemplateOverride
1952
- let-selectedSorting="selectedSorting"
1953
- let-orderChange="orderChange"
1954
- let-context="context"
1955
- >
1956
- <div class="searchstax-sorting-container">
1957
- <label
1958
- class="searchstax-sorting-label"
1959
- for="searchstax-search-order-select"
1960
- >Sort By</label
1961
- >
1962
- <select
1963
- id="searchstax-search-order-select"
1964
- class="searchstax-search-order-select"
1965
- [(ngModel)]="context.selectedSorting"
1966
- (change)="orderChange($event, context)"
1967
- >
1968
- <option
1969
- *ngFor="let sortOption of context.sortingData.sortOptions"
1970
- [value]="sortOption.key"
1971
- >
1972
- {{ sortOption.value }}
1973
- </option>
1974
- </select>
1975
- </div>
1976
- </ng-template>
1977
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
1978
- }
1979
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SortingTemplateComponent, decorators: [{
1980
- type: Component,
1981
- args: [{
1982
- selector: "app-sorting-template",
1983
- template: `
1984
- <ng-template
1985
- #sortingTemplateOverride
1986
- let-selectedSorting="selectedSorting"
1987
- let-orderChange="orderChange"
1988
- let-context="context"
1989
- >
1990
- <div class="searchstax-sorting-container">
1991
- <label
1992
- class="searchstax-sorting-label"
1993
- for="searchstax-search-order-select"
1994
- >Sort By</label
1995
- >
1996
- <select
1997
- id="searchstax-search-order-select"
1998
- class="searchstax-search-order-select"
1999
- [(ngModel)]="context.selectedSorting"
2000
- (change)="orderChange($event, context)"
2001
- >
2002
- <option
2003
- *ngFor="let sortOption of context.sortingData.sortOptions"
2004
- [value]="sortOption.key"
2005
- >
2006
- {{ sortOption.value }}
2007
- </option>
2008
- </select>
2009
- </div>
2010
- </ng-template>
2011
- `,
2012
- }]
2013
- }], propDecorators: { sortingTemplate: [{
2014
- type: ViewChild,
2015
- args: ["sortingTemplateOverride"]
2016
- }] } });
2017
-
2018
- class SearchstaxSearchSortingWidget {
2019
- constructor(storeServiceService) {
2020
- this.storeServiceService = storeServiceService;
2021
- this.sortingData = null;
2022
- this.rand = Math.random();
2023
- this.context = this;
2024
- this.selectedSorting = "";
2025
- }
2026
- ngOnInit() {
2027
- if (this.storeServiceService.searchstax) {
2028
- this.attachObservables();
2029
- setTimeout(() => {
2030
- this.storeServiceService.searchstax.addSearchSortingWidget("search-sorting-container" + this.rand, {});
2031
- }, 0);
2032
- }
2033
- else {
2034
- throw Error("Searchstax instance needs to be passed via props");
2035
- }
2036
- }
2037
- orderChange(e, context) {
2038
- e.stopImmediatePropagation();
2039
- context.storeServiceService.searchstax.searchSortingWidget?.setOrderQuery(e.target.value);
2040
- }
2041
- attachObservables() {
2042
- this.storeServiceService.searchstax.dataLayer.$searchSortingData.subscribe((sortingData) => {
2043
- this.sortingData = sortingData;
2044
- });
2045
- this.storeServiceService.searchstax.dataLayer.$searchObject.subscribe((searchObject) => {
2046
- this.selectedSorting = decodeURIComponent(searchObject?.order ?? '');
2047
- });
2048
- }
2049
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchSortingWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
2050
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchSortingWidget, selector: "app-searchstax-search-sorting", inputs: { templateOverride: "templateOverride" }, ngImport: i0, template: "<div class=\"search-feedback-container\" [id]=\"'search-sorting-container' + rand\">\n <ng-container\n *ngIf=\"\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n !templateOverride\n \"\n >\n <app-sorting-template #ref></app-sorting-template>\n <ng-template\n *ngTemplateOutlet=\"ref.sortingTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SortingTemplateComponent, selector: "app-sorting-template" }] }); }
2051
- }
2052
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchSortingWidget, decorators: [{
2053
- type: Component,
2054
- args: [{ selector: "app-searchstax-search-sorting", template: "<div class=\"search-feedback-container\" [id]=\"'search-sorting-container' + rand\">\n <ng-container\n *ngIf=\"\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n !templateOverride\n \"\n >\n <app-sorting-template #ref></app-sorting-template>\n <ng-template\n *ngTemplateOutlet=\"ref.sortingTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div\n *ngIf=\"\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
2055
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { templateOverride: [{
2056
- type: Input
2057
- }] } });
2058
-
2059
- // reusable-template.component.ts
2060
- class AnswerTemplateComponent {
2061
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnswerTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2062
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AnswerTemplateComponent, selector: "app-answer-template", viewQueries: [{ propertyName: "answerTemplate", first: true, predicate: ["answerTemplate"], descendants: true }], ngImport: i0, template: `
2063
- <ng-template
2064
- #answerTemplate
2065
- let-answerData="answerData"
2066
- let-showMore="showMore"
2067
- let-context="context"
2068
- >
2069
- <div class="searchstax-answer-wrap">
2070
- <div class="searchstax-answer-icon"></div>
2071
- <div>
2072
- <div
2073
- [class]="{
2074
- 'searchstax-answer-container': true,
2075
- 'searchstax-answer-show-more': answerData.showMoreButtonVisible
2076
- }"
2077
- >
2078
- <div class="searchstax-answer-title">Smart Answers</div>
2079
- <div
2080
- class="searchstax-answer-error"
2081
- *ngIf="answerData.shouldShowAnswerError"
2082
- [innerHTML]="answerData.answerErrorMessage"
2083
- ></div>
2084
- <div
2085
- class="searchstax-answer-description"
2086
- [innerHTML]="answerData.fullAnswerFormatted"
2087
- ></div>
2088
- <div
2089
- *ngIf="answerData.answerLoading"
2090
- class="searchstax-answer-loading"
2091
- ></div>
2092
- </div>
2093
- <div
2094
- *ngIf="answerData.showMoreButtonVisible"
2095
- class="searchstax-answer-load-more-button-container"
2096
- >
2097
- <button
2098
- class="searchstax-answer-load-more-button"
2099
- (click)="showMore($event, context)"
2100
- >
2101
- Read More
2102
- </button>
2103
- </div>
2104
- </div>
2105
- <div class="searchstax-answer-footer">
2106
- <div id="feedbackWidgetContainer"></div>
2107
- <div class="searchstax-lightweight-widget-separator-inline"></div>
2108
- <p class="searchstax-disclaimer">Generative AI is Experimental</p>
2109
- </div>
2110
- </div>
2111
- </ng-template>
2112
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
2113
- }
2114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnswerTemplateComponent, decorators: [{
2115
- type: Component,
2116
- args: [{
2117
- selector: "app-answer-template",
2118
- template: `
2119
- <ng-template
2120
- #answerTemplate
2121
- let-answerData="answerData"
2122
- let-showMore="showMore"
2123
- let-context="context"
2124
- >
2125
- <div class="searchstax-answer-wrap">
2126
- <div class="searchstax-answer-icon"></div>
2127
- <div>
2128
- <div
2129
- [class]="{
2130
- 'searchstax-answer-container': true,
2131
- 'searchstax-answer-show-more': answerData.showMoreButtonVisible
2132
- }"
2133
- >
2134
- <div class="searchstax-answer-title">Smart Answers</div>
2135
- <div
2136
- class="searchstax-answer-error"
2137
- *ngIf="answerData.shouldShowAnswerError"
2138
- [innerHTML]="answerData.answerErrorMessage"
2139
- ></div>
2140
- <div
2141
- class="searchstax-answer-description"
2142
- [innerHTML]="answerData.fullAnswerFormatted"
2143
- ></div>
2144
- <div
2145
- *ngIf="answerData.answerLoading"
2146
- class="searchstax-answer-loading"
2147
- ></div>
2148
- </div>
2149
- <div
2150
- *ngIf="answerData.showMoreButtonVisible"
2151
- class="searchstax-answer-load-more-button-container"
2152
- >
2153
- <button
2154
- class="searchstax-answer-load-more-button"
2155
- (click)="showMore($event, context)"
2156
- >
2157
- Read More
2158
- </button>
2159
- </div>
2160
- </div>
2161
- <div class="searchstax-answer-footer">
2162
- <div id="feedbackWidgetContainer"></div>
2163
- <div class="searchstax-lightweight-widget-separator-inline"></div>
2164
- <p class="searchstax-disclaimer">Generative AI is Experimental</p>
2165
- </div>
2166
- </div>
2167
- </ng-template>
2168
- `,
2169
- }]
2170
- }], propDecorators: { answerTemplate: [{
2171
- type: ViewChild,
2172
- args: ["answerTemplate"]
2173
- }] } });
2174
-
2175
- class SearchstaxSearchAnswerWidget {
2176
- constructor(storeServiceService) {
2177
- this.storeServiceService = storeServiceService;
2178
- this.answerData = null;
2179
- this.rand = Math.random();
2180
- this.context = this;
2181
- }
2182
- ngOnInit() {
2183
- if (this.storeServiceService.searchstax) {
2184
- this.attachObservables();
2185
- setTimeout(() => {
2186
- this.storeServiceService.searchstax.addAnswerWidget('searchstax-answer-container' + this.rand, { showShowMoreAfterWordCount: this.showShowMoreAfterWordCount, feedbackwidget: this.feedbackwidget });
2187
- }, 0);
2188
- }
2189
- else {
2190
- throw Error("Searchstax instance needs to be passed via props");
2191
- }
2192
- }
2193
- showMore(event, context) {
2194
- if (context.storeServiceService.searchstax) {
2195
- context.storeServiceService.searchstax.answerWidget?.showMore(event);
2196
- }
2197
- }
2198
- attachObservables() {
2199
- this.storeServiceService.searchstax.dataLayer.$answerData.subscribe((answerData) => {
2200
- this.answerData = answerData;
2201
- });
2202
- }
2203
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchAnswerWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
2204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchAnswerWidget, selector: "app-searchstax-answer", inputs: { templateOverride: "templateOverride", feedbackwidget: "feedbackwidget", showShowMoreAfterWordCount: "showShowMoreAfterWordCount" }, ngImport: i0, template: "<div [id]=\"'searchstax-answer-container' + rand\">\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n !templateOverride\n \"\n >\n <app-answer-template #ref></app-answer-template>\n <ng-template\n [ngTemplateOutlet]=\"ref.answerTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AnswerTemplateComponent, selector: "app-answer-template" }] }); }
2205
- }
2206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchAnswerWidget, decorators: [{
2207
- type: Component,
2208
- args: [{ selector: "app-searchstax-answer", template: "<div [id]=\"'searchstax-answer-container' + rand\">\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n !templateOverride\n \"\n >\n <app-answer-template #ref></app-answer-template>\n <ng-template\n [ngTemplateOutlet]=\"ref.answerTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
2209
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { templateOverride: [{
2210
- type: Input
2211
- }], feedbackwidget: [{
2212
- type: Input
2213
- }], showShowMoreAfterWordCount: [{
2214
- type: Input
2215
- }] } });
2216
-
2217
- // reusable-template.component.ts
2218
- class RelatedTemplateComponent {
2219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RelatedTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2220
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RelatedTemplateComponent, selector: "app-related-template", viewQueries: [{ propertyName: "relatedTemplate", first: true, predicate: ["relatedTemplate"], descendants: true }], ngImport: i0, template: `
2221
- <ng-template
2222
- #relatedTemplate
2223
- let-rand="rand"
2224
- let-relatedData="relatedData"
2225
- let-executeSearch="executeSearch"
2226
- let-context="context"
2227
- >
2228
- <div
2229
- class="searchstax-related-searches-container"
2230
- [id]="'searchstax-related-searches-container' + rand"
2231
- >
2232
- Related searches: <span id="searchstax-related-searches"></span>
2233
- <span
2234
- class="searchstax-related-search"
2235
- *ngIf="relatedData.relatedSearches"
2236
- >
2237
- <span
2238
- *ngFor="let related of relatedData.relatedSearches"
2239
- (click)="executeSearch(related, context)"
2240
- (keyup.enter)="executeSearch(related, context)"
2241
- (keyup.space)="executeSearch(related, context)"
2242
- tabindex="0"
2243
- class="searchstax-related-search searchstax-related-search-item"
2244
- [attr.aria-label]="'Related search: ' + related.related_search"
2245
- >
2246
- {{ related.related_search }}<span *ngIf="!related.last">,</span>
2247
- </span>
2248
- </span>
2249
- </div>
2250
- </ng-template>
2251
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
2252
- }
2253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RelatedTemplateComponent, decorators: [{
2254
- type: Component,
2255
- args: [{
2256
- selector: "app-related-template",
2257
- template: `
2258
- <ng-template
2259
- #relatedTemplate
2260
- let-rand="rand"
2261
- let-relatedData="relatedData"
2262
- let-executeSearch="executeSearch"
2263
- let-context="context"
2264
- >
2265
- <div
2266
- class="searchstax-related-searches-container"
2267
- [id]="'searchstax-related-searches-container' + rand"
2268
- >
2269
- Related searches: <span id="searchstax-related-searches"></span>
2270
- <span
2271
- class="searchstax-related-search"
2272
- *ngIf="relatedData.relatedSearches"
2273
- >
2274
- <span
2275
- *ngFor="let related of relatedData.relatedSearches"
2276
- (click)="executeSearch(related, context)"
2277
- (keyup.enter)="executeSearch(related, context)"
2278
- (keyup.space)="executeSearch(related, context)"
2279
- tabindex="0"
2280
- class="searchstax-related-search searchstax-related-search-item"
2281
- [attr.aria-label]="'Related search: ' + related.related_search"
2282
- >
2283
- {{ related.related_search }}<span *ngIf="!related.last">,</span>
2284
- </span>
2285
- </span>
2286
- </div>
2287
- </ng-template>
2288
- `,
2289
- }]
2290
- }], propDecorators: { relatedTemplate: [{
2291
- type: ViewChild,
2292
- args: ["relatedTemplate"]
2293
- }] } });
2294
-
2295
- class SearchstaxSearchRelatedSearchesWidget {
2296
- constructor(storeServiceService) {
2297
- this.storeServiceService = storeServiceService;
2298
- this.relatedData = null;
2299
- this.rand = Math.random();
2300
- this.context = this;
2301
- }
2302
- ngOnInit() {
2303
- if (this.storeServiceService.searchstax) {
2304
- this.attachObservables();
2305
- setTimeout(() => {
2306
- this.storeServiceService.searchstax.addRelatedSearchesWidget("searchstax-related-searches-container" + this.rand, { relatedSearchesURL: this.relatedSearchesURL ?? "", relatedSearchesAPIKey: this.relatedSearchesAPIKey ?? "" });
2307
- }, 0);
2308
- }
2309
- else {
2310
- throw Error("Searchstax instance needs to be passed via props");
2311
- }
2312
- }
2313
- executeSearch(result, context) {
2314
- context.storeServiceService.searchstax.relatedSearchesWidget?.executeSearch(result);
2315
- }
2316
- attachObservables() {
2317
- this.storeServiceService.searchstax.dataLayer.$searchRelatedSearchesData.subscribe((relatedData) => {
2318
- this.relatedData = relatedData;
2319
- });
2320
- }
2321
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchRelatedSearchesWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
2322
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchRelatedSearchesWidget, selector: "app-searchstax-related-searches", inputs: { relatedSearchesURL: "relatedSearchesURL", relatedSearchesAPIKey: "relatedSearchesAPIKey", templateOverride: "templateOverride" }, ngImport: i0, template: "<ng-container\n *ngIf=\"\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n !templateOverride\n \"\n>\n <app-related-template #ref></app-related-template>\n <ng-template\n *ngTemplateOutlet=\"ref.relatedTemplate; context: context\"\n ></ng-template>\n</ng-container>\n\n<div\n *ngIf=\"\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n templateOverride\n \"\n>\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: RelatedTemplateComponent, selector: "app-related-template" }] }); }
2323
- }
2324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchRelatedSearchesWidget, decorators: [{
2325
- type: Component,
2326
- args: [{ selector: "app-searchstax-related-searches", template: "<ng-container\n *ngIf=\"\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n !templateOverride\n \"\n>\n <app-related-template #ref></app-related-template>\n <ng-template\n *ngTemplateOutlet=\"ref.relatedTemplate; context: context\"\n ></ng-template>\n</ng-container>\n\n<div\n *ngIf=\"\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n templateOverride\n \"\n>\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n</div>\n" }]
2327
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { relatedSearchesURL: [{
2328
- type: Input
2329
- }], relatedSearchesAPIKey: [{
2330
- type: Input
2331
- }], templateOverride: [{
2332
- type: Input
2333
- }] } });
2334
-
2335
- // reusable-template.component.ts
2336
- class ExternalPromotionsTemplateComponent {
2337
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExternalPromotionsTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2338
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ExternalPromotionsTemplateComponent, selector: "app-external-template", viewQueries: [{ propertyName: "externalPromotionsTemplate", first: true, predicate: ["externalPromotionsTemplate"], descendants: true }], ngImport: i0, template: `
2339
- <ng-template
2340
- #externalPromotionsTemplate
2341
- let-context="context"
2342
- let-externalPromotionsData="externalPromotionsData"
2343
- let-trackClick="trackClick"
2344
- >
2345
- <div
2346
- class="searchstax-external-promotions-container"
2347
- id="searchstax-external-promotions-container"
2348
- >
2349
- <div
2350
- class="searchstax-external-promotion searchstax-search-result"
2351
- *ngFor="
2352
- let externalPromotion of externalPromotionsData.externalPromotions
2353
- "
2354
- >
2355
- <div class="icon-elevated"></div>
2356
- <a
2357
- *ngIf="externalPromotion.url"
2358
- [href]="externalPromotion.url"
2359
- (click)="trackClick(externalPromotion, $event, context)"
2360
- class="searchstax-result-item-link"
2361
- ></a>
2362
- <div class="searchstax-search-result-title-container">
2363
- <span class="searchstax-search-result-title">{{
2364
- externalPromotion.name
2365
- }}</span>
2366
- </div>
2367
- <p
2368
- *ngIf="externalPromotion.description"
2369
- class="searchstax-search-result-description searchstax-search-result-common"
2370
- >
2371
- {{ externalPromotion.description }}
2372
- </p>
2373
- <p
2374
- *ngIf="externalPromotion.url"
2375
- class="searchstax-search-result-description searchstax-search-result-common"
2376
- >
2377
- {{ externalPromotion.url }}
2378
- </p>
2379
- </div>
2380
- </div>
2381
- </ng-template>
2382
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
2383
- }
2384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExternalPromotionsTemplateComponent, decorators: [{
2385
- type: Component,
2386
- args: [{
2387
- selector: "app-external-template",
2388
- template: `
2389
- <ng-template
2390
- #externalPromotionsTemplate
2391
- let-context="context"
2392
- let-externalPromotionsData="externalPromotionsData"
2393
- let-trackClick="trackClick"
2394
- >
2395
- <div
2396
- class="searchstax-external-promotions-container"
2397
- id="searchstax-external-promotions-container"
2398
- >
2399
- <div
2400
- class="searchstax-external-promotion searchstax-search-result"
2401
- *ngFor="
2402
- let externalPromotion of externalPromotionsData.externalPromotions
2403
- "
2404
- >
2405
- <div class="icon-elevated"></div>
2406
- <a
2407
- *ngIf="externalPromotion.url"
2408
- [href]="externalPromotion.url"
2409
- (click)="trackClick(externalPromotion, $event, context)"
2410
- class="searchstax-result-item-link"
2411
- ></a>
2412
- <div class="searchstax-search-result-title-container">
2413
- <span class="searchstax-search-result-title">{{
2414
- externalPromotion.name
2415
- }}</span>
2416
- </div>
2417
- <p
2418
- *ngIf="externalPromotion.description"
2419
- class="searchstax-search-result-description searchstax-search-result-common"
2420
- >
2421
- {{ externalPromotion.description }}
2422
- </p>
2423
- <p
2424
- *ngIf="externalPromotion.url"
2425
- class="searchstax-search-result-description searchstax-search-result-common"
2426
- >
2427
- {{ externalPromotion.url }}
2428
- </p>
2429
- </div>
2430
- </div>
2431
- </ng-template>
2432
- `,
2433
- }]
2434
- }], propDecorators: { externalPromotionsTemplate: [{
2435
- type: ViewChild,
2436
- args: ["externalPromotionsTemplate"]
2437
- }] } });
2438
-
2439
- class SearchstaxSearchExternalPromotionsWidget {
2440
- constructor(storeServiceService) {
2441
- this.storeServiceService = storeServiceService;
2442
- this.externalPromotionsData = null;
2443
- this.rand = Math.random();
2444
- this.context = this;
2445
- }
2446
- ngOnInit() {
2447
- if (this.storeServiceService.searchstax) {
2448
- this.attachObservables();
2449
- setTimeout(() => {
2450
- this.storeServiceService.searchstax.addExternalPromotionsWidget("searchstax-external-promotions-layout-container" + this.rand, {});
2451
- }, 0);
2452
- }
2453
- else {
2454
- throw Error("Searchstax instance needs to be passed via props");
2455
- }
2456
- }
2457
- trackClick(externalPromotion, event, context) {
2458
- context.storeServiceService.searchstax.externalPromotionsWidget?.trackClick(externalPromotion, event);
2459
- }
2460
- attachObservables() {
2461
- this.storeServiceService.searchstax.dataLayer.$searchExternalPromotionsData.subscribe((externalPromotionsData) => {
2462
- this.externalPromotionsData = externalPromotionsData;
2463
- });
2464
- }
2465
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchExternalPromotionsWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
2466
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchExternalPromotionsWidget, selector: "app-searchstax-external-promotions", inputs: { templateOverride: "templateOverride" }, ngImport: i0, template: "<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n <ng-container\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n \"\n >\n <app-external-template #ref></app-external-template>\n <ng-template\n *ngTemplateOutlet=\"ref.externalPromotionsTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <div\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ExternalPromotionsTemplateComponent, selector: "app-external-template" }] }); }
2467
- }
2468
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchExternalPromotionsWidget, decorators: [{
2469
- type: Component,
2470
- args: [{ selector: "app-searchstax-external-promotions", template: "<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n <ng-container\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n \"\n >\n <app-external-template #ref></app-external-template>\n <ng-template\n *ngTemplateOutlet=\"ref.externalPromotionsTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <div\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
2471
- }], ctorParameters: () => [{ type: StoreServiceService }], propDecorators: { templateOverride: [{
2472
- type: Input
2473
- }] } });
2474
-
2475
- class SearchstudioUxAngularModule {
2476
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstudioUxAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2477
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: SearchstudioUxAngularModule, declarations: [SearchstaxWrapper,
2478
- SearchstaxInputWidget,
2479
- SearchstaxResultsWidget,
2480
- SearchstaxSearchFeedbackWidget,
2481
- SearchstaxSearchPaginationWidget,
2482
- SearchstaxSearchFacetsWidget,
2483
- SearchstaxSearchSortingWidget,
2484
- SearchstaxSearchRelatedSearchesWidget,
2485
- SearchstaxSearchExternalPromotionsWidget,
2486
- SearchstaxSearchAnswerWidget,
2487
- SearchstaxSearchLocationWidget,
2488
- AnswerTemplateComponent,
2489
- OverviewTemplateComponent,
2490
- InputTemplateComponent,
2491
- LocationTemplateComponent,
2492
- PaginationTemplateComponent,
2493
- PaginationInfiniteTemplateComponent,
2494
- ResultsTemplateComponent,
2495
- NoResultsTemplateComponent,
2496
- ExternalPromotionsTemplateComponent,
2497
- SortingTemplateComponent,
2498
- RelatedTemplateComponent,
2499
- FacetDesktopTemplateComponent,
2500
- FacetMobileTemplateComponent], imports: [CommonModule, FormsModule], exports: [SearchstaxWrapper,
2501
- SearchstaxInputWidget,
2502
- SearchstaxResultsWidget,
2503
- SearchstaxSearchFeedbackWidget,
2504
- SearchstaxSearchPaginationWidget,
2505
- SearchstaxSearchFacetsWidget,
2506
- SearchstaxSearchSortingWidget,
2507
- SearchstaxSearchRelatedSearchesWidget,
2508
- SearchstaxSearchExternalPromotionsWidget,
2509
- SearchstaxSearchAnswerWidget,
2510
- SearchstaxSearchLocationWidget,
2511
- AnswerTemplateComponent,
2512
- OverviewTemplateComponent,
2513
- InputTemplateComponent,
2514
- LocationTemplateComponent,
2515
- PaginationTemplateComponent,
2516
- PaginationInfiniteTemplateComponent,
2517
- ResultsTemplateComponent,
2518
- NoResultsTemplateComponent,
2519
- ExternalPromotionsTemplateComponent,
2520
- SortingTemplateComponent,
2521
- RelatedTemplateComponent,
2522
- FacetDesktopTemplateComponent,
2523
- FacetMobileTemplateComponent] }); }
2524
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstudioUxAngularModule, imports: [CommonModule, FormsModule] }); }
2525
- }
2526
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstudioUxAngularModule, decorators: [{
2527
- type: NgModule,
2528
- args: [{
2529
- declarations: [
2530
- SearchstaxWrapper,
2531
- SearchstaxInputWidget,
2532
- SearchstaxResultsWidget,
2533
- SearchstaxSearchFeedbackWidget,
2534
- SearchstaxSearchPaginationWidget,
2535
- SearchstaxSearchFacetsWidget,
2536
- SearchstaxSearchSortingWidget,
2537
- SearchstaxSearchRelatedSearchesWidget,
2538
- SearchstaxSearchExternalPromotionsWidget,
2539
- SearchstaxSearchAnswerWidget,
2540
- SearchstaxSearchLocationWidget,
2541
- AnswerTemplateComponent,
2542
- OverviewTemplateComponent,
2543
- InputTemplateComponent,
2544
- LocationTemplateComponent,
2545
- PaginationTemplateComponent,
2546
- PaginationInfiniteTemplateComponent,
2547
- ResultsTemplateComponent,
2548
- NoResultsTemplateComponent,
2549
- ExternalPromotionsTemplateComponent,
2550
- SortingTemplateComponent,
2551
- RelatedTemplateComponent,
2552
- FacetDesktopTemplateComponent,
2553
- FacetMobileTemplateComponent
2554
- ],
2555
- imports: [CommonModule, FormsModule],
2556
- exports: [
2557
- SearchstaxWrapper,
2558
- SearchstaxInputWidget,
2559
- SearchstaxResultsWidget,
2560
- SearchstaxSearchFeedbackWidget,
2561
- SearchstaxSearchPaginationWidget,
2562
- SearchstaxSearchFacetsWidget,
2563
- SearchstaxSearchSortingWidget,
2564
- SearchstaxSearchRelatedSearchesWidget,
2565
- SearchstaxSearchExternalPromotionsWidget,
2566
- SearchstaxSearchAnswerWidget,
2567
- SearchstaxSearchLocationWidget,
2568
- AnswerTemplateComponent,
2569
- OverviewTemplateComponent,
2570
- InputTemplateComponent,
2571
- LocationTemplateComponent,
2572
- PaginationTemplateComponent,
2573
- PaginationInfiniteTemplateComponent,
2574
- ResultsTemplateComponent,
2575
- NoResultsTemplateComponent,
2576
- ExternalPromotionsTemplateComponent,
2577
- SortingTemplateComponent,
2578
- RelatedTemplateComponent,
2579
- FacetDesktopTemplateComponent,
2580
- FacetMobileTemplateComponent
2581
- ],
2582
- }]
2583
- }] });
2584
-
2585
- /*
2586
- * Public API Surface of searchstudio-ux-angular
2587
- */
2588
-
2589
- /**
2590
- * Generated bundle index. Do not edit.
2591
- */
2592
-
2593
- export { AnswerTemplateComponent, ExternalPromotionsTemplateComponent, FacetDesktopTemplateComponent, FacetMobileTemplateComponent, InputTemplateComponent, LocationTemplateComponent, NoResultsTemplateComponent, OverviewTemplateComponent, PaginationInfiniteTemplateComponent, PaginationTemplateComponent, RelatedTemplateComponent, ResultsTemplateComponent, SearchstaxInputWidget, SearchstaxResultsWidget, SearchstaxSearchAnswerWidget, SearchstaxSearchExternalPromotionsWidget, SearchstaxSearchFacetsWidget, SearchstaxSearchFeedbackWidget, SearchstaxSearchLocationWidget, SearchstaxSearchPaginationWidget, SearchstaxSearchRelatedSearchesWidget, SearchstaxSearchSortingWidget, SearchstaxWrapper, SearchstudioUxAngularModule, SortingTemplateComponent, StoreServiceService };
2594
- //# sourceMappingURL=searchstax-inc-searchstudio-ux-angular.mjs.map