@searchstax-inc/searchstudio-ux-angular 0.0.1
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 +24 -0
- package/esm2020/lib/components/searchstax-input/searchstax-input.component.mjs +75 -0
- package/esm2020/lib/components/searchstax-results/searchstax-results.component.mjs +66 -0
- package/esm2020/lib/components/searchstax-wrapper.component.mjs +78 -0
- package/esm2020/lib/searchstudio-ux-angular.module.mjs +20 -0
- package/esm2020/lib/services/store-service.service.mjs +17 -0
- package/esm2020/public-api.mjs +9 -0
- package/esm2020/searchstax-inc-searchstudio-ux-angular.mjs +5 -0
- package/fesm2015/searchstax-inc-searchstudio-ux-angular.mjs +257 -0
- package/fesm2015/searchstax-inc-searchstudio-ux-angular.mjs.map +1 -0
- package/fesm2020/searchstax-inc-searchstudio-ux-angular.mjs +252 -0
- package/fesm2020/searchstax-inc-searchstudio-ux-angular.mjs.map +1 -0
- package/lib/components/searchstax-input/searchstax-input.component.d.ts +25 -0
- package/lib/components/searchstax-results/searchstax-results.component.d.ts +24 -0
- package/lib/components/searchstax-wrapper.component.d.ts +26 -0
- package/lib/searchstudio-ux-angular.module.d.ts +10 -0
- package/lib/services/store-service.service.d.ts +8 -0
- package/package.json +32 -0
- package/public-api.d.ts +5 -0
- package/searchstax-inc-searchstudio-ux-angular.d.ts +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# SearchstudioUxAngular
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.0.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project searchstudio-ux-angular` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project searchstudio-ux-angular`.
|
|
8
|
+
> Note: Don't forget to add `--project searchstudio-ux-angular` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build searchstudio-ux-angular` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build searchstudio-ux-angular`, go to the dist folder `cd dist/searchstudio-ux-angular` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test searchstudio-ux-angular` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/store-service.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
export class SearchstaxInputWidget {
|
|
6
|
+
constructor(storeServiceService) {
|
|
7
|
+
this.storeServiceService = storeServiceService;
|
|
8
|
+
this.searchInputId = '';
|
|
9
|
+
this.suggestAfterMinChars = 3;
|
|
10
|
+
this.hooks = {};
|
|
11
|
+
this.suggestions = [];
|
|
12
|
+
this.context = this;
|
|
13
|
+
}
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
console.log('this.templateOverride', this.templateOverride);
|
|
16
|
+
if (this.storeServiceService.searchstax) {
|
|
17
|
+
this.attachObservables();
|
|
18
|
+
// const hooks: { [key: string]: (prop: any) => any } = {}
|
|
19
|
+
if (this.afterAutosuggest) {
|
|
20
|
+
this.hooks['afterAutosuggest'] = this.afterAutosuggest;
|
|
21
|
+
}
|
|
22
|
+
if (this.beforeAutosuggest) {
|
|
23
|
+
this.hooks['beforeAutosuggest'] = this.beforeAutosuggest;
|
|
24
|
+
}
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
this.storeServiceService.searchstax.addSearchInputWidget('searchstax-input-container', {
|
|
27
|
+
suggestAfterMinChars: this.suggestAfterMinChars,
|
|
28
|
+
hooks: this.hooks,
|
|
29
|
+
templates: {
|
|
30
|
+
mainTemplate: {
|
|
31
|
+
template: ``,
|
|
32
|
+
searchInputId: this.searchInputId ?? 'searchstax-search-input'
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}, 0);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw Error('Searchstax instance needs to be passed via props');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
onMouseLeave() {
|
|
43
|
+
this.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();
|
|
44
|
+
this.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();
|
|
45
|
+
}
|
|
46
|
+
onMouseOver(suggestion) {
|
|
47
|
+
this.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion);
|
|
48
|
+
}
|
|
49
|
+
onMouseClick(e) {
|
|
50
|
+
e.stopImmediatePropagation();
|
|
51
|
+
this.storeServiceService.searchstax.searchInputWidget?.suggestionChosen();
|
|
52
|
+
}
|
|
53
|
+
attachObservables() {
|
|
54
|
+
this.storeServiceService.searchstax.dataLayer.$autosuggestResults.subscribe((suggestions) => {
|
|
55
|
+
this.suggestions = suggestions?.suggestions ?? [];
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
SearchstaxInputWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxInputWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
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)\"\n (click)=\"onMouseClick($event)\"\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"] }] });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxInputWidget, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
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)\"\n (click)=\"onMouseClick($event)\"\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" }]
|
|
64
|
+
}], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { afterAutosuggest: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], beforeAutosuggest: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], searchInputId: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], suggestAfterMinChars: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], templateOverride: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoc3RheC1pbnB1dC9zZWFyY2hzdGF4LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LWlucHV0L3NlYXJjaHN0YXgtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDOzs7O0FBU3RFLE1BQU0sT0FBTyxxQkFBcUI7SUFXaEMsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFSbkQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBR2xDLFVBQUssR0FBeUMsRUFBRSxDQUFDO1FBQ2pELGdCQUFXLEdBQTZCLEVBQUUsQ0FBQTtRQUMxQyxZQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWlELENBQUM7SUFFakUsUUFBUTtRQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLDBEQUEwRDtZQUMxRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTthQUN2RDtZQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFBO2FBQ3pEO1lBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLDRCQUE0QixFQUFFO29CQUNyRixvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO29CQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRTt3QkFDVCxZQUFZLEVBQUU7NEJBQ1osUUFBUSxFQUFFLEVBQUU7NEJBQ1osYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUkseUJBQXlCO3lCQUMvRDtxQkFDRjtpQkFDRixDQUFDLENBQUE7WUFDSixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQTtTQUNoRTtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxDQUFDO1FBQ25GLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztJQUNyRixDQUFDO0lBRUQsV0FBVyxDQUFDLFVBQWlDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdEYsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFRO1FBQ25CLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUN6RSxDQUFDLFdBQXlDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7a0hBN0RVLHFCQUFxQjtzR0FBckIscUJBQXFCLDBRQ1RsQyx3NkNBOENBOzJGRHJDYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usc0JBQXNCLFVBRXhCLEVBQUU7MEdBR0QsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJU2VhcmNoc3RheFNFQVJDSFRFUk0sIElTZWFyY2hzdGF4U3VnZ2VzdFByb3BzLCBJU2VhcmNoc3RheFN1Z2dlc3RSZXNwb25zZSwgSVNlYXJjaHN0YXhTdWdnZXN0aW9uIH0gZnJvbSAnQHNlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1qcyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaHN0YXgtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoc3RheC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3RheElucHV0V2lkZ2V0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYWZ0ZXJBdXRvc3VnZ2VzdD86IChyZXN1bHQ6IElTZWFyY2hzdGF4U3VnZ2VzdFJlc3BvbnNlKSA9PiBJU2VhcmNoc3RheFN1Z2dlc3RSZXNwb25zZTtcbiAgQElucHV0KCkgYmVmb3JlQXV0b3N1Z2dlc3Q/OiAocHJvcHM6IElTZWFyY2hzdGF4U3VnZ2VzdFByb3BzKSA9PiBJU2VhcmNoc3RheFN1Z2dlc3RQcm9wcyB8IG51bGxcbiAgQElucHV0KCkgc2VhcmNoSW5wdXRJZCA9ICcnO1xuICBASW5wdXQoKSBzdWdnZXN0QWZ0ZXJNaW5DaGFycyA9IDM7XG4gIEBJbnB1dCgpIHRlbXBsYXRlT3ZlcnJpZGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGhvb2tzOiB7W2tleTogc3RyaW5nXTogKHByb3A6IGFueSkgPT4gYW55IH0gPSB7fTtcbiAgc3VnZ2VzdGlvbnM6IElTZWFyY2hzdGF4U3VnZ2VzdGlvbltdID0gIFtdXG4gIGNvbnRleHQgPSB0aGlzO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVTZXJ2aWNlU2VydmljZTogU3RvcmVTZXJ2aWNlU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ3RoaXMudGVtcGxhdGVPdmVycmlkZScsIHRoaXMudGVtcGxhdGVPdmVycmlkZSk7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG4gICAgICAvLyBjb25zdCBob29rczogeyBba2V5OiBzdHJpbmddOiAocHJvcDogYW55KSA9PiBhbnkgfSA9IHt9XG4gICAgICBpZiAodGhpcy5hZnRlckF1dG9zdWdnZXN0KSB7XG4gICAgICAgIHRoaXMuaG9va3NbJ2FmdGVyQXV0b3N1Z2dlc3QnXSA9IHRoaXMuYWZ0ZXJBdXRvc3VnZ2VzdFxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYmVmb3JlQXV0b3N1Z2dlc3QpIHtcbiAgICAgICAgdGhpcy5ob29rc1snYmVmb3JlQXV0b3N1Z2dlc3QnXSA9IHRoaXMuYmVmb3JlQXV0b3N1Z2dlc3RcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRTZWFyY2hJbnB1dFdpZGdldCgnc2VhcmNoc3RheC1pbnB1dC1jb250YWluZXInLCB7XG4gICAgICAgICAgc3VnZ2VzdEFmdGVyTWluQ2hhcnM6IHRoaXMuc3VnZ2VzdEFmdGVyTWluQ2hhcnMsXG4gICAgICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBtYWluVGVtcGxhdGU6IHtcbiAgICAgICAgICAgICAgdGVtcGxhdGU6IGBgLFxuICAgICAgICAgICAgICBzZWFyY2hJbnB1dElkOiB0aGlzLnNlYXJjaElucHV0SWQgPz8gJ3NlYXJjaHN0YXgtc2VhcmNoLWlucHV0J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcignU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzJylcbiAgICB9XG4gIH1cblxuICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoSW5wdXRXaWRnZXQ/LnJlc2V0QXV0b3N1Z2dlc3RTZWxlY3Rpb24oKTtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hJbnB1dFdpZGdldD8ubWFya0FjdGl2ZUF1dG9zdWdnZXN0SXRlbSgpO1xuICB9XG5cbiAgb25Nb3VzZU92ZXIoc3VnZ2VzdGlvbjogSVNlYXJjaHN0YXhTdWdnZXN0aW9uKSB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoSW5wdXRXaWRnZXQ/Lm9uU3VnZ2VzdGlvbkVudGVyKHN1Z2dlc3Rpb24pXG4gIH1cblxuICBvbk1vdXNlQ2xpY2soZTogRXZlbnQpIHtcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaElucHV0V2lkZ2V0Py5zdWdnZXN0aW9uQ2hvc2VuKClcbiAgfVxuXG4gIGF0dGFjaE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kYXV0b3N1Z2dlc3RSZXN1bHRzLnN1YnNjcmliZShcbiAgICAgIChzdWdnZXN0aW9uczogbnVsbCB8IElTZWFyY2hzdGF4U0VBUkNIVEVSTSkgPT4ge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM/LnN1Z2dlc3Rpb25zID8/IFtdO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxufVxuIiwiPGRpdiBpZD1cInNlYXJjaHN0YXgtaW5wdXQtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRlbXBsYXRlT3ZlcnJpZGVcIiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlkPVwic2VhcmNoc3RheC1zZWFyY2gtaW5wdXRcIlxuICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTRUFSQ0ggRk9SLi4uXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1hdXRvc3VnZ2VzdC1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGhpZGRlbjogc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwIH1cIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCIob25Nb3VzZUxlYXZlKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtYXV0b3N1Z2dlc3QtaXRlbVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHN1Z2dlc3Rpb24gb2Ygc3VnZ2VzdGlvbnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWF1dG9zdWdnZXN0LWl0ZW0tdGVybS1jb250YWluZXJcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdWdnZXN0aW9uLnRlcm1cIlxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJvbk1vdXNlT3ZlcihzdWdnZXN0aW9uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb3VzZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNwaW5uZXItaWNvblwiXG4gICAgICAgIGlkPVwic2VhcmNoc3RheC1zZWFyY2gtaW5wdXQtYWN0aW9uLWJ1dHRvblwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlT3ZlcnJpZGVcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPHNsb3RcbiAgICAgIG5hbWU9XCJpbnB1dFwiXG4gICAgICA6c3VnZ2VzdGlvbnM9XCJzdWdnZXN0aW9uc1wiXG4gICAgICA6b25Nb3VzZUNsaWNrPVwib25Nb3VzZUNsaWNrXCJcbiAgICAgIDpvbk1vdXNlT3Zlcj1cIm9uTW91c2VPdmVyXCJcbiAgICAgIDpvbk1vdXNlTGVhdmU9XCJvbk1vdXNlTGVhdmVcIlxuICAgID48L3Nsb3Q+IC0tPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/store-service.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
export class SearchstaxResultsWidget {
|
|
6
|
+
constructor(storeServiceService) {
|
|
7
|
+
this.storeServiceService = storeServiceService;
|
|
8
|
+
this.searchResults = null;
|
|
9
|
+
this.metadata = null;
|
|
10
|
+
this.searchTerm = '';
|
|
11
|
+
this.context = this;
|
|
12
|
+
}
|
|
13
|
+
get hooks() {
|
|
14
|
+
const hooks = {};
|
|
15
|
+
if (this.afterLinkClick) {
|
|
16
|
+
hooks['afterLinkClick'] = this.afterLinkClick;
|
|
17
|
+
}
|
|
18
|
+
return hooks;
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
if (this.storeServiceService.searchstax) {
|
|
22
|
+
this.attachObservables();
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
this.storeServiceService.searchstax.addSearchResultsWidget('searchstax-results-container', {
|
|
25
|
+
templates: {},
|
|
26
|
+
hooks: this.hooks,
|
|
27
|
+
});
|
|
28
|
+
}, 0);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
throw Error('Searchstax instance needs to be passed via props');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
attachObservables() {
|
|
35
|
+
this.storeServiceService.searchstax.dataLayer.$searchResults.subscribe((results) => {
|
|
36
|
+
this.searchResults = results;
|
|
37
|
+
});
|
|
38
|
+
this.storeServiceService.searchstax.dataLayer.$searchTermChange.subscribe((result) => {
|
|
39
|
+
this.searchTerm = result;
|
|
40
|
+
});
|
|
41
|
+
this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata.subscribe((value) => {
|
|
42
|
+
this.metadata = value;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
resultClicked(result, event) {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
event.stopPropagation();
|
|
48
|
+
this.storeServiceService.searchstax.executeLinkClick(result.uniqueId);
|
|
49
|
+
}
|
|
50
|
+
isImage(field) {
|
|
51
|
+
return field.isImage && typeof field.value === 'string';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
SearchstaxResultsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxResultsWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
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)\"\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"] }] });
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxResultsWidget, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
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)\"\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" }]
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { afterLinkClick: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], noResultsTemplate: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], resultsTemplate: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}] } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXJlc3VsdHMvc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXJlc3VsdHMvc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7OztBQVl0RSxNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWI1RCxrQkFBYSxHQUFxQyxJQUFJLENBQUM7UUFDdkQsYUFBUSxHQUFxQyxJQUFJLENBQUM7UUFDbEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQUcsSUFBSSxDQUFDO0lBVWdELENBQUM7SUFSaEUsSUFBSSxLQUFLO1FBQ1AsTUFBTSxLQUFLLEdBQTBDLEVBQUUsQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMvQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUlELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUN4RCw4QkFBOEIsRUFDOUI7b0JBQ0UsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2lCQUNsQixDQUNGLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUNwRSxDQUFDLE9BQXlDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUMvQixDQUFDLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FDdkUsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FDNUUsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQStCLEVBQUUsS0FBWTtRQUN6RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQTtJQUN6RCxDQUFDOztvSEFwRVUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsd0xDWnBDLDJ2SEE0R0E7MkZEaEdhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSx3QkFBd0IsVUFFMUIsRUFBRTswR0FHRCxjQUFjO3NCQUF0QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JlLXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdCxcbiAgSVNlYXJjaHN0YXhTZWFyY2hNZXRhZGF0YSxcbn0gZnJvbSAnQHNlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1qcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zZWFyY2hzdGF4LXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3RheFJlc3VsdHNXaWRnZXQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhZnRlckxpbmtDbGljaz86IChcbiAgICByZXN1bHRzOiBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdFxuICApID0+IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0O1xuXG4gIEBJbnB1dCgpIG5vUmVzdWx0c1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgcmVzdWx0c1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBzZWFyY2hSZXN1bHRzOiBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdFtdIHwgbnVsbCA9IG51bGw7XG4gIG1ldGFkYXRhOiBJU2VhcmNoc3RheFNlYXJjaE1ldGFkYXRhIHwgbnVsbCA9IG51bGw7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgY29udGV4dCA9IHRoaXM7XG5cbiAgZ2V0IGhvb2tzKCk6IHsgW2tleTogc3RyaW5nXTogKHByb3A6IGFueSkgPT4gYW55IH0ge1xuICAgIGNvbnN0IGhvb2tzOiB7IFtrZXk6IHN0cmluZ106IChwcm9wOiBhbnkpID0+IGFueSB9ID0ge307XG4gICAgaWYgKHRoaXMuYWZ0ZXJMaW5rQ2xpY2spIHtcbiAgICAgIGhvb2tzWydhZnRlckxpbmtDbGljayddID0gdGhpcy5hZnRlckxpbmtDbGljaztcbiAgICB9XG4gICAgcmV0dXJuIGhvb2tzO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZVNlcnZpY2VTZXJ2aWNlOiBTdG9yZVNlcnZpY2VTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheCkge1xuICAgICAgdGhpcy5hdHRhY2hPYnNlcnZhYmxlcygpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguYWRkU2VhcmNoUmVzdWx0c1dpZGdldChcbiAgICAgICAgICAnc2VhcmNoc3RheC1yZXN1bHRzLWNvbnRhaW5lcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGVtcGxhdGVzOiB7fSxcbiAgICAgICAgICAgIGhvb2tzOiB0aGlzLmhvb2tzLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcignU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzJyk7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoT2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRzZWFyY2hSZXN1bHRzLnN1YnNjcmliZShcbiAgICAgIChyZXN1bHRzOiBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdFtdIHwgbnVsbCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRzZWFyY2hUZXJtQ2hhbmdlLnN1YnNjcmliZShcbiAgICAgIChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSByZXN1bHQ7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoUmVzdWx0c01ldGFkYXRhLnN1YnNjcmliZShcbiAgICAgICh2YWx1ZTogSVNlYXJjaHN0YXhTZWFyY2hNZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gdmFsdWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlc3VsdENsaWNrZWQocmVzdWx0OiBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdCwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5leGVjdXRlTGlua0NsaWNrKHJlc3VsdC51bmlxdWVJZCk7XG4gIH1cblxuICBpc0ltYWdlKGZpZWxkOiBhbnkpe1xuICAgIHJldHVybiBmaWVsZC5pc0ltYWdlICYmIHR5cGVvZiBmaWVsZC52YWx1ZSA9PT0gJ3N0cmluZydcbiAgfVxufVxuIiwiPGRpdiBpZD1cInNlYXJjaHN0YXgtcmVzdWx0cy1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdHMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBpZD1cInNlYXJjaHN0YXgtcmVzdWx0LWNvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHNlYXJjaFJlc3VsdHMgJiYgc2VhcmNoUmVzdWx0cy5sZW5ndGggPT09IDAgJiYgIW5vUmVzdWx0c1RlbXBsYXRlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICBTaG93aW5nIDxzdHJvbmc+bm8gcmVzdWx0czwvc3Ryb25nPiBmb3JcbiAgICAgICAgICA8c3Ryb25nPlwie3sgc2VhcmNoVGVybSB9fVwiPC9zdHJvbmc+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXRhZGF0YT8uc3BlbGxpbmdTdWdnZXN0aW9uXCJcbiAgICAgICAgICAgID4mbmJzcDtEaWQgeW91IG1lYW5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJzZWFyY2hzdGF4LXN1Z2dlc3Rpb24tdGVybVwiPnt7XG4gICAgICAgICAgICAgIG1ldGFkYXRhPy5zcGVsbGluZ1N1Z2dlc3Rpb25cbiAgICAgICAgICAgIH19PC9hXG4gICAgICAgICAgICA+Pzwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICBUcnkgc2VhcmNoaW5nIGZvciBzZWFyY2ggcmVsYXRlZCB0ZXJtcyBvciB0b3BpY3MuIFdlIG9mZmVyIGEgd2lkZVxuICAgICAgICAgICAgdmFyaWV0eSBvZiBjb250ZW50IHRvIGhlbHAgeW91IGdldCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQuXG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwPkxvc3Q/IENsaWNrIG9uIHRoZSDigJhY4oCdIGluIHRoZSBTZWFyY2ggQm94IHRvIHJlc2V0IHlvdXIgc2VhcmNoLjwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJzZWFyY2hSZXN1bHRzICYmIHNlYXJjaFJlc3VsdHMubGVuZ3RoID09PSAwICYmIG5vUmVzdWx0c1RlbXBsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9SZXN1bHRzVGVtcGxhdGU7IGNvbnRleHQ6IGNvbnRleHRcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdHNcIlxuICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdHMgJiYgc2VhcmNoUmVzdWx0cy5sZW5ndGggJiYgIXJlc3VsdHNUZW1wbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGFzLXRodW1ibmFpbCc6IHNlYXJjaFJlc3VsdC50aHVtYm5haWwgfVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHNlYXJjaFJlc3VsdCBvZiBzZWFyY2hSZXN1bHRzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0LnByb21vdGVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LXByb21vdGVkXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0LnVybFwiXG4gICAgICAgICAgICBbaHJlZl09XCJzZWFyY2hSZXN1bHQudXJsXCJcbiAgICAgICAgICAgIGF0dHIuZGF0YS1zZWFyY2hzdGF4LXVuaXF1ZS1yZXN1bHQtaWQ9XCJzZWFyY2hSZXN1bHQudW5pcXVlSWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc3VsdENsaWNrZWQoc2VhcmNoUmVzdWx0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1yZXN1bHQtaXRlbS1saW5rXCJcbiAgICAgICAgICA+PC9hPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0LnJpYmJvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1yaWJib25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHNlYXJjaFJlc3VsdC5yaWJib24gfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdC50aHVtYm5haWxcIlxuICAgICAgICAgICAgW3NyY109XCJzZWFyY2hSZXN1bHQudGh1bWJuYWlsXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC10aHVtYm5haWxcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC10aXRsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LXRpdGxlXCI+e3tcbiAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0LnRpdGxlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCAqbmdJZj1cInNlYXJjaFJlc3VsdC5wYXRoc1wiIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LWNvbW1vblwiPlxuICAgICAgICAgICAge3sgc2VhcmNoUmVzdWx0LnBhdGhzIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1kZXNjcmlwdGlvbiBzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtY29tbW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBzZWFyY2hSZXN1bHQuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdW5tYXBwZWRGaWVsZCBvZiBzZWFyY2hSZXN1bHQudW5tYXBwZWRGaWVsZHNcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0ltYWdlKHVubWFwcGVkRmllbGQpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtaW1hZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwidW5tYXBwZWRGaWVsZC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXJlc3VsdC1pbWFnZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNJbWFnZSh1bm1hcHBlZEZpZWxkKVwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1jb21tb25cIj5cbiAgICAgICAgICAgICAgICB7eyB1bm1hcHBlZEZpZWxkLnZhbHVlIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoUmVzdWx0cyAmJiBzZWFyY2hSZXN1bHRzLmxlbmd0aCAmJiByZXN1bHRzVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVzdWx0c1RlbXBsYXRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../services/store-service.service";
|
|
4
|
+
export class SearchstaxWrapper {
|
|
5
|
+
constructor(storeServiceService) {
|
|
6
|
+
this.storeServiceService = storeServiceService;
|
|
7
|
+
this.language = 'en';
|
|
8
|
+
this.searchURL = '';
|
|
9
|
+
this.suggesterURL = '';
|
|
10
|
+
this.trackApiKey = '';
|
|
11
|
+
this.searchAuth = '';
|
|
12
|
+
this.authType = 'basic';
|
|
13
|
+
this.autoCorrect = true;
|
|
14
|
+
this.initialized = new EventEmitter();
|
|
15
|
+
this.hooks = {};
|
|
16
|
+
if (this.beforeSearch) {
|
|
17
|
+
this.hooks.beforeSearch = this.beforeSearch;
|
|
18
|
+
}
|
|
19
|
+
if (this.afterSearch) {
|
|
20
|
+
this.hooks.afterSearch = this.afterSearch;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
this.storeServiceService.searchstax.initialize({
|
|
25
|
+
language: this.language,
|
|
26
|
+
searchURL: this.searchURL,
|
|
27
|
+
suggesterURL: this.suggesterURL,
|
|
28
|
+
trackApiKey: this.trackApiKey,
|
|
29
|
+
searchAuth: this.searchAuth,
|
|
30
|
+
authType: this.authType,
|
|
31
|
+
autoCorrect: this.autoCorrect,
|
|
32
|
+
router: this.router,
|
|
33
|
+
hooks: this.hooks
|
|
34
|
+
});
|
|
35
|
+
this.initialized.emit(this.storeServiceService.searchstax);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
SearchstaxWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxWrapper, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
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: `
|
|
40
|
+
<div>
|
|
41
|
+
<ng-content></ng-content>
|
|
42
|
+
</div>
|
|
43
|
+
`, isInline: true });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxWrapper, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{
|
|
47
|
+
selector: 'app-searchstax-wrapper',
|
|
48
|
+
template: `
|
|
49
|
+
<div>
|
|
50
|
+
<ng-content></ng-content>
|
|
51
|
+
</div>
|
|
52
|
+
`,
|
|
53
|
+
styles: []
|
|
54
|
+
}]
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { language: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], searchURL: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], suggesterURL: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], trackApiKey: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], searchAuth: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], authType: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], autoCorrect: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], router: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], beforeSearch: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], afterSearch: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], initialized: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}] } });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXdyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQWMvRSxNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBWm5ELGFBQVEsR0FBSSxJQUFJLENBQUM7UUFDakIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBc0IsT0FBTyxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBSWxCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUN2RCxVQUFLLEdBQXVKLEVBQUUsQ0FBQztRQUU3SixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUM3QztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzNDO0lBRUgsQ0FBQztJQUVELFFBQVE7UUFFTixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDNUQsQ0FBQzs7OEdBdENVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG1YQVJsQjs7OztHQUlUOzJGQUlVLGlCQUFpQjtrQkFWN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUU7Ozs7R0FJVDtvQkFDRCxNQUFNLEVBQUUsRUFDUDtpQkFDRjswR0FFVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElSb3V0ZXJDb25maWcsIElTZWFyY2hPYmplY3QsIElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0LCBTZWFyY2hzdGF4IH0gZnJvbSAnQHNlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1qcyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaHN0YXgtd3JhcHBlcicsXG4gIHRlbXBsYXRlOiBgXG4gIDxkaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3RheFdyYXBwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBsYW5ndWFnZSA9ICAnZW4nO1xuICBASW5wdXQoKSBzZWFyY2hVUkw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzdWdnZXN0ZXJVUkw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0cmFja0FwaUtleTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlYXJjaEF1dGg6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhdXRoVHlwZTogJ2Jhc2ljJyB8ICd0b2tlbicgPSAnYmFzaWMnO1xuICBASW5wdXQoKSBhdXRvQ29ycmVjdCA9IHRydWU7XG4gIEBJbnB1dCgpIHJvdXRlcj86IElSb3V0ZXJDb25maWc7XG4gIEBJbnB1dCgpIGJlZm9yZVNlYXJjaD86IChwcm9wczogSVNlYXJjaE9iamVjdCkgPT4gSVNlYXJjaE9iamVjdCB8IG51bGwgO1xuICBASW5wdXQoKSBhZnRlclNlYXJjaD86IChyZXN1bHRzOiBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdFtdKSA9PiBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdFtdO1xuICBAT3V0cHV0KCkgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaHN0YXg+KCk7XG4gIGhvb2tzOiB7IGJlZm9yZVNlYXJjaD86IChwcm9wczogSVNlYXJjaE9iamVjdCkgPT4gSVNlYXJjaE9iamVjdCB8IG51bGwsIGFmdGVyU2VhcmNoPzogKHJlc3VsdHM6IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0W10pID0+IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0W10gfSA9IHt9O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlU2VydmljZVNlcnZpY2U6IFN0b3JlU2VydmljZVNlcnZpY2UpIHtcbiAgICBpZiAodGhpcy5iZWZvcmVTZWFyY2gpIHtcbiAgICAgIHRoaXMuaG9va3MuYmVmb3JlU2VhcmNoID0gdGhpcy5iZWZvcmVTZWFyY2g7XG4gICAgfVxuICAgIGlmICh0aGlzLmFmdGVyU2VhcmNoKSB7XG4gICAgICB0aGlzLmhvb2tzLmFmdGVyU2VhcmNoID0gdGhpcy5hZnRlclNlYXJjaDtcbiAgICB9XG5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguaW5pdGlhbGl6ZSh7XG4gICAgICBsYW5ndWFnZTogdGhpcy5sYW5ndWFnZSxcbiAgICAgIHNlYXJjaFVSTDogdGhpcy5zZWFyY2hVUkwsXG4gICAgICBzdWdnZXN0ZXJVUkw6IHRoaXMuc3VnZ2VzdGVyVVJMLFxuICAgICAgdHJhY2tBcGlLZXk6IHRoaXMudHJhY2tBcGlLZXksXG4gICAgICBzZWFyY2hBdXRoOiB0aGlzLnNlYXJjaEF1dGgsXG4gICAgICBhdXRoVHlwZTogdGhpcy5hdXRoVHlwZSxcbiAgICAgIGF1dG9Db3JyZWN0OiB0aGlzLmF1dG9Db3JyZWN0LFxuICAgICAgcm91dGVyOiB0aGlzLnJvdXRlcixcbiAgICAgIGhvb2tzOiB0aGlzLmhvb2tzXG4gICAgfSlcblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCh0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheClcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { SearchstaxWrapper } from './components/searchstax-wrapper.component';
|
|
3
|
+
import { SearchstaxInputWidget } from './components/searchstax-input/searchstax-input.component';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { SearchstaxResultsWidget } from './components/searchstax-results/searchstax-results.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class SearchstudioUxAngularModule {
|
|
8
|
+
}
|
|
9
|
+
SearchstudioUxAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
SearchstudioUxAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget], imports: [CommonModule], exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget] });
|
|
11
|
+
SearchstudioUxAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, imports: [[CommonModule]] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],
|
|
16
|
+
imports: [CommonModule],
|
|
17
|
+
exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7O0FBT3ZHLE1BQU0sT0FBTywyQkFBMkI7O3dIQUEzQiwyQkFBMkI7eUhBQTNCLDJCQUEyQixpQkFKdkIsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLGFBQ3RFLFlBQVksYUFDWixpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUI7eUhBRWhFLDJCQUEyQixZQUg3QixDQUFDLFlBQVksQ0FBQzsyRkFHWiwyQkFBMkI7a0JBTHZDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLENBQUM7b0JBQ2pGLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLENBQUM7aUJBQzdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaHN0YXhXcmFwcGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL3NlYXJjaHN0YXgtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoc3RheElucHV0V2lkZ2V0IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlYXJjaHN0YXgtaW5wdXQvc2VhcmNoc3RheC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlYXJjaHN0YXhSZXN1bHRzV2lkZ2V0IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlYXJjaHN0YXgtcmVzdWx0cy9zZWFyY2hzdGF4LXJlc3VsdHMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2VhcmNoc3RheFdyYXBwZXIsIFNlYXJjaHN0YXhJbnB1dFdpZGdldCwgU2VhcmNoc3RheFJlc3VsdHNXaWRnZXRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW1NlYXJjaHN0YXhXcmFwcGVyLCBTZWFyY2hzdGF4SW5wdXRXaWRnZXQsIFNlYXJjaHN0YXhSZXN1bHRzV2lkZ2V0XSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3R1ZGlvVXhBbmd1bGFyTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Searchstax } from '@searchstax-inc/searchstudio-ux-js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class StoreServiceService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.searchstax = new Searchstax('vue');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
StoreServiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
|
+
StoreServiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, providedIn: 'root' });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{
|
|
14
|
+
providedIn: 'root'
|
|
15
|
+
}]
|
|
16
|
+
}], ctorParameters: function () { return []; } });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtc2VydmljZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yZS1zZXJ2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7O0FBSy9ELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUI7UUFEQSxlQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBWSxDQUFDLENBQUE7SUFDekIsQ0FBQzs7Z0hBRk4sbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoc3RheCB9IGZyb20gJ0BzZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtanMnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JlU2VydmljZVNlcnZpY2Uge1xuICBzZWFyY2hzdGF4ID0gbmV3IFNlYXJjaHN0YXgoJ3Z1ZScgYXMgYW55KVxuICBjb25zdHJ1Y3RvcigpIHsgfVxufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of searchstudio-ux-angular
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/components/searchstax-wrapper.component';
|
|
5
|
+
export * from './lib/components/searchstax-input/searchstax-input.component';
|
|
6
|
+
export * from './lib/components/searchstax-results/searchstax-results.component';
|
|
7
|
+
export * from './lib/services/store-service.service';
|
|
8
|
+
export * from './lib/searchstudio-ux-angular.module';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHNDQUFzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzZWFyY2hzdHVkaW8tdXgtYW5ndWxhclxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VhcmNoc3RheC13cmFwcGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlYXJjaHN0YXgtaW5wdXQvc2VhcmNoc3RheC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXJlc3VsdHMvc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zdG9yZS1zZXJ2aWNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIubW9kdWxlJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1pbmMtc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvc2VhcmNoc3RheC1pbmMtc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
|
|
3
|
+
import { Searchstax } from '@searchstax-inc/searchstudio-ux-js';
|
|
4
|
+
import * as i2 from '@angular/common';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
|
|
7
|
+
class StoreServiceService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.searchstax = new Searchstax('vue');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
StoreServiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
+
StoreServiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, providedIn: 'root' });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StoreServiceService, decorators: [{
|
|
15
|
+
type: Injectable,
|
|
16
|
+
args: [{
|
|
17
|
+
providedIn: 'root'
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: function () { return []; } });
|
|
20
|
+
|
|
21
|
+
class SearchstaxWrapper {
|
|
22
|
+
constructor(storeServiceService) {
|
|
23
|
+
this.storeServiceService = storeServiceService;
|
|
24
|
+
this.language = 'en';
|
|
25
|
+
this.searchURL = '';
|
|
26
|
+
this.suggesterURL = '';
|
|
27
|
+
this.trackApiKey = '';
|
|
28
|
+
this.searchAuth = '';
|
|
29
|
+
this.authType = 'basic';
|
|
30
|
+
this.autoCorrect = true;
|
|
31
|
+
this.initialized = new EventEmitter();
|
|
32
|
+
this.hooks = {};
|
|
33
|
+
if (this.beforeSearch) {
|
|
34
|
+
this.hooks.beforeSearch = this.beforeSearch;
|
|
35
|
+
}
|
|
36
|
+
if (this.afterSearch) {
|
|
37
|
+
this.hooks.afterSearch = this.afterSearch;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
this.storeServiceService.searchstax.initialize({
|
|
42
|
+
language: this.language,
|
|
43
|
+
searchURL: this.searchURL,
|
|
44
|
+
suggesterURL: this.suggesterURL,
|
|
45
|
+
trackApiKey: this.trackApiKey,
|
|
46
|
+
searchAuth: this.searchAuth,
|
|
47
|
+
authType: this.authType,
|
|
48
|
+
autoCorrect: this.autoCorrect,
|
|
49
|
+
router: this.router,
|
|
50
|
+
hooks: this.hooks
|
|
51
|
+
});
|
|
52
|
+
this.initialized.emit(this.storeServiceService.searchstax);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
SearchstaxWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxWrapper, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
SearchstaxWrapper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxWrapper, selector: "app-searchstax-wrapper", inputs: { language: "language", searchURL: "searchURL", suggesterURL: "suggesterURL", trackApiKey: "trackApiKey", searchAuth: "searchAuth", authType: "authType", autoCorrect: "autoCorrect", router: "router", beforeSearch: "beforeSearch", afterSearch: "afterSearch" }, outputs: { initialized: "initialized" }, ngImport: i0, template: `
|
|
57
|
+
<div>
|
|
58
|
+
<ng-content></ng-content>
|
|
59
|
+
</div>
|
|
60
|
+
`, isInline: true });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxWrapper, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: 'app-searchstax-wrapper',
|
|
65
|
+
template: `
|
|
66
|
+
<div>
|
|
67
|
+
<ng-content></ng-content>
|
|
68
|
+
</div>
|
|
69
|
+
`,
|
|
70
|
+
styles: []
|
|
71
|
+
}]
|
|
72
|
+
}], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { language: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], searchURL: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], suggesterURL: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], trackApiKey: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], searchAuth: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], authType: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], autoCorrect: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], router: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], beforeSearch: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], afterSearch: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], initialized: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}] } });
|
|
95
|
+
|
|
96
|
+
class SearchstaxInputWidget {
|
|
97
|
+
constructor(storeServiceService) {
|
|
98
|
+
this.storeServiceService = storeServiceService;
|
|
99
|
+
this.searchInputId = '';
|
|
100
|
+
this.suggestAfterMinChars = 3;
|
|
101
|
+
this.hooks = {};
|
|
102
|
+
this.suggestions = [];
|
|
103
|
+
this.context = this;
|
|
104
|
+
}
|
|
105
|
+
ngOnInit() {
|
|
106
|
+
console.log('this.templateOverride', this.templateOverride);
|
|
107
|
+
if (this.storeServiceService.searchstax) {
|
|
108
|
+
this.attachObservables();
|
|
109
|
+
// const hooks: { [key: string]: (prop: any) => any } = {}
|
|
110
|
+
if (this.afterAutosuggest) {
|
|
111
|
+
this.hooks['afterAutosuggest'] = this.afterAutosuggest;
|
|
112
|
+
}
|
|
113
|
+
if (this.beforeAutosuggest) {
|
|
114
|
+
this.hooks['beforeAutosuggest'] = this.beforeAutosuggest;
|
|
115
|
+
}
|
|
116
|
+
setTimeout(() => {
|
|
117
|
+
var _a;
|
|
118
|
+
this.storeServiceService.searchstax.addSearchInputWidget('searchstax-input-container', {
|
|
119
|
+
suggestAfterMinChars: this.suggestAfterMinChars,
|
|
120
|
+
hooks: this.hooks,
|
|
121
|
+
templates: {
|
|
122
|
+
mainTemplate: {
|
|
123
|
+
template: ``,
|
|
124
|
+
searchInputId: (_a = this.searchInputId) !== null && _a !== void 0 ? _a : 'searchstax-search-input'
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}, 0);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
throw Error('Searchstax instance needs to be passed via props');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
onMouseLeave() {
|
|
135
|
+
var _a, _b;
|
|
136
|
+
(_a = this.storeServiceService.searchstax.searchInputWidget) === null || _a === void 0 ? void 0 : _a.resetAutosuggestSelection();
|
|
137
|
+
(_b = this.storeServiceService.searchstax.searchInputWidget) === null || _b === void 0 ? void 0 : _b.markActiveAutosuggestItem();
|
|
138
|
+
}
|
|
139
|
+
onMouseOver(suggestion) {
|
|
140
|
+
var _a;
|
|
141
|
+
(_a = this.storeServiceService.searchstax.searchInputWidget) === null || _a === void 0 ? void 0 : _a.onSuggestionEnter(suggestion);
|
|
142
|
+
}
|
|
143
|
+
onMouseClick(e) {
|
|
144
|
+
var _a;
|
|
145
|
+
e.stopImmediatePropagation();
|
|
146
|
+
(_a = this.storeServiceService.searchstax.searchInputWidget) === null || _a === void 0 ? void 0 : _a.suggestionChosen();
|
|
147
|
+
}
|
|
148
|
+
attachObservables() {
|
|
149
|
+
this.storeServiceService.searchstax.dataLayer.$autosuggestResults.subscribe((suggestions) => {
|
|
150
|
+
var _a;
|
|
151
|
+
this.suggestions = (_a = suggestions === null || suggestions === void 0 ? void 0 : suggestions.suggestions) !== null && _a !== void 0 ? _a : [];
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
SearchstaxInputWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxInputWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
|
|
156
|
+
SearchstaxInputWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxInputWidget, selector: "app-searchstax-input", inputs: { afterAutosuggest: "afterAutosuggest", beforeAutosuggest: "beforeAutosuggest", searchInputId: "searchInputId", suggestAfterMinChars: "suggestAfterMinChars", templateOverride: "templateOverride" }, ngImport: i0, template: "<div id=\"searchstax-input-container\">\n <div class=\"searchstax-search-input-container\">\n <div *ngIf=\"!templateOverride\" class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"(onMouseLeave)\"\n >\n <div\n class=\"searchstax-autosuggest-item\"\n *ngFor=\"let suggestion of suggestions\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion)\"\n (click)=\"onMouseClick($event)\"\n ></div>\n </div>\n </div>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n ></button>\n </div>\n <div *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <!-- <slot\n name=\"input\"\n :suggestions=\"suggestions\"\n :onMouseClick=\"onMouseClick\"\n :onMouseOver=\"onMouseOver\"\n :onMouseLeave=\"onMouseLeave\"\n ></slot> -->\n </div>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxInputWidget, decorators: [{
|
|
158
|
+
type: Component,
|
|
159
|
+
args: [{ selector: 'app-searchstax-input', styles: [], template: "<div id=\"searchstax-input-container\">\n <div class=\"searchstax-search-input-container\">\n <div *ngIf=\"!templateOverride\" class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"(onMouseLeave)\"\n >\n <div\n class=\"searchstax-autosuggest-item\"\n *ngFor=\"let suggestion of suggestions\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion)\"\n (click)=\"onMouseClick($event)\"\n ></div>\n </div>\n </div>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n ></button>\n </div>\n <div *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <!-- <slot\n name=\"input\"\n :suggestions=\"suggestions\"\n :onMouseClick=\"onMouseClick\"\n :onMouseOver=\"onMouseOver\"\n :onMouseLeave=\"onMouseLeave\"\n ></slot> -->\n </div>\n</div>\n" }]
|
|
160
|
+
}], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { afterAutosuggest: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], beforeAutosuggest: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], searchInputId: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], suggestAfterMinChars: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], templateOverride: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}] } });
|
|
171
|
+
|
|
172
|
+
class SearchstaxResultsWidget {
|
|
173
|
+
constructor(storeServiceService) {
|
|
174
|
+
this.storeServiceService = storeServiceService;
|
|
175
|
+
this.searchResults = null;
|
|
176
|
+
this.metadata = null;
|
|
177
|
+
this.searchTerm = '';
|
|
178
|
+
this.context = this;
|
|
179
|
+
}
|
|
180
|
+
get hooks() {
|
|
181
|
+
const hooks = {};
|
|
182
|
+
if (this.afterLinkClick) {
|
|
183
|
+
hooks['afterLinkClick'] = this.afterLinkClick;
|
|
184
|
+
}
|
|
185
|
+
return hooks;
|
|
186
|
+
}
|
|
187
|
+
ngOnInit() {
|
|
188
|
+
if (this.storeServiceService.searchstax) {
|
|
189
|
+
this.attachObservables();
|
|
190
|
+
setTimeout(() => {
|
|
191
|
+
this.storeServiceService.searchstax.addSearchResultsWidget('searchstax-results-container', {
|
|
192
|
+
templates: {},
|
|
193
|
+
hooks: this.hooks,
|
|
194
|
+
});
|
|
195
|
+
}, 0);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
throw Error('Searchstax instance needs to be passed via props');
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
attachObservables() {
|
|
202
|
+
this.storeServiceService.searchstax.dataLayer.$searchResults.subscribe((results) => {
|
|
203
|
+
this.searchResults = results;
|
|
204
|
+
});
|
|
205
|
+
this.storeServiceService.searchstax.dataLayer.$searchTermChange.subscribe((result) => {
|
|
206
|
+
this.searchTerm = result;
|
|
207
|
+
});
|
|
208
|
+
this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata.subscribe((value) => {
|
|
209
|
+
this.metadata = value;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
resultClicked(result, event) {
|
|
213
|
+
event.preventDefault();
|
|
214
|
+
event.stopPropagation();
|
|
215
|
+
this.storeServiceService.searchstax.executeLinkClick(result.uniqueId);
|
|
216
|
+
}
|
|
217
|
+
isImage(field) {
|
|
218
|
+
return field.isImage && typeof field.value === 'string';
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
SearchstaxResultsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxResultsWidget, deps: [{ token: StoreServiceService }], target: i0.ɵɵFactoryTarget.Component });
|
|
222
|
+
SearchstaxResultsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SearchstaxResultsWidget, selector: "app-searchstax-results", inputs: { afterLinkClick: "afterLinkClick", noResultsTemplate: "noResultsTemplate", resultsTemplate: "resultsTemplate" }, ngImport: i0, template: "<div id=\"searchstax-results-container\">\n <div class=\"searchstax-search-results-container\">\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults && searchResults.length === 0 && !noResultsTemplate\n \"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n <span *ngIf=\"metadata?.spellingSuggestion\"\n > 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)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div\n *ngIf=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n >\n {{ searchResult.ribbon }}\n </div>\n <img\n *ngIf=\"searchResult.thumbnail\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n searchResult.title\n }}</span>\n </div>\n <p *ngIf=\"searchResult.paths\" class=\"searchstax-search-result-common\">\n {{ searchResult.paths }}\n </p>\n <p\n *ngIf=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ searchResult.description }}\n </p>\n <div *ngFor=\"let unmappedField of searchResult.unmappedFields\">\n <div\n *ngIf=\"isImage(unmappedField)\"\n class=\"searchstax-search-result-image-container\"\n >\n <img\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n <div *ngIf=\"!isImage(unmappedField)\">\n <p class=\"searchstax-search-result-common\">\n {{ unmappedField.value }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstaxResultsWidget, decorators: [{
|
|
224
|
+
type: Component,
|
|
225
|
+
args: [{ selector: 'app-searchstax-results', styles: [], template: "<div id=\"searchstax-results-container\">\n <div class=\"searchstax-search-results-container\">\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults && searchResults.length === 0 && !noResultsTemplate\n \"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n <span *ngIf=\"metadata?.spellingSuggestion\"\n > 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)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div\n *ngIf=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n >\n {{ searchResult.ribbon }}\n </div>\n <img\n *ngIf=\"searchResult.thumbnail\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n searchResult.title\n }}</span>\n </div>\n <p *ngIf=\"searchResult.paths\" class=\"searchstax-search-result-common\">\n {{ searchResult.paths }}\n </p>\n <p\n *ngIf=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ searchResult.description }}\n </p>\n <div *ngFor=\"let unmappedField of searchResult.unmappedFields\">\n <div\n *ngIf=\"isImage(unmappedField)\"\n class=\"searchstax-search-result-image-container\"\n >\n <img\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n <div *ngIf=\"!isImage(unmappedField)\">\n <p class=\"searchstax-search-result-common\">\n {{ unmappedField.value }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
226
|
+
}], ctorParameters: function () { return [{ type: StoreServiceService }]; }, propDecorators: { afterLinkClick: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], noResultsTemplate: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], resultsTemplate: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}] } });
|
|
233
|
+
|
|
234
|
+
class SearchstudioUxAngularModule {
|
|
235
|
+
}
|
|
236
|
+
SearchstudioUxAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
237
|
+
SearchstudioUxAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget], imports: [CommonModule], exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget] });
|
|
238
|
+
SearchstudioUxAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, imports: [[CommonModule]] });
|
|
239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, decorators: [{
|
|
240
|
+
type: NgModule,
|
|
241
|
+
args: [{
|
|
242
|
+
declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],
|
|
243
|
+
imports: [CommonModule],
|
|
244
|
+
exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],
|
|
245
|
+
}]
|
|
246
|
+
}] });
|
|
247
|
+
|
|
248
|
+
/*
|
|
249
|
+
* Public API Surface of searchstudio-ux-angular
|
|
250
|
+
*/
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Generated bundle index. Do not edit.
|
|
254
|
+
*/
|
|
255
|
+
|
|
256
|
+
export { SearchstaxInputWidget, SearchstaxResultsWidget, SearchstaxWrapper, SearchstudioUxAngularModule, StoreServiceService };
|
|
257
|
+
//# sourceMappingURL=searchstax-inc-searchstudio-ux-angular.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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/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() {\n this.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();\n this.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();\n }\n\n onMouseOver(suggestion: ISearchstaxSuggestion) {\n this.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion)\n }\n\n onMouseClick(e: Event) {\n e.stopImmediatePropagation();\n this.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)\"\n (click)=\"onMouseClick($event)\"\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) {\n event.preventDefault();\n event.stopPropagation();\n this.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)\"\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 { 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';\n\n@NgModule({\n declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],\n imports: [CommonModule],\n exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],\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/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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"}
|
|
@@ -0,0 +1,252 @@
|
|
|
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() {
|
|
134
|
+
this.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();
|
|
135
|
+
this.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();
|
|
136
|
+
}
|
|
137
|
+
onMouseOver(suggestion) {
|
|
138
|
+
this.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion);
|
|
139
|
+
}
|
|
140
|
+
onMouseClick(e) {
|
|
141
|
+
e.stopImmediatePropagation();
|
|
142
|
+
this.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)\"\n (click)=\"onMouseClick($event)\"\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)\"\n (click)=\"onMouseClick($event)\"\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) {
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
event.stopPropagation();
|
|
210
|
+
this.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)\"\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)\"\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 SearchstudioUxAngularModule {
|
|
230
|
+
}
|
|
231
|
+
SearchstudioUxAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
232
|
+
SearchstudioUxAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget], imports: [CommonModule], exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget] });
|
|
233
|
+
SearchstudioUxAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, imports: [[CommonModule]] });
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SearchstudioUxAngularModule, decorators: [{
|
|
235
|
+
type: NgModule,
|
|
236
|
+
args: [{
|
|
237
|
+
declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],
|
|
238
|
+
imports: [CommonModule],
|
|
239
|
+
exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],
|
|
240
|
+
}]
|
|
241
|
+
}] });
|
|
242
|
+
|
|
243
|
+
/*
|
|
244
|
+
* Public API Surface of searchstudio-ux-angular
|
|
245
|
+
*/
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Generated bundle index. Do not edit.
|
|
249
|
+
*/
|
|
250
|
+
|
|
251
|
+
export { SearchstaxInputWidget, SearchstaxResultsWidget, SearchstaxWrapper, SearchstudioUxAngularModule, StoreServiceService };
|
|
252
|
+
//# sourceMappingURL=searchstax-inc-searchstudio-ux-angular.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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/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() {\n this.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();\n this.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();\n }\n\n onMouseOver(suggestion: ISearchstaxSuggestion) {\n this.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion)\n }\n\n onMouseClick(e: Event) {\n e.stopImmediatePropagation();\n this.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)\"\n (click)=\"onMouseClick($event)\"\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) {\n event.preventDefault();\n event.stopPropagation();\n this.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)\"\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 { 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';\n\n@NgModule({\n declarations: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],\n imports: [CommonModule],\n exports: [SearchstaxWrapper, SearchstaxInputWidget, SearchstaxResultsWidget],\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/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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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OnInit, TemplateRef } from '@angular/core';
|
|
2
|
+
import { ISearchstaxSuggestProps, ISearchstaxSuggestResponse, ISearchstaxSuggestion } from '@searchstax-inc/searchstudio-ux-js';
|
|
3
|
+
import { StoreServiceService } from '../../services/store-service.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class SearchstaxInputWidget implements OnInit {
|
|
6
|
+
private storeServiceService;
|
|
7
|
+
afterAutosuggest?: (result: ISearchstaxSuggestResponse) => ISearchstaxSuggestResponse;
|
|
8
|
+
beforeAutosuggest?: (props: ISearchstaxSuggestProps) => ISearchstaxSuggestProps | null;
|
|
9
|
+
searchInputId: string;
|
|
10
|
+
suggestAfterMinChars: number;
|
|
11
|
+
templateOverride?: TemplateRef<any>;
|
|
12
|
+
hooks: {
|
|
13
|
+
[key: string]: (prop: any) => any;
|
|
14
|
+
};
|
|
15
|
+
suggestions: ISearchstaxSuggestion[];
|
|
16
|
+
context: this;
|
|
17
|
+
constructor(storeServiceService: StoreServiceService);
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
onMouseLeave(): void;
|
|
20
|
+
onMouseOver(suggestion: ISearchstaxSuggestion): void;
|
|
21
|
+
onMouseClick(e: Event): void;
|
|
22
|
+
attachObservables(): void;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SearchstaxInputWidget, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SearchstaxInputWidget, "app-searchstax-input", never, { "afterAutosuggest": "afterAutosuggest"; "beforeAutosuggest": "beforeAutosuggest"; "searchInputId": "searchInputId"; "suggestAfterMinChars": "suggestAfterMinChars"; "templateOverride": "templateOverride"; }, {}, never, never>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { OnInit, TemplateRef } from '@angular/core';
|
|
2
|
+
import { StoreServiceService } from '../../services/store-service.service';
|
|
3
|
+
import { ISearchstaxParsedResult, ISearchstaxSearchMetadata } from '@searchstax-inc/searchstudio-ux-js';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class SearchstaxResultsWidget implements OnInit {
|
|
6
|
+
private storeServiceService;
|
|
7
|
+
afterLinkClick?: (results: ISearchstaxParsedResult) => ISearchstaxParsedResult;
|
|
8
|
+
noResultsTemplate?: TemplateRef<any>;
|
|
9
|
+
resultsTemplate?: TemplateRef<any>;
|
|
10
|
+
searchResults: ISearchstaxParsedResult[] | null;
|
|
11
|
+
metadata: ISearchstaxSearchMetadata | null;
|
|
12
|
+
searchTerm: string;
|
|
13
|
+
context: this;
|
|
14
|
+
get hooks(): {
|
|
15
|
+
[key: string]: (prop: any) => any;
|
|
16
|
+
};
|
|
17
|
+
constructor(storeServiceService: StoreServiceService);
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
attachObservables(): void;
|
|
20
|
+
resultClicked(result: ISearchstaxParsedResult, event: Event): void;
|
|
21
|
+
isImage(field: any): any;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SearchstaxResultsWidget, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SearchstaxResultsWidget, "app-searchstax-results", never, { "afterLinkClick": "afterLinkClick"; "noResultsTemplate": "noResultsTemplate"; "resultsTemplate": "resultsTemplate"; }, {}, never, never>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
import { IRouterConfig, ISearchObject, ISearchstaxParsedResult, Searchstax } from '@searchstax-inc/searchstudio-ux-js';
|
|
3
|
+
import { StoreServiceService } from '../services/store-service.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class SearchstaxWrapper implements OnInit {
|
|
6
|
+
private storeServiceService;
|
|
7
|
+
language: string;
|
|
8
|
+
searchURL: string;
|
|
9
|
+
suggesterURL: string;
|
|
10
|
+
trackApiKey: string;
|
|
11
|
+
searchAuth: string;
|
|
12
|
+
authType: 'basic' | 'token';
|
|
13
|
+
autoCorrect: boolean;
|
|
14
|
+
router?: IRouterConfig;
|
|
15
|
+
beforeSearch?: (props: ISearchObject) => ISearchObject | null;
|
|
16
|
+
afterSearch?: (results: ISearchstaxParsedResult[]) => ISearchstaxParsedResult[];
|
|
17
|
+
initialized: EventEmitter<Searchstax>;
|
|
18
|
+
hooks: {
|
|
19
|
+
beforeSearch?: (props: ISearchObject) => ISearchObject | null;
|
|
20
|
+
afterSearch?: (results: ISearchstaxParsedResult[]) => ISearchstaxParsedResult[];
|
|
21
|
+
};
|
|
22
|
+
constructor(storeServiceService: StoreServiceService);
|
|
23
|
+
ngOnInit(): void;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SearchstaxWrapper, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SearchstaxWrapper, "app-searchstax-wrapper", never, { "language": "language"; "searchURL": "searchURL"; "suggesterURL": "suggesterURL"; "trackApiKey": "trackApiKey"; "searchAuth": "searchAuth"; "authType": "authType"; "autoCorrect": "autoCorrect"; "router": "router"; "beforeSearch": "beforeSearch"; "afterSearch": "afterSearch"; }, { "initialized": "initialized"; }, never, ["*"]>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./components/searchstax-wrapper.component";
|
|
3
|
+
import * as i2 from "./components/searchstax-input/searchstax-input.component";
|
|
4
|
+
import * as i3 from "./components/searchstax-results/searchstax-results.component";
|
|
5
|
+
import * as i4 from "@angular/common";
|
|
6
|
+
export declare class SearchstudioUxAngularModule {
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SearchstudioUxAngularModule, never>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SearchstudioUxAngularModule, [typeof i1.SearchstaxWrapper, typeof i2.SearchstaxInputWidget, typeof i3.SearchstaxResultsWidget], [typeof i4.CommonModule], [typeof i1.SearchstaxWrapper, typeof i2.SearchstaxInputWidget, typeof i3.SearchstaxResultsWidget]>;
|
|
9
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<SearchstudioUxAngularModule>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Searchstax } from '@searchstax-inc/searchstudio-ux-js';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class StoreServiceService {
|
|
4
|
+
searchstax: Searchstax;
|
|
5
|
+
constructor();
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StoreServiceService, never>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<StoreServiceService>;
|
|
8
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@searchstax-inc/searchstudio-ux-angular",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^13.0.0",
|
|
6
|
+
"@angular/core": "^13.0.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0",
|
|
10
|
+
"@searchstax-inc/searchstudio-ux-js": "^0.5.6"
|
|
11
|
+
},
|
|
12
|
+
"module": "fesm2015/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
13
|
+
"es2020": "fesm2020/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
14
|
+
"esm2020": "esm2020/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
15
|
+
"fesm2020": "fesm2020/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
16
|
+
"fesm2015": "fesm2015/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
17
|
+
"typings": "searchstax-inc-searchstudio-ux-angular.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
"./package.json": {
|
|
20
|
+
"default": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./searchstax-inc-searchstudio-ux-angular.d.ts",
|
|
24
|
+
"esm2020": "./esm2020/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
25
|
+
"es2020": "./fesm2020/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
26
|
+
"es2015": "./fesm2015/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
27
|
+
"node": "./fesm2015/searchstax-inc-searchstudio-ux-angular.mjs",
|
|
28
|
+
"default": "./fesm2020/searchstax-inc-searchstudio-ux-angular.mjs"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"sideEffects": false
|
|
32
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './lib/components/searchstax-wrapper.component';
|
|
2
|
+
export * from './lib/components/searchstax-input/searchstax-input.component';
|
|
3
|
+
export * from './lib/components/searchstax-results/searchstax-results.component';
|
|
4
|
+
export * from './lib/services/store-service.service';
|
|
5
|
+
export * from './lib/searchstudio-ux-angular.module';
|