@searchspring/snap-store-mobx 0.23.1 → 0.25.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/dist/cjs/Finder/FinderStore.d.ts +10 -2
- package/dist/cjs/Finder/FinderStore.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderStore.js +67 -3
- package/dist/cjs/Finder/Stores/SelectionStore.d.ts +11 -2
- package/dist/cjs/Finder/Stores/SelectionStore.d.ts.map +1 -1
- package/dist/cjs/Finder/Stores/SelectionStore.js +64 -14
- package/dist/cjs/Search/Stores/FacetStore.d.ts.map +1 -1
- package/dist/cjs/Search/Stores/FacetStore.js +18 -10
- package/dist/cjs/Search/Stores/QueryStore.d.ts +2 -1
- package/dist/cjs/Search/Stores/QueryStore.d.ts.map +1 -1
- package/dist/cjs/Search/Stores/QueryStore.js +4 -0
- package/dist/cjs/Storage/StorageStore.d.ts +2 -1
- package/dist/cjs/Storage/StorageStore.d.ts.map +1 -1
- package/dist/cjs/Storage/StorageStore.js +10 -3
- package/dist/cjs/types.d.ts +28 -6
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/Finder/FinderStore.d.ts +10 -2
- package/dist/esm/Finder/FinderStore.d.ts.map +1 -1
- package/dist/esm/Finder/FinderStore.js +64 -3
- package/dist/esm/Finder/Stores/SelectionStore.d.ts +11 -2
- package/dist/esm/Finder/Stores/SelectionStore.d.ts.map +1 -1
- package/dist/esm/Finder/Stores/SelectionStore.js +59 -12
- package/dist/esm/Search/Stores/FacetStore.d.ts.map +1 -1
- package/dist/esm/Search/Stores/FacetStore.js +11 -5
- package/dist/esm/Search/Stores/QueryStore.d.ts +2 -1
- package/dist/esm/Search/Stores/QueryStore.d.ts.map +1 -1
- package/dist/esm/Search/Stores/QueryStore.js +4 -0
- package/dist/esm/Storage/StorageStore.d.ts +2 -1
- package/dist/esm/Storage/StorageStore.d.ts.map +1 -1
- package/dist/esm/Storage/StorageStore.js +10 -3
- package/dist/esm/types.d.ts +28 -6
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -3,18 +3,26 @@ import { AbstractStore } from '../Abstract/AbstractStore';
|
|
|
3
3
|
import { PaginationStore } from '../Search/Stores';
|
|
4
4
|
import { StorageStore } from '../Storage/StorageStore';
|
|
5
5
|
import { SelectionStore } from './Stores';
|
|
6
|
-
import type { FinderStoreConfig, StoreServices } from '../types';
|
|
6
|
+
import type { FinderStoreConfig, StoreServices, SelectedSelection, FinderStoreState } from '../types';
|
|
7
7
|
export declare class FinderStore extends AbstractStore {
|
|
8
8
|
services: StoreServices;
|
|
9
9
|
config: FinderStoreConfig;
|
|
10
|
+
data: SearchResponseModel & {
|
|
11
|
+
meta: MetaResponseModel;
|
|
12
|
+
};
|
|
10
13
|
meta: MetaResponseModel;
|
|
11
14
|
storage: StorageStore;
|
|
15
|
+
persistedStorage: StorageStore;
|
|
12
16
|
pagination: PaginationStore;
|
|
13
17
|
selections: SelectionStore;
|
|
18
|
+
state: FinderStoreState;
|
|
14
19
|
constructor(config: FinderStoreConfig, services: StoreServices);
|
|
15
20
|
setService(name: any, service: any): void;
|
|
21
|
+
save(): void;
|
|
22
|
+
reset: () => void;
|
|
23
|
+
loadPersisted(): void;
|
|
16
24
|
update(data: SearchResponseModel & {
|
|
17
25
|
meta: MetaResponseModel;
|
|
18
|
-
}): void;
|
|
26
|
+
}, selectedSelections?: SelectedSelection[]): void;
|
|
19
27
|
}
|
|
20
28
|
//# sourceMappingURL=FinderStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderStore.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"FinderStore.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAe,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEtG,qBAAa,WAAY,SAAQ,aAAa;IAC7C,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC;IACxD,IAAI,EAAE,iBAAiB,CAAM;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAErB;gBAEU,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IA0B9D,UAAU,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,GAAG,IAAI;IAM/B,IAAI,IAAI,IAAI;IAkBZ,KAAK,QAAO,IAAI,CAWd;IAEF,aAAa,IAAI,IAAI;IAoBrB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,EAAE,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,GAAG,IAAI;CAe/G"}
|
|
@@ -25,13 +25,34 @@ var FinderStore = /** @class */ (function (_super) {
|
|
|
25
25
|
__extends(FinderStore, _super);
|
|
26
26
|
function FinderStore(config, services) {
|
|
27
27
|
var _this = this;
|
|
28
|
-
var _a;
|
|
28
|
+
var _a, _b;
|
|
29
29
|
_this = _super.call(this, config) || this;
|
|
30
30
|
_this.meta = {};
|
|
31
|
+
_this.state = {
|
|
32
|
+
persisted: false,
|
|
33
|
+
};
|
|
34
|
+
_this.reset = function () {
|
|
35
|
+
var _a;
|
|
36
|
+
if ((_a = _this.config.persist) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
37
|
+
_this.persistedStorage.clear();
|
|
38
|
+
_this.state.persisted = false;
|
|
39
|
+
}
|
|
40
|
+
if (_this.services.urlManager.state.filter) {
|
|
41
|
+
_this.storage.clear();
|
|
42
|
+
_this.selections = [];
|
|
43
|
+
_this.loaded = false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
31
46
|
if (typeof services != 'object' || typeof ((_a = services.urlManager) === null || _a === void 0 ? void 0 : _a.subscribe) != 'function') {
|
|
32
47
|
throw new Error("Invalid service 'urlManager' passed to AutocompleteStore. Missing \"subscribe\" function.");
|
|
33
48
|
}
|
|
34
49
|
_this.services = services;
|
|
50
|
+
if ((_b = config.persist) === null || _b === void 0 ? void 0 : _b.enabled) {
|
|
51
|
+
_this.persistedStorage = new StorageStore_1.StorageStore({
|
|
52
|
+
type: StorageStore_1.StorageType.LOCAL,
|
|
53
|
+
key: "ss-".concat(config.id, "-persisted"),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
35
56
|
_this.storage = new StorageStore_1.StorageStore();
|
|
36
57
|
_this.update({ meta: {} });
|
|
37
58
|
(0, mobx_1.makeObservable)(_this, {
|
|
@@ -45,12 +66,55 @@ var FinderStore = /** @class */ (function (_super) {
|
|
|
45
66
|
this.services[name] = service;
|
|
46
67
|
}
|
|
47
68
|
};
|
|
48
|
-
FinderStore.prototype.
|
|
69
|
+
FinderStore.prototype.save = function () {
|
|
70
|
+
var _a;
|
|
71
|
+
if (((_a = this.config.persist) === null || _a === void 0 ? void 0 : _a.enabled) && this.selections.filter(function (selection) { return selection.selected; }).length) {
|
|
72
|
+
this.persistedStorage.set('config', this.config);
|
|
73
|
+
this.persistedStorage.set('data', this.data);
|
|
74
|
+
this.persistedStorage.set('date', Date.now());
|
|
75
|
+
this.persistedStorage.set('selections', this.selections.map(function (selection) {
|
|
76
|
+
return {
|
|
77
|
+
selected: selection.selected,
|
|
78
|
+
data: selection.data,
|
|
79
|
+
facet: selection.facet,
|
|
80
|
+
};
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
FinderStore.prototype.loadPersisted = function () {
|
|
85
|
+
var _a;
|
|
86
|
+
if (((_a = this.config.persist) === null || _a === void 0 ? void 0 : _a.enabled) && !this.loaded) {
|
|
87
|
+
var date = this.persistedStorage.get('date');
|
|
88
|
+
var data = this.persistedStorage.get('data');
|
|
89
|
+
var config = this.persistedStorage.get('config');
|
|
90
|
+
var selections = this.persistedStorage.get('selections');
|
|
91
|
+
var isExpired = this.config.persist.expiration && Date.now() - date > this.config.persist.expiration;
|
|
92
|
+
if (data && selections.filter(function (selection) { return selection.selected; }).length) {
|
|
93
|
+
if (JSON.stringify(config) === JSON.stringify(this.config) && !isExpired) {
|
|
94
|
+
this.update(data, selections);
|
|
95
|
+
this.state.persisted = true;
|
|
96
|
+
this.services.urlManager.go();
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.reset();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
FinderStore.prototype.update = function (data, selectedSelections) {
|
|
49
105
|
this.error = undefined;
|
|
106
|
+
this.data = JSON.parse(JSON.stringify(data));
|
|
50
107
|
this.loaded = !!data.pagination;
|
|
51
108
|
this.meta = data.meta;
|
|
52
109
|
this.pagination = new Stores_1.PaginationStore(this.config, this.services, data.pagination);
|
|
53
|
-
this.selections = new Stores_2.SelectionStore(this.config, this.services,
|
|
110
|
+
this.selections = new Stores_2.SelectionStore(this.config, this.services, {
|
|
111
|
+
state: this.state,
|
|
112
|
+
facets: data.facets,
|
|
113
|
+
meta: this.meta,
|
|
114
|
+
loading: this.loading,
|
|
115
|
+
storage: this.storage,
|
|
116
|
+
selections: selectedSelections,
|
|
117
|
+
});
|
|
54
118
|
};
|
|
55
119
|
return FinderStore;
|
|
56
120
|
}(AbstractStore_1.AbstractStore));
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import type { FinderStoreConfig, StoreServices } from '../../types';
|
|
1
|
+
import type { FinderStoreConfig, StoreServices, SelectedSelection, FinderStoreState } from '../../types';
|
|
2
2
|
import type { StorageStore } from '../../Storage/StorageStore';
|
|
3
3
|
import type { MetaResponseModel, SearchResponseModelFacet } from '@searchspring/snapi-types';
|
|
4
|
+
declare type SelectionStoreData = {
|
|
5
|
+
state: FinderStoreState;
|
|
6
|
+
facets: SearchResponseModelFacet[];
|
|
7
|
+
meta: MetaResponseModel;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
storage: StorageStore;
|
|
10
|
+
selections: SelectedSelection[];
|
|
11
|
+
};
|
|
4
12
|
export declare class SelectionStore extends Array {
|
|
5
13
|
static get [Symbol.species](): ArrayConstructor;
|
|
6
|
-
constructor(config: FinderStoreConfig, services: StoreServices,
|
|
14
|
+
constructor(config: FinderStoreConfig, services: StoreServices, { state, facets, meta, loading, storage, selections }: SelectionStoreData);
|
|
7
15
|
}
|
|
16
|
+
export {};
|
|
8
17
|
//# sourceMappingURL=SelectionStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionStore.d.ts","sourceRoot":"","sources":["../../../../src/Finder/Stores/SelectionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectionStore.d.ts","sourceRoot":"","sources":["../../../../src/Finder/Stores/SelectionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5H,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAA4C,MAAM,2BAA2B,CAAC;AAEvI,aAAK,kBAAkB,GAAG;IACzB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,iBAAiB,EAAE,CAAC;CAChC,CAAC;AACF,qBAAa,cAAe,SAAQ,KAAK;IACxC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEW,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB;CA+FzI"}
|
|
@@ -38,17 +38,60 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
38
38
|
exports.SelectionStore = void 0;
|
|
39
39
|
var SelectionStore = /** @class */ (function (_super) {
|
|
40
40
|
__extends(SelectionStore, _super);
|
|
41
|
-
function SelectionStore(config, services,
|
|
42
|
-
var _a;
|
|
43
|
-
var
|
|
44
|
-
|
|
41
|
+
function SelectionStore(config, services, _a) {
|
|
42
|
+
var state = _a.state, facets = _a.facets, meta = _a.meta, loading = _a.loading, storage = _a.storage, selections = _a.selections;
|
|
43
|
+
var _b;
|
|
44
|
+
var selectedSelections = [];
|
|
45
|
+
if (selections === null || selections === void 0 ? void 0 : selections.length) {
|
|
46
|
+
config.fields.forEach(function (fieldObj) {
|
|
47
|
+
var _a;
|
|
48
|
+
var storedData = selections.find(function (selection) { return selection.facet.field === fieldObj.field; });
|
|
49
|
+
if (storedData) {
|
|
50
|
+
var facet_1 = storedData.facet, selected = storedData.selected;
|
|
51
|
+
if (facet_1 === null || facet_1 === void 0 ? void 0 : facet_1.hierarchyDelimiter) {
|
|
52
|
+
// hierarchy
|
|
53
|
+
selections.forEach(function (selection, index) {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
var levels = (fieldObj === null || fieldObj === void 0 ? void 0 : fieldObj.levels) || ((_a = facet_1 === null || facet_1 === void 0 ? void 0 : facet_1.values[(facet_1 === null || facet_1 === void 0 ? void 0 : facet_1.values.length) - 1]) === null || _a === void 0 ? void 0 : _a.value.split(facet_1.hierarchyDelimiter));
|
|
56
|
+
var levelConfig = { index: index, label: fieldObj.levels ? levels[index] : '', key: "ss-".concat(index) };
|
|
57
|
+
var storageKey = generateStorageKey(config.id, facet_1.field);
|
|
58
|
+
storage.set("".concat(storageKey, ".").concat(levelConfig.key, ".values"), selection.data);
|
|
59
|
+
var selectionHierarchy = new SelectionHierarchy(services, config.id, state, facet_1, levelConfig, loading, storage);
|
|
60
|
+
selectionHierarchy.selected = selection.selected;
|
|
61
|
+
selectionHierarchy.data = selection.data;
|
|
62
|
+
if ((_b = config.persist) === null || _b === void 0 ? void 0 : _b.lockSelections) {
|
|
63
|
+
selectionHierarchy.disabled = true;
|
|
64
|
+
}
|
|
65
|
+
if (selection.selected) {
|
|
66
|
+
services.urlManager = services.urlManager.set("filter.".concat(selection.facet.field), selection.selected);
|
|
67
|
+
}
|
|
68
|
+
selectedSelections.push(selectionHierarchy);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
var selection = new Selection(services, config.id, state, facet_1, fieldObj, loading, storage);
|
|
73
|
+
selection.selected = selected;
|
|
74
|
+
selection.storage.set('selected', selected);
|
|
75
|
+
selection.data = facet_1.values;
|
|
76
|
+
if (selected) {
|
|
77
|
+
services.urlManager = services.urlManager.set("filter.".concat(facet_1.field), selected);
|
|
78
|
+
}
|
|
79
|
+
if ((_a = config.persist) === null || _a === void 0 ? void 0 : _a.lockSelections) {
|
|
80
|
+
selection.disabled = true;
|
|
81
|
+
}
|
|
82
|
+
selectedSelections.push(selection);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else if (facets && meta) {
|
|
45
88
|
// re-order facets to match our config
|
|
46
89
|
(config === null || config === void 0 ? void 0 : config.fields) &&
|
|
47
90
|
facets.sort(function (a, b) {
|
|
48
91
|
var fields = config.fields.map(function (fieldConfig) { return fieldConfig.field; });
|
|
49
92
|
return fields.indexOf(a.field) - fields.indexOf(b.field);
|
|
50
93
|
});
|
|
51
|
-
(
|
|
94
|
+
(_b = config === null || config === void 0 ? void 0 : config.fields) === null || _b === void 0 ? void 0 : _b.forEach(function (fieldObj) {
|
|
52
95
|
var _a;
|
|
53
96
|
var facet = facets === null || facets === void 0 ? void 0 : facets.filter(function (facet) { return facet.field == fieldObj.field; }).pop();
|
|
54
97
|
facet = __assign(__assign({}, meta === null || meta === void 0 ? void 0 : meta.facets[fieldObj.field]), facet);
|
|
@@ -65,15 +108,15 @@ var SelectionStore = /** @class */ (function (_super) {
|
|
|
65
108
|
var levels = (fieldObj === null || fieldObj === void 0 ? void 0 : fieldObj.levels) || ((_a = facet === null || facet === void 0 ? void 0 : facet.values[(facet === null || facet === void 0 ? void 0 : facet.values.length) - 1]) === null || _a === void 0 ? void 0 : _a.value.split(facet.hierarchyDelimiter));
|
|
66
109
|
levels === null || levels === void 0 ? void 0 : levels.map(function (level, index) {
|
|
67
110
|
var levelConfig = { index: index, label: fieldObj.levels ? level : '', key: "ss-".concat(index) };
|
|
68
|
-
|
|
111
|
+
selectedSelections.push(new SelectionHierarchy(services, config.id, state, facet, levelConfig, loading, storage));
|
|
69
112
|
});
|
|
70
113
|
}
|
|
71
114
|
else {
|
|
72
|
-
|
|
115
|
+
selectedSelections.push(new Selection(services, config.id, state, facet, fieldObj, loading, storage));
|
|
73
116
|
}
|
|
74
117
|
});
|
|
75
118
|
}
|
|
76
|
-
return _super.apply(this,
|
|
119
|
+
return _super.apply(this, selectedSelections) || this;
|
|
77
120
|
}
|
|
78
121
|
Object.defineProperty(SelectionStore, Symbol.species, {
|
|
79
122
|
get: function () {
|
|
@@ -86,7 +129,7 @@ var SelectionStore = /** @class */ (function (_super) {
|
|
|
86
129
|
}(Array));
|
|
87
130
|
exports.SelectionStore = SelectionStore;
|
|
88
131
|
var SelectionBase = /** @class */ (function () {
|
|
89
|
-
function SelectionBase(services, id, facet, selectionConfig, loading, storageStore) {
|
|
132
|
+
function SelectionBase(services, id, state, facet, selectionConfig, loading, storageStore) {
|
|
90
133
|
this.filtered = false;
|
|
91
134
|
this.collapsed = false;
|
|
92
135
|
this.display = '';
|
|
@@ -95,9 +138,11 @@ var SelectionBase = /** @class */ (function () {
|
|
|
95
138
|
this.custom = {};
|
|
96
139
|
this.services = services;
|
|
97
140
|
this.loading = loading;
|
|
141
|
+
this.state = state;
|
|
98
142
|
this.id = id;
|
|
99
143
|
this.config = selectionConfig;
|
|
100
144
|
// inherit all standard facet properties
|
|
145
|
+
this.facet = facet;
|
|
101
146
|
this.type = facet.type;
|
|
102
147
|
this.field = facet.field;
|
|
103
148
|
this.filtered = facet.filtered;
|
|
@@ -107,7 +152,7 @@ var SelectionBase = /** @class */ (function () {
|
|
|
107
152
|
this.multiple = facet.multiple;
|
|
108
153
|
// abstracted StorageStore
|
|
109
154
|
this.storage = {
|
|
110
|
-
key:
|
|
155
|
+
key: generateStorageKey(this.id, this.field),
|
|
111
156
|
get: function (key) {
|
|
112
157
|
var path = this.key + (key ? ".".concat(key) : '');
|
|
113
158
|
return storageStore.get(path);
|
|
@@ -135,8 +180,8 @@ var SelectionBase = /** @class */ (function () {
|
|
|
135
180
|
}());
|
|
136
181
|
var Selection = /** @class */ (function (_super) {
|
|
137
182
|
__extends(Selection, _super);
|
|
138
|
-
function Selection(services, id, facet, config, loading, storageStore) {
|
|
139
|
-
var _this = _super.call(this, services, id, facet, config, loading, storageStore) || this;
|
|
183
|
+
function Selection(services, id, state, facet, config, loading, storageStore) {
|
|
184
|
+
var _this = _super.call(this, services, id, state, facet, config, loading, storageStore) || this;
|
|
140
185
|
_this.loading = loading;
|
|
141
186
|
_this.storage.set('values', facet.values);
|
|
142
187
|
var storageData = _this.storage.get();
|
|
@@ -152,6 +197,7 @@ var Selection = /** @class */ (function (_super) {
|
|
|
152
197
|
return;
|
|
153
198
|
this.selected = value;
|
|
154
199
|
this.storage.set('selected', value);
|
|
200
|
+
this.state.persisted = false;
|
|
155
201
|
if (!value) {
|
|
156
202
|
this.services.urlManager.remove("filter.".concat(this.field)).go();
|
|
157
203
|
}
|
|
@@ -163,10 +209,10 @@ var Selection = /** @class */ (function (_super) {
|
|
|
163
209
|
}(SelectionBase));
|
|
164
210
|
var SelectionHierarchy = /** @class */ (function (_super) {
|
|
165
211
|
__extends(SelectionHierarchy, _super);
|
|
166
|
-
function SelectionHierarchy(services, id, facet, config, loading, storageStore) {
|
|
212
|
+
function SelectionHierarchy(services, id, state, facet, config, loading, storageStore) {
|
|
167
213
|
var _this = this;
|
|
168
214
|
var _a, _b, _c;
|
|
169
|
-
_this = _super.call(this, services, id, facet, config, loading, storageStore) || this;
|
|
215
|
+
_this = _super.call(this, services, id, state, facet, config, loading, storageStore) || this;
|
|
170
216
|
// inherit additional facet properties
|
|
171
217
|
_this.hierarchyDelimiter = facet.hierarchyDelimiter;
|
|
172
218
|
var storageData = _this.storage.get();
|
|
@@ -204,6 +250,7 @@ var SelectionHierarchy = /** @class */ (function (_super) {
|
|
|
204
250
|
if (this.loading)
|
|
205
251
|
return;
|
|
206
252
|
this.selected = value;
|
|
253
|
+
this.state.persisted = false;
|
|
207
254
|
var selectedLevel = this.config.index;
|
|
208
255
|
var storedLevels = this.storage.get();
|
|
209
256
|
var keysToRemove = Object.keys(storedLevels).slice(selectedLevel);
|
|
@@ -227,3 +274,6 @@ var SelectionHierarchy = /** @class */ (function (_super) {
|
|
|
227
274
|
};
|
|
228
275
|
return SelectionHierarchy;
|
|
229
276
|
}(SelectionBase));
|
|
277
|
+
function generateStorageKey(id, field) {
|
|
278
|
+
return "ss-finder-".concat(id, ".").concat(field);
|
|
279
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/FacetStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EACX,iBAAiB,EAMjB,6BAA6B,EAC7B,wBAAwB,EAMxB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,UAAW,SAAQ,KAAK;IACpC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEA,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,EACnD,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,wBAAwB,EAAO,EAC3C,UAAU,EAAE,6BAA6B,EACzC,IAAI,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"FacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/FacetStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EACX,iBAAiB,EAMjB,6BAA6B,EAC7B,wBAAwB,EAMxB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,UAAW,SAAQ,KAAK;IACpC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEA,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,EACnD,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,wBAAwB,EAAO,EAC3C,UAAU,EAAE,6BAA6B,EACzC,IAAI,EAAE,iBAAiB;CA8CxB"}
|
|
@@ -23,7 +23,7 @@ var FacetStore = /** @class */ (function (_super) {
|
|
|
23
23
|
if (facetsData === void 0) { facetsData = []; }
|
|
24
24
|
var facets = facetsData
|
|
25
25
|
.filter(function (facet) {
|
|
26
|
-
var _a, _b, _c, _d;
|
|
26
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
27
27
|
var facetMeta = meta.facets[facet.field];
|
|
28
28
|
// exclude facets that have no meta data
|
|
29
29
|
if (!facetMeta)
|
|
@@ -33,14 +33,16 @@ var FacetStore = /** @class */ (function (_super) {
|
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
// trim facets - remove facets that have no use
|
|
36
|
-
|
|
36
|
+
var facetConfig = ((_b = (_a = config.settings) === null || _a === void 0 ? void 0 : _a.facets) === null || _b === void 0 ? void 0 : _b.fields) && ((_d = (_c = config.settings) === null || _c === void 0 ? void 0 : _c.facets) === null || _d === void 0 ? void 0 : _d.fields[facet.field]);
|
|
37
|
+
var shouldTrim = typeof (facetConfig === null || facetConfig === void 0 ? void 0 : facetConfig.trim) == 'boolean' ? facetConfig.trim : (_f = (_e = config.settings) === null || _e === void 0 ? void 0 : _e.facets) === null || _f === void 0 ? void 0 : _f.trim;
|
|
38
|
+
if (shouldTrim) {
|
|
37
39
|
if (facet.type === 'range' && facet.range.low == facet.range.high) {
|
|
38
40
|
return false;
|
|
39
41
|
}
|
|
40
|
-
else if (((
|
|
42
|
+
else if (((_g = facet.values) === null || _g === void 0 ? void 0 : _g.length) == 0) {
|
|
41
43
|
return false;
|
|
42
44
|
}
|
|
43
|
-
else if (!facet.filtered && ((
|
|
45
|
+
else if (!facet.filtered && ((_h = facet.values) === null || _h === void 0 ? void 0 : _h.length) == 1) {
|
|
44
46
|
return facet.values[0].count != pagination.totalResults;
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -50,7 +52,7 @@ var FacetStore = /** @class */ (function (_super) {
|
|
|
50
52
|
var facetMeta = meta.facets[facet.field];
|
|
51
53
|
switch (facet.type) {
|
|
52
54
|
case 'range':
|
|
53
|
-
return new RangeFacet(services, storage, facet, facetMeta);
|
|
55
|
+
return new RangeFacet(config, services, storage, facet, facetMeta);
|
|
54
56
|
case 'value':
|
|
55
57
|
case 'range-buckets':
|
|
56
58
|
default:
|
|
@@ -114,8 +116,10 @@ var Facet = /** @class */ (function () {
|
|
|
114
116
|
}());
|
|
115
117
|
var RangeFacet = /** @class */ (function (_super) {
|
|
116
118
|
__extends(RangeFacet, _super);
|
|
117
|
-
function RangeFacet(services, storage, facet, facetMeta) {
|
|
118
|
-
var _this =
|
|
119
|
+
function RangeFacet(config, services, storage, facet, facetMeta) {
|
|
120
|
+
var _this = this;
|
|
121
|
+
var _a, _b, _c, _d, _e, _f;
|
|
122
|
+
_this = _super.call(this, services, storage, facet, facetMeta) || this;
|
|
119
123
|
_this.range = {
|
|
120
124
|
low: 0,
|
|
121
125
|
high: 0,
|
|
@@ -125,7 +129,9 @@ var RangeFacet = /** @class */ (function (_super) {
|
|
|
125
129
|
high: 0,
|
|
126
130
|
};
|
|
127
131
|
_this.step = facet.step;
|
|
128
|
-
var
|
|
132
|
+
var facetConfig = ((_b = (_a = config.settings) === null || _a === void 0 ? void 0 : _a.facets) === null || _b === void 0 ? void 0 : _b.fields) && ((_d = (_c = config.settings) === null || _c === void 0 ? void 0 : _c.facets) === null || _d === void 0 ? void 0 : _d.fields[facet.field]);
|
|
133
|
+
var shouldStore = typeof (facetConfig === null || facetConfig === void 0 ? void 0 : facetConfig.storeRange) == 'boolean' ? facetConfig.storeRange : (_f = (_e = config.settings) === null || _e === void 0 ? void 0 : _e.facets) === null || _f === void 0 ? void 0 : _f.storeRange;
|
|
134
|
+
var storedRange = shouldStore && _this.storage.get("facets.".concat(_this.field, ".range"));
|
|
129
135
|
if (storedRange && facet.filtered && (facet.range.low > storedRange.low || facet.range.high < storedRange.high)) {
|
|
130
136
|
// range from API has shrunk
|
|
131
137
|
_this.range = _this.storage.get("facets.".concat(_this.field, ".range"));
|
|
@@ -154,7 +160,7 @@ var ValueFacet = /** @class */ (function (_super) {
|
|
|
154
160
|
__extends(ValueFacet, _super);
|
|
155
161
|
function ValueFacet(config, services, storage, facet, facetMeta) {
|
|
156
162
|
var _this = this;
|
|
157
|
-
var _a, _b;
|
|
163
|
+
var _a, _b, _c, _d, _e, _f;
|
|
158
164
|
_this = _super.call(this, services, storage, facet, facetMeta) || this;
|
|
159
165
|
_this.values = [];
|
|
160
166
|
_this.search = {
|
|
@@ -220,7 +226,9 @@ var ValueFacet = /** @class */ (function (_super) {
|
|
|
220
226
|
}
|
|
221
227
|
})) ||
|
|
222
228
|
[];
|
|
223
|
-
|
|
229
|
+
var facetConfig = ((_b = (_a = config.settings) === null || _a === void 0 ? void 0 : _a.facets) === null || _b === void 0 ? void 0 : _b.fields) && ((_d = (_c = config.settings) === null || _c === void 0 ? void 0 : _c.facets) === null || _d === void 0 ? void 0 : _d.fields[facet.field]);
|
|
230
|
+
var shouldPin = typeof (facetConfig === null || facetConfig === void 0 ? void 0 : facetConfig.pinFiltered) == 'boolean' ? facetConfig.pinFiltered : (_f = (_e = config.settings) === null || _e === void 0 ? void 0 : _e.facets) === null || _f === void 0 ? void 0 : _f.pinFiltered;
|
|
231
|
+
if (shouldPin && facetMeta.display !== 'hierarchy') {
|
|
224
232
|
_this.values.sort(function (a, b) { return Number(b.filtered) - Number(a.filtered); });
|
|
225
233
|
}
|
|
226
234
|
var overflowLimitedState = _this.storage.get("facets.".concat(_this.field, ".overflow.limited"));
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
2
2
|
import type { StoreServices } from '../../types';
|
|
3
|
-
import type { SearchResponseModelSearch } from '@searchspring/snapi-types';
|
|
3
|
+
import type { SearchResponseModelSearch, SearchResponseModelSearchMatchTypeEnum } from '@searchspring/snapi-types';
|
|
4
4
|
export declare class QueryStore {
|
|
5
5
|
query: Query;
|
|
6
6
|
didYouMean: Query;
|
|
7
7
|
originalQuery: Query;
|
|
8
|
+
matchType: SearchResponseModelSearchMatchTypeEnum;
|
|
8
9
|
constructor(services: StoreServices, search: SearchResponseModelSearch);
|
|
9
10
|
}
|
|
10
11
|
declare class Query {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/QueryStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/QueryStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,yBAAyB,EAAE,sCAAsC,EAAE,MAAM,2BAA2B,CAAC;AACnH,qBAAa,UAAU;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;IACrB,SAAS,EAAE,sCAAsC,CAAC;gBAEtC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,yBAAyB;CAyBtE;AASD,cAAM,KAAK;IACV,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,UAAU,CAAC;gBAEJ,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM;CASlD"}
|
|
@@ -17,6 +17,10 @@ var QueryStore = /** @class */ (function () {
|
|
|
17
17
|
this.originalQuery = new Query(services, search.originalQuery);
|
|
18
18
|
observables.originalQuery = mobx_1.observable;
|
|
19
19
|
}
|
|
20
|
+
if (search === null || search === void 0 ? void 0 : search.matchType) {
|
|
21
|
+
this.matchType = search.matchType;
|
|
22
|
+
observables.matchType = mobx_1.observable;
|
|
23
|
+
}
|
|
20
24
|
(0, mobx_1.makeObservable)(this, observables);
|
|
21
25
|
}
|
|
22
26
|
return QueryStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageStore.d.ts","sourceRoot":"","sources":["../../../src/Storage/StorageStore.ts"],"names":[],"mappings":"AAMA,qBAAa,YAAY;IACxB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAChC,UAAU,SAAe;IACzB,QAAQ,MAAa;IACrB,GAAG,SAAgB;IACnB,KAAK,KAAM;gBAEC,MAAM,CAAC,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"StorageStore.d.ts","sourceRoot":"","sources":["../../../src/Storage/StorageStore.ts"],"names":[],"mappings":"AAMA,qBAAa,YAAY;IACxB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAChC,UAAU,SAAe;IACzB,QAAQ,MAAa;IACrB,GAAG,SAAgB;IACnB,KAAK,KAAM;gBAEC,MAAM,CAAC,EAAE,aAAa;IA8ClC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAyBnC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IA+BtB,KAAK,IAAI,IAAI;CAcb;AAED,oBAAY,aAAa,GAAG;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,oBAAY,WAAW;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;CACjB"}
|
|
@@ -24,21 +24,23 @@ var StorageStore = /** @class */ (function () {
|
|
|
24
24
|
this.sameSite = config.cookie.sameSite;
|
|
25
25
|
}
|
|
26
26
|
switch (config.type) {
|
|
27
|
-
case StorageType.SESSION:
|
|
27
|
+
case StorageType.SESSION: {
|
|
28
28
|
this.type = snap_toolbox_1.featureFlags.storage ? config.type : null;
|
|
29
29
|
if (this.type) {
|
|
30
30
|
this.state = JSON.parse(window.sessionStorage.getItem(this.key) || '{}');
|
|
31
31
|
window.sessionStorage.setItem(this.key, JSON.stringify(this.state));
|
|
32
32
|
}
|
|
33
33
|
break;
|
|
34
|
-
|
|
34
|
+
}
|
|
35
|
+
case StorageType.LOCAL: {
|
|
35
36
|
this.type = snap_toolbox_1.featureFlags.storage ? config.type : null;
|
|
36
37
|
if (this.type && !window.localStorage.getItem(this.key)) {
|
|
37
38
|
this.state = JSON.parse(window.localStorage.getItem(this.key) || '{}');
|
|
38
39
|
window.localStorage.setItem(this.key, JSON.stringify(this.state));
|
|
39
40
|
}
|
|
40
41
|
break;
|
|
41
|
-
|
|
42
|
+
}
|
|
43
|
+
case StorageType.COOKIE: {
|
|
42
44
|
if (snap_toolbox_1.featureFlags.cookies) {
|
|
43
45
|
this.type = config.type;
|
|
44
46
|
var data = utils.cookies.get(this.key);
|
|
@@ -47,6 +49,10 @@ var StorageStore = /** @class */ (function () {
|
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
break;
|
|
52
|
+
}
|
|
53
|
+
default: {
|
|
54
|
+
this.type = StorageType.MEMORY;
|
|
55
|
+
}
|
|
50
56
|
}
|
|
51
57
|
}
|
|
52
58
|
}
|
|
@@ -127,4 +133,5 @@ var StorageType;
|
|
|
127
133
|
StorageType["SESSION"] = "session";
|
|
128
134
|
StorageType["LOCAL"] = "local";
|
|
129
135
|
StorageType["COOKIE"] = "cookie";
|
|
136
|
+
StorageType["MEMORY"] = "memory";
|
|
130
137
|
})(StorageType = exports.StorageType || (exports.StorageType = {}));
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
2
|
+
import type { SearchResponseModelFacetValueAllOfValues } from '@searchspring/snapi-types';
|
|
2
3
|
export declare type StoreConfig = {
|
|
3
4
|
id: string;
|
|
4
5
|
[any: string]: unknown;
|
|
@@ -15,19 +16,30 @@ export declare type SearchStoreConfig = StoreConfig & {
|
|
|
15
16
|
merchandising?: boolean;
|
|
16
17
|
singleResult?: boolean;
|
|
17
18
|
};
|
|
18
|
-
facets?: {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
facets?: FacetStoreConfig & {
|
|
20
|
+
fields?: {
|
|
21
|
+
[field: string]: FacetStoreConfig;
|
|
22
|
+
};
|
|
21
23
|
};
|
|
22
24
|
infinite?: {
|
|
23
25
|
backfill?: number;
|
|
24
26
|
};
|
|
25
27
|
};
|
|
26
28
|
};
|
|
29
|
+
declare type FacetStoreConfig = {
|
|
30
|
+
trim?: boolean;
|
|
31
|
+
pinFiltered?: boolean;
|
|
32
|
+
storeRange?: boolean;
|
|
33
|
+
};
|
|
27
34
|
export declare type FinderStoreConfig = StoreConfig & {
|
|
28
35
|
globals?: any;
|
|
29
36
|
url?: string;
|
|
30
37
|
fields: FinderFieldConfig[];
|
|
38
|
+
persist?: {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
lockSelections?: boolean;
|
|
41
|
+
expiration?: number;
|
|
42
|
+
};
|
|
31
43
|
};
|
|
32
44
|
export declare type FinderFieldConfig = {
|
|
33
45
|
field: string;
|
|
@@ -53,9 +65,10 @@ export declare type AutocompleteStoreConfig = StoreConfig & {
|
|
|
53
65
|
settings?: {
|
|
54
66
|
initializeFromUrl?: boolean;
|
|
55
67
|
syncInputs?: boolean;
|
|
56
|
-
facets?: {
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
facets?: FacetStoreConfig & {
|
|
69
|
+
fields?: {
|
|
70
|
+
[field: string]: FacetStoreConfig;
|
|
71
|
+
};
|
|
59
72
|
};
|
|
60
73
|
trending?: {
|
|
61
74
|
limit: number;
|
|
@@ -79,4 +92,13 @@ export declare enum ErrorType {
|
|
|
79
92
|
INFO = "info",
|
|
80
93
|
ERROR = "error"
|
|
81
94
|
}
|
|
95
|
+
export declare type SelectedSelection = {
|
|
96
|
+
selected: string;
|
|
97
|
+
data: SearchResponseModelFacetValueAllOfValues[];
|
|
98
|
+
facet: any;
|
|
99
|
+
};
|
|
100
|
+
export declare type FinderStoreState = {
|
|
101
|
+
persisted: boolean;
|
|
102
|
+
};
|
|
103
|
+
export {};
|
|
82
104
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,18 +3,26 @@ import { AbstractStore } from '../Abstract/AbstractStore';
|
|
|
3
3
|
import { PaginationStore } from '../Search/Stores';
|
|
4
4
|
import { StorageStore } from '../Storage/StorageStore';
|
|
5
5
|
import { SelectionStore } from './Stores';
|
|
6
|
-
import type { FinderStoreConfig, StoreServices } from '../types';
|
|
6
|
+
import type { FinderStoreConfig, StoreServices, SelectedSelection, FinderStoreState } from '../types';
|
|
7
7
|
export declare class FinderStore extends AbstractStore {
|
|
8
8
|
services: StoreServices;
|
|
9
9
|
config: FinderStoreConfig;
|
|
10
|
+
data: SearchResponseModel & {
|
|
11
|
+
meta: MetaResponseModel;
|
|
12
|
+
};
|
|
10
13
|
meta: MetaResponseModel;
|
|
11
14
|
storage: StorageStore;
|
|
15
|
+
persistedStorage: StorageStore;
|
|
12
16
|
pagination: PaginationStore;
|
|
13
17
|
selections: SelectionStore;
|
|
18
|
+
state: FinderStoreState;
|
|
14
19
|
constructor(config: FinderStoreConfig, services: StoreServices);
|
|
15
20
|
setService(name: any, service: any): void;
|
|
21
|
+
save(): void;
|
|
22
|
+
reset: () => void;
|
|
23
|
+
loadPersisted(): void;
|
|
16
24
|
update(data: SearchResponseModel & {
|
|
17
25
|
meta: MetaResponseModel;
|
|
18
|
-
}): void;
|
|
26
|
+
}, selectedSelections?: SelectedSelection[]): void;
|
|
19
27
|
}
|
|
20
28
|
//# sourceMappingURL=FinderStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderStore.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"FinderStore.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAe,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEtG,qBAAa,WAAY,SAAQ,aAAa;IAC7C,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC;IACxD,IAAI,EAAE,iBAAiB,CAAM;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAErB;gBAEU,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IA0B9D,UAAU,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,GAAG,IAAI;IAM/B,IAAI,IAAI,IAAI;IAkBZ,KAAK,QAAO,IAAI,CAWd;IAEF,aAAa,IAAI,IAAI;IAoBrB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,EAAE,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,GAAG,IAAI;CAe/G"}
|
|
@@ -1,16 +1,36 @@
|
|
|
1
1
|
import { makeObservable, observable } from 'mobx';
|
|
2
2
|
import { AbstractStore } from '../Abstract/AbstractStore';
|
|
3
3
|
import { PaginationStore } from '../Search/Stores';
|
|
4
|
-
import { StorageStore } from '../Storage/StorageStore';
|
|
4
|
+
import { StorageStore, StorageType } from '../Storage/StorageStore';
|
|
5
5
|
import { SelectionStore } from './Stores';
|
|
6
6
|
export class FinderStore extends AbstractStore {
|
|
7
7
|
constructor(config, services) {
|
|
8
8
|
super(config);
|
|
9
9
|
this.meta = {};
|
|
10
|
+
this.state = {
|
|
11
|
+
persisted: false,
|
|
12
|
+
};
|
|
13
|
+
this.reset = () => {
|
|
14
|
+
if (this.config.persist?.enabled) {
|
|
15
|
+
this.persistedStorage.clear();
|
|
16
|
+
this.state.persisted = false;
|
|
17
|
+
}
|
|
18
|
+
if (this.services.urlManager.state.filter) {
|
|
19
|
+
this.storage.clear();
|
|
20
|
+
this.selections = [];
|
|
21
|
+
this.loaded = false;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
10
24
|
if (typeof services != 'object' || typeof services.urlManager?.subscribe != 'function') {
|
|
11
25
|
throw new Error(`Invalid service 'urlManager' passed to AutocompleteStore. Missing "subscribe" function.`);
|
|
12
26
|
}
|
|
13
27
|
this.services = services;
|
|
28
|
+
if (config.persist?.enabled) {
|
|
29
|
+
this.persistedStorage = new StorageStore({
|
|
30
|
+
type: StorageType.LOCAL,
|
|
31
|
+
key: `ss-${config.id}-persisted`,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
14
34
|
this.storage = new StorageStore();
|
|
15
35
|
this.update({ meta: {} });
|
|
16
36
|
makeObservable(this, {
|
|
@@ -23,11 +43,52 @@ export class FinderStore extends AbstractStore {
|
|
|
23
43
|
this.services[name] = service;
|
|
24
44
|
}
|
|
25
45
|
}
|
|
26
|
-
|
|
46
|
+
save() {
|
|
47
|
+
if (this.config.persist?.enabled && this.selections.filter((selection) => selection.selected).length) {
|
|
48
|
+
this.persistedStorage.set('config', this.config);
|
|
49
|
+
this.persistedStorage.set('data', this.data);
|
|
50
|
+
this.persistedStorage.set('date', Date.now());
|
|
51
|
+
this.persistedStorage.set('selections', this.selections.map((selection) => {
|
|
52
|
+
return {
|
|
53
|
+
selected: selection.selected,
|
|
54
|
+
data: selection.data,
|
|
55
|
+
facet: selection.facet,
|
|
56
|
+
};
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
loadPersisted() {
|
|
61
|
+
if (this.config.persist?.enabled && !this.loaded) {
|
|
62
|
+
const date = this.persistedStorage.get('date');
|
|
63
|
+
const data = this.persistedStorage.get('data');
|
|
64
|
+
const config = this.persistedStorage.get('config');
|
|
65
|
+
const selections = this.persistedStorage.get('selections');
|
|
66
|
+
const isExpired = this.config.persist.expiration && Date.now() - date > this.config.persist.expiration;
|
|
67
|
+
if (data && selections.filter((selection) => selection.selected).length) {
|
|
68
|
+
if (JSON.stringify(config) === JSON.stringify(this.config) && !isExpired) {
|
|
69
|
+
this.update(data, selections);
|
|
70
|
+
this.state.persisted = true;
|
|
71
|
+
this.services.urlManager.go();
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.reset();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
update(data, selectedSelections) {
|
|
27
80
|
this.error = undefined;
|
|
81
|
+
this.data = JSON.parse(JSON.stringify(data));
|
|
28
82
|
this.loaded = !!data.pagination;
|
|
29
83
|
this.meta = data.meta;
|
|
30
84
|
this.pagination = new PaginationStore(this.config, this.services, data.pagination);
|
|
31
|
-
this.selections = new SelectionStore(this.config, this.services,
|
|
85
|
+
this.selections = new SelectionStore(this.config, this.services, {
|
|
86
|
+
state: this.state,
|
|
87
|
+
facets: data.facets,
|
|
88
|
+
meta: this.meta,
|
|
89
|
+
loading: this.loading,
|
|
90
|
+
storage: this.storage,
|
|
91
|
+
selections: selectedSelections,
|
|
92
|
+
});
|
|
32
93
|
}
|
|
33
94
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import type { FinderStoreConfig, StoreServices } from '../../types';
|
|
1
|
+
import type { FinderStoreConfig, StoreServices, SelectedSelection, FinderStoreState } from '../../types';
|
|
2
2
|
import type { StorageStore } from '../../Storage/StorageStore';
|
|
3
3
|
import type { MetaResponseModel, SearchResponseModelFacet } from '@searchspring/snapi-types';
|
|
4
|
+
declare type SelectionStoreData = {
|
|
5
|
+
state: FinderStoreState;
|
|
6
|
+
facets: SearchResponseModelFacet[];
|
|
7
|
+
meta: MetaResponseModel;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
storage: StorageStore;
|
|
10
|
+
selections: SelectedSelection[];
|
|
11
|
+
};
|
|
4
12
|
export declare class SelectionStore extends Array {
|
|
5
13
|
static get [Symbol.species](): ArrayConstructor;
|
|
6
|
-
constructor(config: FinderStoreConfig, services: StoreServices,
|
|
14
|
+
constructor(config: FinderStoreConfig, services: StoreServices, { state, facets, meta, loading, storage, selections }: SelectionStoreData);
|
|
7
15
|
}
|
|
16
|
+
export {};
|
|
8
17
|
//# sourceMappingURL=SelectionStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionStore.d.ts","sourceRoot":"","sources":["../../../../src/Finder/Stores/SelectionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectionStore.d.ts","sourceRoot":"","sources":["../../../../src/Finder/Stores/SelectionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5H,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAA4C,MAAM,2BAA2B,CAAC;AAEvI,aAAK,kBAAkB,GAAG;IACzB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,iBAAiB,EAAE,CAAC;CAChC,CAAC;AACF,qBAAa,cAAe,SAAQ,KAAK;IACxC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEW,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB;CA+FzI"}
|
|
@@ -2,9 +2,49 @@ export class SelectionStore extends Array {
|
|
|
2
2
|
static get [Symbol.species]() {
|
|
3
3
|
return Array;
|
|
4
4
|
}
|
|
5
|
-
constructor(config, services, facets, meta, loading, storage) {
|
|
6
|
-
const
|
|
7
|
-
if (
|
|
5
|
+
constructor(config, services, { state, facets, meta, loading, storage, selections }) {
|
|
6
|
+
const selectedSelections = [];
|
|
7
|
+
if (selections?.length) {
|
|
8
|
+
config.fields.forEach((fieldObj) => {
|
|
9
|
+
const storedData = selections.find((selection) => selection.facet.field === fieldObj.field);
|
|
10
|
+
if (storedData) {
|
|
11
|
+
const { facet, selected } = storedData;
|
|
12
|
+
if (facet?.hierarchyDelimiter) {
|
|
13
|
+
// hierarchy
|
|
14
|
+
selections.forEach((selection, index) => {
|
|
15
|
+
const levels = fieldObj?.levels || facet?.values[facet?.values.length - 1]?.value.split(facet.hierarchyDelimiter);
|
|
16
|
+
const levelConfig = { index, label: fieldObj.levels ? levels[index] : '', key: `ss-${index}` };
|
|
17
|
+
const storageKey = generateStorageKey(config.id, facet.field);
|
|
18
|
+
storage.set(`${storageKey}.${levelConfig.key}.values`, selection.data);
|
|
19
|
+
const selectionHierarchy = new SelectionHierarchy(services, config.id, state, facet, levelConfig, loading, storage);
|
|
20
|
+
selectionHierarchy.selected = selection.selected;
|
|
21
|
+
selectionHierarchy.data = selection.data;
|
|
22
|
+
if (config.persist?.lockSelections) {
|
|
23
|
+
selectionHierarchy.disabled = true;
|
|
24
|
+
}
|
|
25
|
+
if (selection.selected) {
|
|
26
|
+
services.urlManager = services.urlManager.set(`filter.${selection.facet.field}`, selection.selected);
|
|
27
|
+
}
|
|
28
|
+
selectedSelections.push(selectionHierarchy);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const selection = new Selection(services, config.id, state, facet, fieldObj, loading, storage);
|
|
33
|
+
selection.selected = selected;
|
|
34
|
+
selection.storage.set('selected', selected);
|
|
35
|
+
selection.data = facet.values;
|
|
36
|
+
if (selected) {
|
|
37
|
+
services.urlManager = services.urlManager.set(`filter.${facet.field}`, selected);
|
|
38
|
+
}
|
|
39
|
+
if (config.persist?.lockSelections) {
|
|
40
|
+
selection.disabled = true;
|
|
41
|
+
}
|
|
42
|
+
selectedSelections.push(selection);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
else if (facets && meta) {
|
|
8
48
|
// re-order facets to match our config
|
|
9
49
|
config?.fields &&
|
|
10
50
|
facets.sort((a, b) => {
|
|
@@ -30,19 +70,19 @@ export class SelectionStore extends Array {
|
|
|
30
70
|
const levels = fieldObj?.levels || facet?.values[facet?.values.length - 1]?.value.split(facet.hierarchyDelimiter);
|
|
31
71
|
levels?.map((level, index) => {
|
|
32
72
|
const levelConfig = { index, label: fieldObj.levels ? level : '', key: `ss-${index}` };
|
|
33
|
-
|
|
73
|
+
selectedSelections.push(new SelectionHierarchy(services, config.id, state, facet, levelConfig, loading, storage));
|
|
34
74
|
});
|
|
35
75
|
}
|
|
36
76
|
else {
|
|
37
|
-
|
|
77
|
+
selectedSelections.push(new Selection(services, config.id, state, facet, fieldObj, loading, storage));
|
|
38
78
|
}
|
|
39
79
|
});
|
|
40
80
|
}
|
|
41
|
-
super(...
|
|
81
|
+
super(...selectedSelections);
|
|
42
82
|
}
|
|
43
83
|
}
|
|
44
84
|
class SelectionBase {
|
|
45
|
-
constructor(services, id, facet, selectionConfig, loading, storageStore) {
|
|
85
|
+
constructor(services, id, state, facet, selectionConfig, loading, storageStore) {
|
|
46
86
|
this.filtered = false;
|
|
47
87
|
this.collapsed = false;
|
|
48
88
|
this.display = '';
|
|
@@ -51,9 +91,11 @@ class SelectionBase {
|
|
|
51
91
|
this.custom = {};
|
|
52
92
|
this.services = services;
|
|
53
93
|
this.loading = loading;
|
|
94
|
+
this.state = state;
|
|
54
95
|
this.id = id;
|
|
55
96
|
this.config = selectionConfig;
|
|
56
97
|
// inherit all standard facet properties
|
|
98
|
+
this.facet = facet;
|
|
57
99
|
this.type = facet.type;
|
|
58
100
|
this.field = facet.field;
|
|
59
101
|
this.filtered = facet.filtered;
|
|
@@ -63,7 +105,7 @@ class SelectionBase {
|
|
|
63
105
|
this.multiple = facet.multiple;
|
|
64
106
|
// abstracted StorageStore
|
|
65
107
|
this.storage = {
|
|
66
|
-
key:
|
|
108
|
+
key: generateStorageKey(this.id, this.field),
|
|
67
109
|
get: function (key) {
|
|
68
110
|
const path = this.key + (key ? `.${key}` : '');
|
|
69
111
|
return storageStore.get(path);
|
|
@@ -85,8 +127,8 @@ class SelectionBase {
|
|
|
85
127
|
}
|
|
86
128
|
}
|
|
87
129
|
class Selection extends SelectionBase {
|
|
88
|
-
constructor(services, id, facet, config, loading, storageStore) {
|
|
89
|
-
super(services, id, facet, config, loading, storageStore);
|
|
130
|
+
constructor(services, id, state, facet, config, loading, storageStore) {
|
|
131
|
+
super(services, id, state, facet, config, loading, storageStore);
|
|
90
132
|
this.loading = loading;
|
|
91
133
|
this.storage.set('values', facet.values);
|
|
92
134
|
const storageData = this.storage.get();
|
|
@@ -100,6 +142,7 @@ class Selection extends SelectionBase {
|
|
|
100
142
|
return;
|
|
101
143
|
this.selected = value;
|
|
102
144
|
this.storage.set('selected', value);
|
|
145
|
+
this.state.persisted = false;
|
|
103
146
|
if (!value) {
|
|
104
147
|
this.services.urlManager.remove(`filter.${this.field}`).go();
|
|
105
148
|
}
|
|
@@ -109,8 +152,8 @@ class Selection extends SelectionBase {
|
|
|
109
152
|
}
|
|
110
153
|
}
|
|
111
154
|
class SelectionHierarchy extends SelectionBase {
|
|
112
|
-
constructor(services, id, facet, config, loading, storageStore) {
|
|
113
|
-
super(services, id, facet, config, loading, storageStore);
|
|
155
|
+
constructor(services, id, state, facet, config, loading, storageStore) {
|
|
156
|
+
super(services, id, state, facet, config, loading, storageStore);
|
|
114
157
|
// inherit additional facet properties
|
|
115
158
|
this.hierarchyDelimiter = facet.hierarchyDelimiter;
|
|
116
159
|
let storageData = this.storage.get();
|
|
@@ -145,6 +188,7 @@ class SelectionHierarchy extends SelectionBase {
|
|
|
145
188
|
if (this.loading)
|
|
146
189
|
return;
|
|
147
190
|
this.selected = value;
|
|
191
|
+
this.state.persisted = false;
|
|
148
192
|
const selectedLevel = this.config.index;
|
|
149
193
|
const storedLevels = this.storage.get();
|
|
150
194
|
const keysToRemove = Object.keys(storedLevels).slice(selectedLevel);
|
|
@@ -167,3 +211,6 @@ class SelectionHierarchy extends SelectionBase {
|
|
|
167
211
|
}
|
|
168
212
|
}
|
|
169
213
|
}
|
|
214
|
+
function generateStorageKey(id, field) {
|
|
215
|
+
return `ss-finder-${id}.${field}`;
|
|
216
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/FacetStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EACX,iBAAiB,EAMjB,6BAA6B,EAC7B,wBAAwB,EAMxB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,UAAW,SAAQ,KAAK;IACpC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEA,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,EACnD,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,wBAAwB,EAAO,EAC3C,UAAU,EAAE,6BAA6B,EACzC,IAAI,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"FacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/FacetStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EACX,iBAAiB,EAMjB,6BAA6B,EAC7B,wBAAwB,EAMxB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,UAAW,SAAQ,KAAK;IACpC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEA,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,EACnD,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,wBAAwB,EAAO,EAC3C,UAAU,EAAE,6BAA6B,EACzC,IAAI,EAAE,iBAAiB;CA8CxB"}
|
|
@@ -15,7 +15,9 @@ export class FacetStore extends Array {
|
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
17
|
// trim facets - remove facets that have no use
|
|
18
|
-
|
|
18
|
+
const facetConfig = config.settings?.facets?.fields && config.settings?.facets?.fields[facet.field];
|
|
19
|
+
const shouldTrim = typeof facetConfig?.trim == 'boolean' ? facetConfig.trim : config.settings?.facets?.trim;
|
|
20
|
+
if (shouldTrim) {
|
|
19
21
|
if (facet.type === 'range' && facet.range.low == facet.range.high) {
|
|
20
22
|
return false;
|
|
21
23
|
}
|
|
@@ -32,7 +34,7 @@ export class FacetStore extends Array {
|
|
|
32
34
|
const facetMeta = meta.facets[facet.field];
|
|
33
35
|
switch (facet.type) {
|
|
34
36
|
case 'range':
|
|
35
|
-
return new RangeFacet(services, storage, facet, facetMeta);
|
|
37
|
+
return new RangeFacet(config, services, storage, facet, facetMeta);
|
|
36
38
|
case 'value':
|
|
37
39
|
case 'range-buckets':
|
|
38
40
|
default:
|
|
@@ -82,7 +84,7 @@ class Facet {
|
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
class RangeFacet extends Facet {
|
|
85
|
-
constructor(services, storage, facet, facetMeta) {
|
|
87
|
+
constructor(config, services, storage, facet, facetMeta) {
|
|
86
88
|
super(services, storage, facet, facetMeta);
|
|
87
89
|
this.range = {
|
|
88
90
|
low: 0,
|
|
@@ -93,7 +95,9 @@ class RangeFacet extends Facet {
|
|
|
93
95
|
high: 0,
|
|
94
96
|
};
|
|
95
97
|
this.step = facet.step;
|
|
96
|
-
const
|
|
98
|
+
const facetConfig = config.settings?.facets?.fields && config.settings?.facets?.fields[facet.field];
|
|
99
|
+
const shouldStore = typeof facetConfig?.storeRange == 'boolean' ? facetConfig.storeRange : config.settings?.facets?.storeRange;
|
|
100
|
+
const storedRange = shouldStore && this.storage.get(`facets.${this.field}.range`);
|
|
97
101
|
if (storedRange && facet.filtered && (facet.range.low > storedRange.low || facet.range.high < storedRange.high)) {
|
|
98
102
|
// range from API has shrunk
|
|
99
103
|
this.range = this.storage.get(`facets.${this.field}.range`);
|
|
@@ -183,7 +187,9 @@ class ValueFacet extends Facet {
|
|
|
183
187
|
}
|
|
184
188
|
})) ||
|
|
185
189
|
[];
|
|
186
|
-
|
|
190
|
+
const facetConfig = config.settings?.facets?.fields && config.settings?.facets?.fields[facet.field];
|
|
191
|
+
const shouldPin = typeof facetConfig?.pinFiltered == 'boolean' ? facetConfig.pinFiltered : config.settings?.facets?.pinFiltered;
|
|
192
|
+
if (shouldPin && facetMeta.display !== 'hierarchy') {
|
|
187
193
|
this.values.sort((a, b) => Number(b.filtered) - Number(a.filtered));
|
|
188
194
|
}
|
|
189
195
|
const overflowLimitedState = this.storage.get(`facets.${this.field}.overflow.limited`);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
2
2
|
import type { StoreServices } from '../../types';
|
|
3
|
-
import type { SearchResponseModelSearch } from '@searchspring/snapi-types';
|
|
3
|
+
import type { SearchResponseModelSearch, SearchResponseModelSearchMatchTypeEnum } from '@searchspring/snapi-types';
|
|
4
4
|
export declare class QueryStore {
|
|
5
5
|
query: Query;
|
|
6
6
|
didYouMean: Query;
|
|
7
7
|
originalQuery: Query;
|
|
8
|
+
matchType: SearchResponseModelSearchMatchTypeEnum;
|
|
8
9
|
constructor(services: StoreServices, search: SearchResponseModelSearch);
|
|
9
10
|
}
|
|
10
11
|
declare class Query {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/QueryStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/QueryStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,yBAAyB,EAAE,sCAAsC,EAAE,MAAM,2BAA2B,CAAC;AACnH,qBAAa,UAAU;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;IACrB,SAAS,EAAE,sCAAsC,CAAC;gBAEtC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,yBAAyB;CAyBtE;AASD,cAAM,KAAK;IACV,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,UAAU,CAAC;gBAEJ,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM;CASlD"}
|
|
@@ -14,6 +14,10 @@ export class QueryStore {
|
|
|
14
14
|
this.originalQuery = new Query(services, search.originalQuery);
|
|
15
15
|
observables.originalQuery = observable;
|
|
16
16
|
}
|
|
17
|
+
if (search?.matchType) {
|
|
18
|
+
this.matchType = search.matchType;
|
|
19
|
+
observables.matchType = observable;
|
|
20
|
+
}
|
|
17
21
|
makeObservable(this, observables);
|
|
18
22
|
}
|
|
19
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageStore.d.ts","sourceRoot":"","sources":["../../../src/Storage/StorageStore.ts"],"names":[],"mappings":"AAMA,qBAAa,YAAY;IACxB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAChC,UAAU,SAAe;IACzB,QAAQ,MAAa;IACrB,GAAG,SAAgB;IACnB,KAAK,KAAM;gBAEC,MAAM,CAAC,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"StorageStore.d.ts","sourceRoot":"","sources":["../../../src/Storage/StorageStore.ts"],"names":[],"mappings":"AAMA,qBAAa,YAAY;IACxB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAChC,UAAU,SAAe;IACzB,QAAQ,MAAa;IACrB,GAAG,SAAgB;IACnB,KAAK,KAAM;gBAEC,MAAM,CAAC,EAAE,aAAa;IA8ClC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAyBnC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IA+BtB,KAAK,IAAI,IAAI;CAcb;AAED,oBAAY,aAAa,GAAG;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,oBAAY,WAAW;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;CACjB"}
|
|
@@ -20,21 +20,23 @@ export class StorageStore {
|
|
|
20
20
|
this.sameSite = config.cookie.sameSite;
|
|
21
21
|
}
|
|
22
22
|
switch (config.type) {
|
|
23
|
-
case StorageType.SESSION:
|
|
23
|
+
case StorageType.SESSION: {
|
|
24
24
|
this.type = featureFlags.storage ? config.type : null;
|
|
25
25
|
if (this.type) {
|
|
26
26
|
this.state = JSON.parse(window.sessionStorage.getItem(this.key) || '{}');
|
|
27
27
|
window.sessionStorage.setItem(this.key, JSON.stringify(this.state));
|
|
28
28
|
}
|
|
29
29
|
break;
|
|
30
|
-
|
|
30
|
+
}
|
|
31
|
+
case StorageType.LOCAL: {
|
|
31
32
|
this.type = featureFlags.storage ? config.type : null;
|
|
32
33
|
if (this.type && !window.localStorage.getItem(this.key)) {
|
|
33
34
|
this.state = JSON.parse(window.localStorage.getItem(this.key) || '{}');
|
|
34
35
|
window.localStorage.setItem(this.key, JSON.stringify(this.state));
|
|
35
36
|
}
|
|
36
37
|
break;
|
|
37
|
-
|
|
38
|
+
}
|
|
39
|
+
case StorageType.COOKIE: {
|
|
38
40
|
if (featureFlags.cookies) {
|
|
39
41
|
this.type = config.type;
|
|
40
42
|
const data = utils.cookies.get(this.key);
|
|
@@ -43,6 +45,10 @@ export class StorageStore {
|
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
break;
|
|
48
|
+
}
|
|
49
|
+
default: {
|
|
50
|
+
this.type = StorageType.MEMORY;
|
|
51
|
+
}
|
|
46
52
|
}
|
|
47
53
|
}
|
|
48
54
|
}
|
|
@@ -120,4 +126,5 @@ export var StorageType;
|
|
|
120
126
|
StorageType["SESSION"] = "session";
|
|
121
127
|
StorageType["LOCAL"] = "local";
|
|
122
128
|
StorageType["COOKIE"] = "cookie";
|
|
129
|
+
StorageType["MEMORY"] = "memory";
|
|
123
130
|
})(StorageType || (StorageType = {}));
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
2
|
+
import type { SearchResponseModelFacetValueAllOfValues } from '@searchspring/snapi-types';
|
|
2
3
|
export declare type StoreConfig = {
|
|
3
4
|
id: string;
|
|
4
5
|
[any: string]: unknown;
|
|
@@ -15,19 +16,30 @@ export declare type SearchStoreConfig = StoreConfig & {
|
|
|
15
16
|
merchandising?: boolean;
|
|
16
17
|
singleResult?: boolean;
|
|
17
18
|
};
|
|
18
|
-
facets?: {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
facets?: FacetStoreConfig & {
|
|
20
|
+
fields?: {
|
|
21
|
+
[field: string]: FacetStoreConfig;
|
|
22
|
+
};
|
|
21
23
|
};
|
|
22
24
|
infinite?: {
|
|
23
25
|
backfill?: number;
|
|
24
26
|
};
|
|
25
27
|
};
|
|
26
28
|
};
|
|
29
|
+
declare type FacetStoreConfig = {
|
|
30
|
+
trim?: boolean;
|
|
31
|
+
pinFiltered?: boolean;
|
|
32
|
+
storeRange?: boolean;
|
|
33
|
+
};
|
|
27
34
|
export declare type FinderStoreConfig = StoreConfig & {
|
|
28
35
|
globals?: any;
|
|
29
36
|
url?: string;
|
|
30
37
|
fields: FinderFieldConfig[];
|
|
38
|
+
persist?: {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
lockSelections?: boolean;
|
|
41
|
+
expiration?: number;
|
|
42
|
+
};
|
|
31
43
|
};
|
|
32
44
|
export declare type FinderFieldConfig = {
|
|
33
45
|
field: string;
|
|
@@ -53,9 +65,10 @@ export declare type AutocompleteStoreConfig = StoreConfig & {
|
|
|
53
65
|
settings?: {
|
|
54
66
|
initializeFromUrl?: boolean;
|
|
55
67
|
syncInputs?: boolean;
|
|
56
|
-
facets?: {
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
facets?: FacetStoreConfig & {
|
|
69
|
+
fields?: {
|
|
70
|
+
[field: string]: FacetStoreConfig;
|
|
71
|
+
};
|
|
59
72
|
};
|
|
60
73
|
trending?: {
|
|
61
74
|
limit: number;
|
|
@@ -79,4 +92,13 @@ export declare enum ErrorType {
|
|
|
79
92
|
INFO = "info",
|
|
80
93
|
ERROR = "error"
|
|
81
94
|
}
|
|
95
|
+
export declare type SelectedSelection = {
|
|
96
|
+
selected: string;
|
|
97
|
+
data: SearchResponseModelFacetValueAllOfValues[];
|
|
98
|
+
facet: any;
|
|
99
|
+
};
|
|
100
|
+
export declare type FinderStoreState = {
|
|
101
|
+
persisted: boolean;
|
|
102
|
+
};
|
|
103
|
+
export {};
|
|
82
104
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-store-mobx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.1",
|
|
4
4
|
"description": "Snap MobX Store",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/snap-toolbox": "^0.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.25.1",
|
|
24
24
|
"mobx": "^6.3.12"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@searchspring/snap-url-manager": "^0.
|
|
27
|
+
"@searchspring/snap-url-manager": "^0.25.1"
|
|
28
28
|
},
|
|
29
29
|
"sideEffects": false,
|
|
30
30
|
"files": [
|
|
31
31
|
"dist/**/*"
|
|
32
32
|
],
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "56ab4bfc6d2d6c98ea80d7efa0ec65cca9e654ae"
|
|
34
34
|
}
|