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