@fluid-topics/ft-search-context 1.1.107 → 1.1.111

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.
@@ -1,8 +1,8 @@
1
- import { FtSearchFilter, FtSearchSortCriterion } from "@fluid-topics/public-api";
1
+ import { FtMetadataFilter, FtSearchSortCriterion } from "@fluid-topics/public-api";
2
2
  export interface FtSearchContextProperties {
3
3
  query?: string;
4
4
  contentLocale?: string;
5
- filters?: FtSearchFilter[];
5
+ filters?: FtMetadataFilter[];
6
6
  sort?: FtSearchSortCriterion[];
7
7
  pageSize?: number;
8
8
  }
@@ -1,9 +1,8 @@
1
1
  import { FtSearchPageState } from "./model";
2
2
  import { FtReduxStore } from "@fluid-topics/ft-wc-utils";
3
3
  import { FtSearchPageStateReducers } from "./redux";
4
- import { FtPublicClusterSortCriterion, FtSearchFilter, FtSearchRequest, FtSearchScope, FtSearchSortCriterion, FtVirtualField } from "@fluid-topics/public-api";
4
+ import { FtDateFilterTypeKeys, FtMetadataFilter, FtPublicClusterSortCriterion, FtSearchRequest, FtSearchScope, FtSearchSortCriterion, FtVirtualField } from "@fluid-topics/public-api";
5
5
  import { FtSearchService } from "./utils/FtSearchService";
6
- import { FtPeriodFilter } from "@fluid-topics/public-api/dist/mjs/types/ft-common/public";
7
6
  export declare const searchInDocumentTitlesOnlySelector: (s: FtSearchPageState) => boolean;
8
7
  export declare class ClearAllFiltersEvent extends Event {
9
8
  static eventName: string;
@@ -23,24 +22,27 @@ export declare class FtSearchStateManager {
23
22
  setPageSize(pageSize: number): void;
24
23
  setPageNumber(pageNumber: number): void;
25
24
  setSort(sort: FtSearchSortCriterion[]): void;
26
- setFilters(filters: FtSearchFilter[]): void;
25
+ setFilters(filters: FtMetadataFilter[]): void;
27
26
  setClusterSortCriterion(criterions: FtPublicClusterSortCriterion[]): void;
28
27
  setSearchInDocumentTitlesOnly(searchInDocumentTitleOnly: boolean): void;
29
28
  setVirtualField(virtualField: FtVirtualField): void;
30
29
  get searchInDocumentTitlesOnly(): boolean;
31
- get periodFilter(): FtPeriodFilter | undefined;
32
30
  clearAllFilters(): void;
33
31
  addFacet(id: string): void;
34
32
  replaceFacet(oldId: string, newId?: string): void;
35
33
  private get facetIds();
36
34
  private set facetIds(value);
37
35
  setFilter(key: string, values: string[]): void;
36
+ setValueFilter(key: string, values: string[]): void;
37
+ setDateFilter(key: string, dateType: FtDateFilterTypeKeys): void;
38
+ removeDateFilter(key: string): void;
39
+ setRangeFilter(key: string, from: string, to: string): void;
40
+ removeRangeFilter(key: string): void;
38
41
  setLiveQuery(query: string): void;
39
42
  setRequest(request: FtSearchRequest): void;
40
43
  setScope(scope: FtSearchScope): void;
41
44
  setIgnoreEmptyQuery(ignoreEmptyQuery: boolean): void;
42
45
  setOpenExternalDocumentInNewTab(openExternalDocumentInNewTab: boolean): void;
43
- setPeriodFilter(periodFilter?: FtPeriodFilter): void;
44
46
  private localesDebouncer;
45
47
  updateLocales(): Promise<boolean>;
46
48
  private searchDebouncer;
@@ -65,7 +65,7 @@ export class FtSearchStateManager {
65
65
  this.launchSearch();
66
66
  }
67
67
  setFilters(filters) {
68
- const cleanFilters = filters.filter(filter => filter.values.length > 0);
68
+ const cleanFilters = filters.filter(f => !f.valueFilter || f.valueFilter.values.length > 0);
69
69
  this.store.actions.setRequestFilters(cleanFilters);
70
70
  this.store.actions.setPageNumber(1);
71
71
  cleanFilters.forEach(f => {
@@ -97,9 +97,6 @@ export class FtSearchStateManager {
97
97
  get searchInDocumentTitlesOnly() {
98
98
  return searchInDocumentTitlesOnlySelector(this.store.getState());
99
99
  }
100
- get periodFilter() {
101
- return this.store.getState().request.periodFilter;
102
- }
103
100
  // Used in GWT
104
101
  clearAllFilters() {
105
102
  this.setFilters([]);
@@ -125,10 +122,71 @@ export class FtSearchStateManager {
125
122
  let facetsConf = uniqIds.map(id => ({ id: id }));
126
123
  this.store.actions.setRequestFacets(facetsConf);
127
124
  }
125
+ /* @deprecated */
128
126
  setFilter(key, values) {
129
- let existingFilters = this.store.getState().request.filters;
130
- let newFilter = { key: key, values: values, negative: false };
131
- let filters = [...existingFilters.filter(filter => filter.key !== key), newFilter];
127
+ this.setValueFilter(key, values);
128
+ }
129
+ setValueFilter(key, values) {
130
+ let existingFilters = this.store.getState().request.metadataFilters;
131
+ let newFilter = {
132
+ key: key,
133
+ valueFilter: {
134
+ values: values,
135
+ negative: false,
136
+ },
137
+ };
138
+ let filters = [
139
+ ...existingFilters.filter(f => !f.valueFilter),
140
+ ...existingFilters.filter(f => f.valueFilter && f.key !== newFilter.key),
141
+ newFilter
142
+ ];
143
+ this.setFilters(filters);
144
+ }
145
+ setDateFilter(key, dateType) {
146
+ let existingFilters = this.store.getState().request.metadataFilters;
147
+ let newFilter = {
148
+ key: key,
149
+ dateFilter: {
150
+ type: dateType
151
+ },
152
+ };
153
+ let filters = [
154
+ ...existingFilters.filter(f => !f.dateFilter),
155
+ ...existingFilters.filter(f => f.dateFilter && f.key !== newFilter.key),
156
+ newFilter
157
+ ];
158
+ this.setFilters(filters);
159
+ }
160
+ removeDateFilter(key) {
161
+ let existingFilters = this.store.getState().request.metadataFilters;
162
+ const filters = [
163
+ ...existingFilters.filter(f => !f.dateFilter),
164
+ ...existingFilters.filter(f => f.dateFilter && f.key !== key),
165
+ ];
166
+ this.setFilters(filters);
167
+ }
168
+ setRangeFilter(key, from, to) {
169
+ let existingFilters = this.store.getState().request.metadataFilters;
170
+ let newFilter = {
171
+ key: key,
172
+ rangeFilter: {
173
+ from: from,
174
+ to: to
175
+ },
176
+ };
177
+ let filters = [
178
+ ...existingFilters.filter(f => !f.rangeFilter),
179
+ ...existingFilters.filter(f => f.rangeFilter && f.key !== newFilter.key),
180
+ newFilter
181
+ ];
182
+ this.setFilters(filters);
183
+ }
184
+ removeRangeFilter(key) {
185
+ let existingFilters = this.store.getState().request.metadataFilters;
186
+ const filters = [
187
+ ...existingFilters.filter(f => !f.rangeFilter),
188
+ ...existingFilters.filter(f => f.rangeFilter && f.key !== key),
189
+ ];
132
190
  this.setFilters(filters);
133
191
  }
134
192
  setLiveQuery(query) {
@@ -152,11 +210,6 @@ export class FtSearchStateManager {
152
210
  setOpenExternalDocumentInNewTab(openExternalDocumentInNewTab) {
153
211
  this.openExternalDocumentInNewTab = openExternalDocumentInNewTab;
154
212
  }
155
- setPeriodFilter(periodFilter) {
156
- this.store.actions.setRequestPeriodFilter(periodFilter);
157
- this.store.actions.setPageNumber(1);
158
- this.launchSearch();
159
- }
160
213
  updateLocales() {
161
214
  return this.localesDebouncer.run(async () => this.store.actions.setLocales((await this.service.getAvailableSearchLocales()).contentLocales));
162
215
  }
@@ -205,7 +258,7 @@ export class FtSearchStateManager {
205
258
  const searchRequest = searchState.request;
206
259
  const request = {
207
260
  input: searchState.liveQuery,
208
- filters: searchRequest.filters,
261
+ metadataFilters: searchRequest.metadataFilters,
209
262
  sort: searchRequest.sort,
210
263
  contentLocale: searchRequest.contentLocale,
211
264
  scope: searchRequest.scope,
@@ -8,7 +8,7 @@ declare const searchPageStateReducers: {
8
8
  setPageSize: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["paging"]["perPage"]>) => void;
9
9
  setPageNumber: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["paging"]["page"]>) => void;
10
10
  setRequestSort: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["sort"]>) => void;
11
- setRequestFilters: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["filters"]>) => void;
11
+ setRequestFilters: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["metadataFilters"]>) => void;
12
12
  setRequestFacets: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["facets"]>) => void;
13
13
  setRequestVirtualField: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["virtualField"]>) => void;
14
14
  setRequestScope: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["scope"]>) => void;
@@ -20,7 +20,6 @@ declare const searchPageStateReducers: {
20
20
  setPaging: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["paging"]>) => void;
21
21
  setLiveQuery: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["liveQuery"]>) => void;
22
22
  setSuggestResults: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["suggestResults"]>) => void;
23
- setRequestPeriodFilter: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["periodFilter"]>) => void;
24
23
  };
25
24
  export type FtSearchPageStateReducers = typeof searchPageStateReducers;
26
25
  export declare const createSearchPageStore: (id: string) => FtReduxStore<FtSearchPageState, {
@@ -30,7 +29,7 @@ export declare const createSearchPageStore: (id: string) => FtReduxStore<FtSearc
30
29
  setPageSize: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["paging"]["perPage"]>) => void;
31
30
  setPageNumber: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["paging"]["page"]>) => void;
32
31
  setRequestSort: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["sort"]>) => void;
33
- setRequestFilters: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["filters"]>) => void;
32
+ setRequestFilters: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["metadataFilters"]>) => void;
34
33
  setRequestFacets: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["facets"]>) => void;
35
34
  setRequestVirtualField: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["virtualField"]>) => void;
36
35
  setRequestScope: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["scope"]>) => void;
@@ -42,6 +41,5 @@ export declare const createSearchPageStore: (id: string) => FtReduxStore<FtSearc
42
41
  setPaging: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["paging"]>) => void;
43
42
  setLiveQuery: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["liveQuery"]>) => void;
44
43
  setSuggestResults: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["suggestResults"]>) => void;
45
- setRequestPeriodFilter: (state: FtSearchPageState, action: PayloadAction<FtSearchPageState["request"]["periodFilter"]>) => void;
46
44
  }, import("redux").AnyAction>;
47
45
  export {};
@@ -19,7 +19,7 @@ const searchPageStateReducers = {
19
19
  state.request.sort = action.payload;
20
20
  },
21
21
  setRequestFilters: (state, action) => {
22
- state.request.filters = action.payload;
22
+ state.request.metadataFilters = action.payload;
23
23
  },
24
24
  setRequestFacets: (state, action) => {
25
25
  state.request.facets = action.payload;
@@ -55,9 +55,6 @@ const searchPageStateReducers = {
55
55
  setSuggestResults: (state, action) => {
56
56
  state.suggestResults = action.payload;
57
57
  },
58
- setRequestPeriodFilter: (state, action) => {
59
- state.request.periodFilter = action.payload;
60
- },
61
58
  };
62
59
  export const createSearchPageStore = (id) => FtReduxStore.get({
63
60
  name: "ft-search-" + id,
@@ -65,7 +62,7 @@ export const createSearchPageStore = (id) => FtReduxStore.get({
65
62
  request: {
66
63
  query: "",
67
64
  clusterSortCriterions: [],
68
- filters: [],
65
+ metadataFilters: [],
69
66
  facets: [],
70
67
  sort: [],
71
68
  paging: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-topics/ft-search-context",
3
- "version": "1.1.107",
3
+ "version": "1.1.111",
4
4
  "description": "Context block for integrated search components",
5
5
  "keywords": [
6
6
  "Lit"
@@ -19,12 +19,12 @@
19
19
  "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
20
  },
21
21
  "dependencies": {
22
- "@fluid-topics/ft-app-context": "1.1.107",
23
- "@fluid-topics/ft-wc-utils": "1.1.107",
22
+ "@fluid-topics/ft-app-context": "1.1.111",
23
+ "@fluid-topics/ft-wc-utils": "1.1.111",
24
24
  "lit": "3.1.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@fluid-topics/public-api": "1.0.75"
27
+ "@fluid-topics/public-api": "1.0.77"
28
28
  },
29
- "gitHead": "8dd7bc8f7eb8c278b8d3ac319694daa86f9ac9af"
29
+ "gitHead": "23129f0e44db11e1d2c0431cedc4dde05c3241ee"
30
30
  }