@fluid-topics/ft-search-bar 1.1.106 → 1.1.109
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/build/ft-search-bar.d.ts +5 -1
- package/build/ft-search-bar.js +45 -22
- package/build/ft-search-bar.light.js +95 -93
- package/build/ft-search-bar.min.js +136 -134
- package/build/managers/DesktopSearchBarManager.js +4 -2
- package/build/managers/MobileSearchBarManager.js +1 -1
- package/package.json +16 -16
package/build/ft-search-bar.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export declare class FtSearchBar extends FtLitElement implements FtSearchBarProp
|
|
|
41
41
|
priors?: Array<FtSearchPrior>;
|
|
42
42
|
searchRequestSerializer: (request: FtSearchRequest) => string;
|
|
43
43
|
focusOnDisplay: boolean;
|
|
44
|
-
private
|
|
44
|
+
private metadataFilters;
|
|
45
45
|
private sizeCategory;
|
|
46
46
|
displayFacets: boolean;
|
|
47
47
|
mobileMenuOpen: boolean;
|
|
@@ -106,6 +106,10 @@ export declare class FtSearchBar extends FtLitElement implements FtSearchBarProp
|
|
|
106
106
|
disconnectedCallback(): void;
|
|
107
107
|
private updateSize;
|
|
108
108
|
setFilter(key: string, selectedValues: Array<string>): void;
|
|
109
|
+
private compareUnknownFilters;
|
|
110
|
+
private compareValueFilters;
|
|
111
|
+
private compareDateFilters;
|
|
112
|
+
private compareRangeFilters;
|
|
109
113
|
private compareFilters;
|
|
110
114
|
private compareRequests;
|
|
111
115
|
private setFiltersFromPreset;
|
package/build/ft-search-bar.js
CHANGED
|
@@ -45,6 +45,7 @@ export const DEFAULT_LABELS = {
|
|
|
45
45
|
presetsSelector: "Quick filters",
|
|
46
46
|
removeRecentSearch: "Remove",
|
|
47
47
|
back: "Back",
|
|
48
|
+
selectLocale: "Select a language"
|
|
48
49
|
};
|
|
49
50
|
export class LaunchSearchEvent extends CustomEvent {
|
|
50
51
|
constructor(request) {
|
|
@@ -80,7 +81,7 @@ class FtSearchBar extends FtLitElement {
|
|
|
80
81
|
this.priors = [];
|
|
81
82
|
this.searchRequestSerializer = (request) => serializeRequest(this.baseUrl, request);
|
|
82
83
|
this.focusOnDisplay = false;
|
|
83
|
-
this.
|
|
84
|
+
this.metadataFilters = [];
|
|
84
85
|
this.sizeCategory = FtSizeCategory.M;
|
|
85
86
|
this.displayFacets = false;
|
|
86
87
|
this.mobileMenuOpen = false;
|
|
@@ -123,13 +124,29 @@ class FtSearchBar extends FtLitElement {
|
|
|
123
124
|
this.displayFacets = this.displayFacets && e.composedPath().some(element => element === this.floatingContainer);
|
|
124
125
|
}
|
|
125
126
|
};
|
|
126
|
-
this.
|
|
127
|
-
|
|
127
|
+
this.compareUnknownFilters = (a, b) => {
|
|
128
|
+
if (a.valueFilter && b.valueFilter) {
|
|
129
|
+
return this.compareValueFilters(a.valueFilter, b.valueFilter);
|
|
130
|
+
}
|
|
131
|
+
if (a.dateFilter && b.dateFilter) {
|
|
132
|
+
return this.compareDateFilters(a.dateFilter, b.dateFilter);
|
|
133
|
+
}
|
|
134
|
+
if (a.rangeFilter && b.rangeFilter) {
|
|
135
|
+
return this.compareRangeFilters(a.rangeFilter, b.rangeFilter);
|
|
136
|
+
}
|
|
137
|
+
return false;
|
|
138
|
+
};
|
|
139
|
+
this.compareValueFilters = (a, b) => a.negative == b.negative
|
|
128
140
|
&& a.values.length === b.values.length
|
|
129
141
|
&& a.values.every(value => b.values.includes(value));
|
|
142
|
+
this.compareDateFilters = (a, b) => a.type === b.type;
|
|
143
|
+
this.compareRangeFilters = (a, b) => a.from === b.from
|
|
144
|
+
&& a.to === b.to;
|
|
145
|
+
this.compareFilters = (a, b) => a.key === b.key
|
|
146
|
+
&& this.compareUnknownFilters(a, b);
|
|
130
147
|
this.compareRequests = (a, b) => (a.contentLocale == null || b.contentLocale == null || a.contentLocale === b.contentLocale)
|
|
131
|
-
&& a.
|
|
132
|
-
&& a.
|
|
148
|
+
&& a.metadataFilters.length === b.metadataFilters.length
|
|
149
|
+
&& a.metadataFilters.every(fa => b.metadataFilters.some(fb => this.compareFilters(fa, fb)));
|
|
133
150
|
this.enableFocusReactionCallback = () => this.enableFocusReaction();
|
|
134
151
|
}
|
|
135
152
|
isMobileMenuOpen() {
|
|
@@ -142,13 +159,13 @@ class FtSearchBar extends FtLitElement {
|
|
|
142
159
|
query: this.query,
|
|
143
160
|
facets: this.facetsRequest,
|
|
144
161
|
priors: this.hasPriors ? this.priors : undefined,
|
|
145
|
-
|
|
162
|
+
metadataFilters: this.metadataFilters,
|
|
146
163
|
paging: { perPage: 0, page: 1 },
|
|
147
164
|
sort: [],
|
|
148
165
|
};
|
|
149
166
|
}
|
|
150
167
|
get facetsRequest() {
|
|
151
|
-
const fromFilters = this.
|
|
168
|
+
const fromFilters = this.metadataFilters.filter(f => { var _a, _b; return ((_b = (_a = f.valueFilter) === null || _a === void 0 ? void 0 : _a.values.length) !== null && _b !== void 0 ? _b : 0) > 0 && !this.displayedFilters.includes(f.key); })
|
|
152
169
|
.map(f => ({ id: f.key }));
|
|
153
170
|
return [...this.displayedFilters.map(id => ({ id })), ...fromFilters];
|
|
154
171
|
}
|
|
@@ -156,7 +173,7 @@ class FtSearchBar extends FtLitElement {
|
|
|
156
173
|
return {
|
|
157
174
|
contentLocale: this.contentLocale,
|
|
158
175
|
input: this.query,
|
|
159
|
-
|
|
176
|
+
metadataFilters: this.metadataFilters,
|
|
160
177
|
sort: []
|
|
161
178
|
};
|
|
162
179
|
}
|
|
@@ -196,7 +213,7 @@ class FtSearchBar extends FtLitElement {
|
|
|
196
213
|
}
|
|
197
214
|
clear() {
|
|
198
215
|
this.query = "";
|
|
199
|
-
this.
|
|
216
|
+
this.metadataFilters = [];
|
|
200
217
|
if (this.input) {
|
|
201
218
|
this.input.value = "";
|
|
202
219
|
}
|
|
@@ -335,7 +352,7 @@ class FtSearchBar extends FtLitElement {
|
|
|
335
352
|
`;
|
|
336
353
|
}
|
|
337
354
|
renderDesktopClearFilters() {
|
|
338
|
-
return this.
|
|
355
|
+
return this.metadataFilters.length > 0 ? html `
|
|
339
356
|
<ft-button part="facets-actions"
|
|
340
357
|
@click=${this.clearFilters}>
|
|
341
358
|
${this.labelResolver.resolve("clearFilters")}
|
|
@@ -422,7 +439,11 @@ class FtSearchBar extends FtLitElement {
|
|
|
422
439
|
this.initRecentSearches();
|
|
423
440
|
}
|
|
424
441
|
if (props.has("presets")) {
|
|
425
|
-
((_b = this.presets) !== null && _b !== void 0 ? _b : []).forEach(preset => preset.
|
|
442
|
+
((_b = this.presets) !== null && _b !== void 0 ? _b : []).forEach(preset => preset.metadataFilters.forEach(filter => {
|
|
443
|
+
if (filter.valueFilter) {
|
|
444
|
+
filter.valueFilter.values = filter.valueFilter.values.map(v => unquote(v));
|
|
445
|
+
}
|
|
446
|
+
}));
|
|
426
447
|
}
|
|
427
448
|
if (props.has("presets") || props.has("selectedPreset")) {
|
|
428
449
|
const currentPreset = ((_c = this.presets) !== null && _c !== void 0 ? _c : []).find(p => p.name === this.selectedPreset);
|
|
@@ -433,7 +454,7 @@ class FtSearchBar extends FtLitElement {
|
|
|
433
454
|
if (props.has("contentLocale") && this.contentLocale != null) {
|
|
434
455
|
this.knownFacetLabels = new Map();
|
|
435
456
|
}
|
|
436
|
-
if (["contentLocale", "
|
|
457
|
+
if (["contentLocale", "metadataFilters"].some(p => props.has(p))) {
|
|
437
458
|
this.selectedPreset = (_e = ((_d = this.presets) !== null && _d !== void 0 ? _d : []).find(p => this.compareRequests(p, this.request))) === null || _e === void 0 ? void 0 : _e.name;
|
|
438
459
|
}
|
|
439
460
|
if (["baseUrl", "apiIntegrationIdentifier"].some(p => props.has(p))) {
|
|
@@ -443,13 +464,13 @@ class FtSearchBar extends FtLitElement {
|
|
|
443
464
|
if (props.has("api") && this.api) {
|
|
444
465
|
this.initSearchData();
|
|
445
466
|
}
|
|
446
|
-
if (["uiLocale", "contentLocale", "
|
|
467
|
+
if (["uiLocale", "contentLocale", "metadataFilters", "displayedFilters"].some(p => props.has(p))) {
|
|
447
468
|
this.updateFacets();
|
|
448
469
|
}
|
|
449
|
-
if (["query", "uiLocale", "contentLocale", "
|
|
470
|
+
if (["query", "uiLocale", "contentLocale", "metadataFilters", "displayedFilters", "api"].some(p => props.has(p))) {
|
|
450
471
|
this.suggestManager.update();
|
|
451
472
|
}
|
|
452
|
-
if (["query", "uiLocale", "contentLocale", "
|
|
473
|
+
if (["query", "uiLocale", "contentLocale", "metadataFilters"].some(p => props.has(p))) {
|
|
453
474
|
this.dispatchStateChangeEvent();
|
|
454
475
|
}
|
|
455
476
|
}
|
|
@@ -580,7 +601,7 @@ class FtSearchBar extends FtLitElement {
|
|
|
580
601
|
this.sizeCategory = e.detail.category;
|
|
581
602
|
}
|
|
582
603
|
setFilter(key, selectedValues) {
|
|
583
|
-
let newFilters = this.
|
|
604
|
+
let newFilters = this.metadataFilters.filter(f => !f.valueFilter || f.key !== key);
|
|
584
605
|
this.facets.forEach(facet => {
|
|
585
606
|
if (facet.key === key) {
|
|
586
607
|
flatDeep(facet.rootNodes, n => n.childNodes).forEach(n => n.selected = selectedValues.includes(n.value));
|
|
@@ -589,11 +610,13 @@ class FtSearchBar extends FtLitElement {
|
|
|
589
610
|
if (selectedValues.length) {
|
|
590
611
|
newFilters.push({
|
|
591
612
|
key: key,
|
|
592
|
-
|
|
593
|
-
|
|
613
|
+
valueFilter: {
|
|
614
|
+
negative: false,
|
|
615
|
+
values: selectedValues
|
|
616
|
+
}
|
|
594
617
|
});
|
|
595
618
|
}
|
|
596
|
-
this.
|
|
619
|
+
this.metadataFilters = newFilters;
|
|
597
620
|
this.scrollToFacet = key;
|
|
598
621
|
}
|
|
599
622
|
setFiltersFromPreset(request) {
|
|
@@ -601,12 +624,12 @@ class FtSearchBar extends FtLitElement {
|
|
|
601
624
|
if (request.contentLocale != null) {
|
|
602
625
|
this.contentLocale = request.contentLocale;
|
|
603
626
|
}
|
|
604
|
-
this.
|
|
627
|
+
this.metadataFilters = request.metadataFilters;
|
|
605
628
|
}
|
|
606
629
|
}
|
|
607
630
|
clearFilters() {
|
|
608
631
|
this.facets.forEach(facet => flatDeep(facet.rootNodes, n => n.childNodes).forEach(n => n.selected = false));
|
|
609
|
-
this.
|
|
632
|
+
this.metadataFilters = [];
|
|
610
633
|
const firstFacet = this.facets[0];
|
|
611
634
|
this.scrollToFacet = firstFacet === null || firstFacet === void 0 ? void 0 : firstFacet.key;
|
|
612
635
|
}
|
|
@@ -718,7 +741,7 @@ __decorate([
|
|
|
718
741
|
], FtSearchBar.prototype, "focusOnDisplay", void 0);
|
|
719
742
|
__decorate([
|
|
720
743
|
state()
|
|
721
|
-
], FtSearchBar.prototype, "
|
|
744
|
+
], FtSearchBar.prototype, "metadataFilters", void 0);
|
|
722
745
|
__decorate([
|
|
723
746
|
state()
|
|
724
747
|
], FtSearchBar.prototype, "sizeCategory", void 0);
|