@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.
@@ -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 searchFilters;
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;
@@ -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.searchFilters = [];
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.compareFilters = (a, b) => a.key === b.key
127
- && a.negative == b.negative
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.filters.length === b.filters.length
132
- && a.filters.every(fa => b.filters.some(fb => this.compareFilters(fa, fb)));
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
- filters: this.searchFilters,
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.searchFilters.filter(f => f.values.length > 0 && !this.displayedFilters.includes(f.key))
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
- filters: this.searchFilters,
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.searchFilters = [];
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.searchFilters.length > 0 ? html `
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.filters.forEach(filter => filter.values = filter.values.map(v => unquote(v))));
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", "searchFilters"].some(p => props.has(p))) {
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", "searchFilters", "displayedFilters"].some(p => props.has(p))) {
467
+ if (["uiLocale", "contentLocale", "metadataFilters", "displayedFilters"].some(p => props.has(p))) {
447
468
  this.updateFacets();
448
469
  }
449
- if (["query", "uiLocale", "contentLocale", "searchFilters", "displayedFilters", "api"].some(p => props.has(p))) {
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", "searchFilters"].some(p => props.has(p))) {
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.searchFilters.filter(f => f.key !== key);
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
- negative: false,
593
- values: selectedValues
613
+ valueFilter: {
614
+ negative: false,
615
+ values: selectedValues
616
+ }
594
617
  });
595
618
  }
596
- this.searchFilters = newFilters;
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.searchFilters = request.filters;
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.searchFilters = [];
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, "searchFilters", void 0);
744
+ ], FtSearchBar.prototype, "metadataFilters", void 0);
722
745
  __decorate([
723
746
  state()
724
747
  ], FtSearchBar.prototype, "sizeCategory", void 0);