@searchspring/snap-store-mobx 0.55.0 → 0.56.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/Autocomplete/AutocompleteStore.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteStore.js +2 -2
- package/dist/cjs/Cart/CartStore.js +2 -2
- package/dist/cjs/Recommendation/RecommendationStore.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationStore.js +2 -2
- package/dist/cjs/Search/SearchStore.d.ts.map +1 -1
- package/dist/cjs/Search/SearchStore.js +2 -2
- package/dist/cjs/Search/Stores/SearchResultStore.d.ts +9 -7
- package/dist/cjs/Search/Stores/SearchResultStore.d.ts.map +1 -1
- package/dist/cjs/Search/Stores/SearchResultStore.js +118 -37
- package/dist/cjs/Search/Stores/index.d.ts +1 -1
- package/dist/cjs/Search/Stores/index.d.ts.map +1 -1
- package/dist/cjs/Search/Stores/index.js +2 -1
- package/dist/cjs/types.d.ts +21 -7
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteStore.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteStore.js +2 -2
- package/dist/esm/Cart/CartStore.js +2 -2
- package/dist/esm/Recommendation/RecommendationStore.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationStore.js +2 -2
- package/dist/esm/Search/SearchStore.d.ts.map +1 -1
- package/dist/esm/Search/SearchStore.js +2 -2
- package/dist/esm/Search/Stores/SearchResultStore.d.ts +9 -7
- package/dist/esm/Search/Stores/SearchResultStore.d.ts.map +1 -1
- package/dist/esm/Search/Stores/SearchResultStore.js +107 -34
- package/dist/esm/Search/Stores/index.d.ts +1 -1
- package/dist/esm/Search/Stores/index.d.ts.map +1 -1
- package/dist/esm/Search/Stores/index.js +1 -1
- package/dist/esm/types.d.ts +21 -7
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteStore.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,iBAAkB,SAAQ,aAAa;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,sBAAsB,CAAC;IAChC,KAAK,EAAG,qBAAqB,CAAC;IAC9B,MAAM,EAAG,sBAAsB,CAAC;IAChC,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,OAAO,EAAE,wBAAwB,CAAC;gBAE7B,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa;IAiC7D,KAAK,IAAI,IAAI;IAMb,WAAW,IAAI,IAAI;IAgBnB,UAAU,IAAI,IAAI;IAMlB,gBAAgB,IAAI,IAAI;IAIxB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAIpB,UAAU,CAAC,IAAI,EAAE,MAAM,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAUhE,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAWtD,MAAM,CAAC,IAAI,GAAE,yBAAyB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"AutocompleteStore.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,iBAAkB,SAAQ,aAAa;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,sBAAsB,CAAC;IAChC,KAAK,EAAG,qBAAqB,CAAC;IAC9B,MAAM,EAAG,sBAAsB,CAAC;IAChC,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,OAAO,EAAE,wBAAwB,CAAC;gBAE7B,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa;IAiC7D,KAAK,IAAI,IAAI;IAMb,WAAW,IAAI,IAAI;IAgBnB,UAAU,IAAI,IAAI;IAMlB,gBAAgB,IAAI,IAAI;IAIxB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAIpB,UAAU,CAAC,IAAI,EAAE,MAAM,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAUhE,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAWtD,MAAM,CAAC,IAAI,GAAE,yBAAyB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;CAoExF"}
|
|
@@ -106,7 +106,6 @@ var AutocompleteStore = /** @class */ (function (_super) {
|
|
|
106
106
|
if (!data)
|
|
107
107
|
return;
|
|
108
108
|
this.error = undefined;
|
|
109
|
-
this.loaded = !!data.pagination;
|
|
110
109
|
this.meta = new MetaStore_1.MetaStore(data.meta);
|
|
111
110
|
// set the query to match the actual queried term and not the input query
|
|
112
111
|
if (data.search) {
|
|
@@ -127,7 +126,7 @@ var AutocompleteStore = /** @class */ (function (_super) {
|
|
|
127
126
|
this.facets = new Stores_2.AutocompleteFacetStore(this.config, this.services, this.storage, data.facets || [], data.pagination || {}, this.meta.data, this.state, data.merchandising || {});
|
|
128
127
|
}
|
|
129
128
|
this.filters = new Stores_1.SearchFilterStore(this.services, data.filters, this.meta.data);
|
|
130
|
-
this.results = new Stores_1.SearchResultStore(this.config, this.services, this.meta.data, data.results || [], data.pagination, data.merchandising);
|
|
129
|
+
this.results = new Stores_1.SearchResultStore(this.config, this.services, this.meta.data, data.results || [], data.pagination, data.merchandising, this.loaded);
|
|
131
130
|
if ((this.results.length === 0 && !this.trending.filter(function (term) { return term.active; }).length) || ((_a = this.terms) === null || _a === void 0 ? void 0 : _a.filter(function (term) { return term.active; }).length)) {
|
|
132
131
|
// if a trending term was selected and then a subsequent search yields no results, reset trending terms to remove active state
|
|
133
132
|
// OR if any terms are active, also reset to ensure only a single term or trending term is active
|
|
@@ -135,6 +134,7 @@ var AutocompleteStore = /** @class */ (function (_super) {
|
|
|
135
134
|
}
|
|
136
135
|
this.pagination = new Stores_1.SearchPaginationStore(this.config, this.services, data.pagination, this.meta.data);
|
|
137
136
|
this.sorting = new Stores_1.SearchSortingStore(this.services, data.sorting || [], data.search || {}, this.meta.data);
|
|
137
|
+
this.loaded = !!data.pagination;
|
|
138
138
|
};
|
|
139
139
|
return AutocompleteStore;
|
|
140
140
|
}(AbstractStore_1.AbstractStore));
|
|
@@ -47,7 +47,7 @@ var CartStore = /** @class */ (function () {
|
|
|
47
47
|
var price = 0;
|
|
48
48
|
this.items.forEach(function (item) {
|
|
49
49
|
var _a;
|
|
50
|
-
price += (((_a = item.display.mappings.core) === null || _a === void 0 ? void 0 : _a.price) || 0) * item.quantity;
|
|
50
|
+
price += +(((_a = item.display.mappings.core) === null || _a === void 0 ? void 0 : _a.price) || 0) * item.quantity;
|
|
51
51
|
});
|
|
52
52
|
return price;
|
|
53
53
|
},
|
|
@@ -59,7 +59,7 @@ var CartStore = /** @class */ (function () {
|
|
|
59
59
|
var price = 0;
|
|
60
60
|
this.items.forEach(function (item) {
|
|
61
61
|
var _a, _b;
|
|
62
|
-
price += (((_a = item.display.mappings.core) === null || _a === void 0 ? void 0 : _a.msrp) || ((_b = item.display.mappings.core) === null || _b === void 0 ? void 0 : _b.price) || 0) * item.quantity;
|
|
62
|
+
price += (+(((_a = item.display.mappings.core) === null || _a === void 0 ? void 0 : _a.msrp) || 0) || +(((_b = item.display.mappings.core) === null || _b === void 0 ? void 0 : _b.price) || 0) || 0) * item.quantity;
|
|
63
63
|
});
|
|
64
64
|
return price;
|
|
65
65
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationStore.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,mBAAoB,SAAQ,aAAa;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,MAAM,UAAS;IACf,OAAO,EAAG,0BAA0B,CAAC;IACrC,OAAO,EAAG,OAAO,EAAE,CAAC;IACpB,IAAI,EAAG,SAAS,CAAC;gBAEZ,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa;IAiB/D,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,CAAC,EAAE,8BAA8B,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"RecommendationStore.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,mBAAoB,SAAQ,aAAa;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,MAAM,UAAS;IACf,OAAO,EAAG,0BAA0B,CAAC;IACrC,OAAO,EAAG,OAAO,EAAE,CAAC;IACpB,IAAI,EAAG,SAAS,CAAC;gBAEZ,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa;IAiB/D,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,CAAC,EAAE,8BAA8B,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;CAazF"}
|
|
@@ -44,14 +44,14 @@ var RecommendationStore = /** @class */ (function (_super) {
|
|
|
44
44
|
};
|
|
45
45
|
RecommendationStore.prototype.update = function (data) {
|
|
46
46
|
this.error = undefined;
|
|
47
|
-
this.loaded = !!(data === null || data === void 0 ? void 0 : data.profile);
|
|
48
47
|
this.meta = new MetaStore_1.MetaStore(data === null || data === void 0 ? void 0 : data.meta);
|
|
49
48
|
this.profile = new Stores_2.RecommendationProfileStore(this.services, data);
|
|
50
|
-
this.results = new Stores_1.SearchResultStore(this.config, this.services, this.meta.data, data === null || data === void 0 ? void 0 : data.results);
|
|
49
|
+
this.results = new Stores_1.SearchResultStore(this.config, this.services, this.meta.data, data === null || data === void 0 ? void 0 : data.results, undefined, undefined, this.loaded);
|
|
51
50
|
// only create a cart store when type is bundle
|
|
52
51
|
if (this.profile.type == 'bundle') {
|
|
53
52
|
this.cart = new CartStore_1.CartStore();
|
|
54
53
|
}
|
|
54
|
+
this.loaded = !!(data === null || data === void 0 ? void 0 : data.profile);
|
|
55
55
|
};
|
|
56
56
|
return RecommendationStore;
|
|
57
57
|
}(AbstractStore_1.AbstractStore));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchStore.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,aAAa;IACtC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,gBAAgB,CAAC;IAC1B,MAAM,EAAG,gBAAgB,CAAC;IAC1B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IAiDvD,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,GAAE,mBAAmB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"SearchStore.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,aAAa;IACtC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,gBAAgB,CAAC;IAC1B,MAAM,EAAG,gBAAgB,CAAC;IAC1B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IAiDvD,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,GAAE,mBAAmB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;CA6BlF"}
|
|
@@ -70,15 +70,15 @@ var SearchStore = /** @class */ (function (_super) {
|
|
|
70
70
|
SearchStore.prototype.update = function (data) {
|
|
71
71
|
if (data === void 0) { data = {}; }
|
|
72
72
|
this.error = undefined;
|
|
73
|
-
this.loaded = !!data.pagination;
|
|
74
73
|
this.meta = new MetaStore_1.MetaStore(data.meta);
|
|
75
74
|
this.merchandising = new Stores_1.SearchMerchandisingStore(this.services, (data === null || data === void 0 ? void 0 : data.merchandising) || {});
|
|
76
75
|
this.search = new Stores_1.SearchQueryStore(this.services, (data === null || data === void 0 ? void 0 : data.search) || {});
|
|
77
76
|
this.facets = new Stores_1.SearchFacetStore(this.config, this.services, this.storage, data.facets, (data === null || data === void 0 ? void 0 : data.pagination) || {}, this.meta.data, (data === null || data === void 0 ? void 0 : data.merchandising) || {});
|
|
78
77
|
this.filters = new Stores_1.SearchFilterStore(this.services, data.filters, this.meta.data);
|
|
79
|
-
this.results = new Stores_1.SearchResultStore(this.config, this.services, this.meta.data, (data === null || data === void 0 ? void 0 : data.results) || [], data.pagination, data.merchandising);
|
|
78
|
+
this.results = new Stores_1.SearchResultStore(this.config, this.services, this.meta.data, (data === null || data === void 0 ? void 0 : data.results) || [], data.pagination, data.merchandising, this.loaded);
|
|
80
79
|
this.pagination = new Stores_1.SearchPaginationStore(this.config, this.services, data.pagination, this.meta.data);
|
|
81
80
|
this.sorting = new Stores_1.SearchSortingStore(this.services, (data === null || data === void 0 ? void 0 : data.sorting) || [], (data === null || data === void 0 ? void 0 : data.search) || {}, this.meta.data);
|
|
81
|
+
this.loaded = !!data.pagination;
|
|
82
82
|
};
|
|
83
83
|
return SearchStore;
|
|
84
84
|
}(AbstractStore_1.AbstractStore));
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { StoreServices, StoreConfigs,
|
|
1
|
+
import type { StoreServices, StoreConfigs, ResultBadge, VariantOptionConfig, VariantConfig } from '../../types';
|
|
2
2
|
import type { SearchResponseModelResult, SearchResponseModelPagination, SearchResponseModelMerchandising, SearchResponseModelResultMappings, SearchResponseModelMerchandisingContentInline, SearchResponseModelMerchandisingContentConfig, MetaResponseModel } from '@searchspring/snapi-types';
|
|
3
3
|
export declare class SearchResultStore extends Array<Product | Banner> {
|
|
4
4
|
static get [Symbol.species](): ArrayConstructor;
|
|
5
|
-
constructor(config: StoreConfigs, services: StoreServices, metaData: MetaResponseModel, resultData?: SearchResponseModelResult[], paginationData?: SearchResponseModelPagination, merchData?: SearchResponseModelMerchandising);
|
|
5
|
+
constructor(config: StoreConfigs, services: StoreServices, metaData: MetaResponseModel, resultData?: SearchResponseModelResult[], paginationData?: SearchResponseModelPagination, merchData?: SearchResponseModelMerchandising, loaded?: boolean);
|
|
6
6
|
}
|
|
7
7
|
export declare class Banner {
|
|
8
8
|
type: string;
|
|
@@ -67,21 +67,23 @@ export declare class Variants {
|
|
|
67
67
|
makeSelections(options?: Record<string, string[]>): void;
|
|
68
68
|
refineSelections(fromSelection: VariantSelection): void;
|
|
69
69
|
}
|
|
70
|
-
type
|
|
70
|
+
export type VariantSelectionValue = {
|
|
71
71
|
value: string;
|
|
72
72
|
label?: string;
|
|
73
73
|
thumbnailImageUrl?: string;
|
|
74
|
+
backgroundImageUrl?: string;
|
|
74
75
|
background?: string;
|
|
75
76
|
available?: boolean;
|
|
76
77
|
};
|
|
77
78
|
export declare class VariantSelection {
|
|
78
79
|
field: string;
|
|
79
80
|
label: string;
|
|
80
|
-
selected?:
|
|
81
|
-
previouslySelected?:
|
|
82
|
-
values:
|
|
81
|
+
selected?: VariantSelectionValue;
|
|
82
|
+
previouslySelected?: VariantSelectionValue;
|
|
83
|
+
values: VariantSelectionValue[];
|
|
84
|
+
private config;
|
|
83
85
|
private variantsUpdate;
|
|
84
|
-
constructor(variants: Variants,
|
|
86
|
+
constructor(variants: Variants, selectorField: string, variantConfig?: VariantOptionConfig);
|
|
85
87
|
refineValues(variants: Variants): void;
|
|
86
88
|
reset(): void;
|
|
87
89
|
select(value: string, internalSelection?: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,14 +42,46 @@ exports.Variant = exports.VariantSelection = exports.Variants = exports.ProductM
|
|
|
42
42
|
var mobx_1 = require("mobx");
|
|
43
43
|
var deepmerge_1 = __importDefault(require("deepmerge"));
|
|
44
44
|
var is_plain_object_1 = require("is-plain-object");
|
|
45
|
+
var VARIANT_ATTRIBUTE = 'ss-variant-option';
|
|
46
|
+
var VARIANT_ATTRIBUTE_SELECTED = 'ss-variant-option-selected';
|
|
45
47
|
var SearchResultStore = /** @class */ (function (_super) {
|
|
46
48
|
__extends(SearchResultStore, _super);
|
|
47
|
-
function SearchResultStore(config, services, metaData, resultData, paginationData, merchData) {
|
|
48
|
-
var _a;
|
|
49
|
+
function SearchResultStore(config, services, metaData, resultData, paginationData, merchData, loaded) {
|
|
50
|
+
var _a, _b, _c, _d;
|
|
49
51
|
var results = (resultData || []).map(function (result) {
|
|
50
52
|
return new Product(services, result, metaData, config);
|
|
51
53
|
});
|
|
52
|
-
|
|
54
|
+
var variantConfig = (_a = config === null || config === void 0 ? void 0 : config.settings) === null || _a === void 0 ? void 0 : _a.variants;
|
|
55
|
+
// preselected variant options
|
|
56
|
+
if ((_b = variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.realtime) === null || _b === void 0 ? void 0 : _b.enabled) {
|
|
57
|
+
// attach click events - ONLY happens once (known limitation)
|
|
58
|
+
if (!loaded && results.length) {
|
|
59
|
+
document.querySelectorAll("[".concat(VARIANT_ATTRIBUTE, "]")).forEach(function (elem) {
|
|
60
|
+
var _a;
|
|
61
|
+
if ((variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.field) && !((_a = variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.realtime) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
|
|
62
|
+
elem.addEventListener('click', function () { return variantOptionClick(elem, variantConfig, results); });
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// check for attributes for preselection
|
|
67
|
+
if (results.length) {
|
|
68
|
+
if ((variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.field) && !((_c = variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.realtime) === null || _c === void 0 ? void 0 : _c.enabled) === false) {
|
|
69
|
+
var options_1 = {};
|
|
70
|
+
// grab values from elements on the page to form preselected elements
|
|
71
|
+
document.querySelectorAll("[".concat(VARIANT_ATTRIBUTE_SELECTED, "]")).forEach(function (elem) {
|
|
72
|
+
var attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
73
|
+
if (attr) {
|
|
74
|
+
var _a = attr.split(':'), option = _a[0], value = _a[1];
|
|
75
|
+
if (option && value) {
|
|
76
|
+
options_1[option.toLowerCase()] = [value.toLowerCase()];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
makeVariantSelections(variantConfig, options_1, results);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if ((_d = merchData === null || merchData === void 0 ? void 0 : merchData.content) === null || _d === void 0 ? void 0 : _d.inline) {
|
|
53
85
|
var banners = merchData.content.inline
|
|
54
86
|
.sort(function (a, b) {
|
|
55
87
|
return a.config.position.index - b.config.position.index;
|
|
@@ -114,7 +146,7 @@ var Product = /** @class */ (function () {
|
|
|
114
146
|
try {
|
|
115
147
|
// parse the field (JSON)
|
|
116
148
|
var parsedVariants = JSON.parse(this.attributes[variantsField]);
|
|
117
|
-
this.variants = new Variants(parsedVariants, this.mask, (_c = config.settings) === null || _c === void 0 ? void 0 : _c.variants);
|
|
149
|
+
this.variants = new Variants(parsedVariants, this.mask, (_c = config === null || config === void 0 ? void 0 : config.settings) === null || _c === void 0 ? void 0 : _c.variants);
|
|
118
150
|
}
|
|
119
151
|
catch (err) {
|
|
120
152
|
// failed to parse the variant JSON
|
|
@@ -246,32 +278,31 @@ var Variants = /** @class */ (function () {
|
|
|
246
278
|
_this.active = variant;
|
|
247
279
|
mask.set({ mappings: _this.active.mappings, attributes: _this.active.attributes });
|
|
248
280
|
};
|
|
249
|
-
|
|
281
|
+
if (config) {
|
|
282
|
+
this.config = config;
|
|
283
|
+
}
|
|
250
284
|
this.update(variantData, config);
|
|
251
285
|
}
|
|
252
286
|
Variants.prototype.update = function (variantData, config) {
|
|
253
287
|
var _this = this;
|
|
254
288
|
if (config === void 0) { config = this.config; }
|
|
255
289
|
try {
|
|
256
|
-
var
|
|
290
|
+
var options_2 = [];
|
|
257
291
|
// create variants objects
|
|
258
292
|
this.data = variantData.map(function (variant) {
|
|
259
293
|
Object.keys(variant.options).forEach(function (variantOption) {
|
|
260
|
-
if (!
|
|
261
|
-
|
|
294
|
+
if (!options_2.includes(variantOption)) {
|
|
295
|
+
options_2.push(variantOption);
|
|
262
296
|
}
|
|
263
297
|
});
|
|
264
298
|
return new Variant(variant);
|
|
265
299
|
});
|
|
266
300
|
//need to reset this.selections first
|
|
267
301
|
this.selections = [];
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
var
|
|
271
|
-
|
|
272
|
-
label: option,
|
|
273
|
-
};
|
|
274
|
-
_this.selections.push(new VariantSelection(_this, optionConfig));
|
|
302
|
+
options_2.map(function (option) {
|
|
303
|
+
var _a;
|
|
304
|
+
var variantOptionConfig = ((_a = _this.config) === null || _a === void 0 ? void 0 : _a.options) && _this.config.options[option];
|
|
305
|
+
_this.selections.push(new VariantSelection(_this, option, variantOptionConfig));
|
|
275
306
|
});
|
|
276
307
|
var preselectedOptions_1 = {};
|
|
277
308
|
if (config === null || config === void 0 ? void 0 : config.options) {
|
|
@@ -291,7 +322,7 @@ var Variants = /** @class */ (function () {
|
|
|
291
322
|
};
|
|
292
323
|
Variants.prototype.makeSelections = function (options) {
|
|
293
324
|
// options = {color: 'Blue', size: 'L'};
|
|
294
|
-
if (!options) {
|
|
325
|
+
if (!options || !Object.keys(options).length) {
|
|
295
326
|
// select first available for each selection
|
|
296
327
|
this.selections.forEach(function (selection) {
|
|
297
328
|
var firstAvailableOption = selection.values.find(function (value) { return value.available; });
|
|
@@ -306,12 +337,12 @@ var Variants = /** @class */ (function () {
|
|
|
306
337
|
//make all options available for first selection.
|
|
307
338
|
var availableOptions = selection.values.filter(function (value) { return (idx == 0 ? true : value.available); });
|
|
308
339
|
var preferedOptions = options[selection.field];
|
|
309
|
-
var preferencedOption = availableOptions[0];
|
|
340
|
+
var preferencedOption = selection.selected || availableOptions[0];
|
|
310
341
|
// if theres a preference for that field
|
|
311
342
|
if (preferedOptions) {
|
|
312
343
|
var checkIfAvailable_1 = function (preference) {
|
|
313
344
|
//see if that option is in the available options
|
|
314
|
-
var availablePreferedOptions = availableOptions.find(function (value) { return value.value.toLowerCase() == preference.toLowerCase(); });
|
|
345
|
+
var availablePreferedOptions = availableOptions.find(function (value) { return value.value.toString().toLowerCase() == (preference === null || preference === void 0 ? void 0 : preference.toString().toLowerCase()); });
|
|
315
346
|
//use it
|
|
316
347
|
if (availablePreferedOptions) {
|
|
317
348
|
preferencedOption = availablePreferedOptions;
|
|
@@ -328,7 +359,7 @@ var Variants = /** @class */ (function () {
|
|
|
328
359
|
}
|
|
329
360
|
}
|
|
330
361
|
if (preferencedOption) {
|
|
331
|
-
selection.select(preferencedOption.value);
|
|
362
|
+
selection.select(preferencedOption.value, true);
|
|
332
363
|
}
|
|
333
364
|
});
|
|
334
365
|
}
|
|
@@ -346,11 +377,11 @@ var Variants = /** @class */ (function () {
|
|
|
346
377
|
// refine selections ensuring that the selection that triggered the update refines LAST
|
|
347
378
|
orderedSelections.forEach(function (selection) { return selection.refineValues(_this); });
|
|
348
379
|
// check to see if we have enough selections made to update the display
|
|
349
|
-
var selectedSelections = this.selections.filter(function (selection) { return selection.selected; });
|
|
380
|
+
var selectedSelections = this.selections.filter(function (selection) { var _a, _b; return (_b = (_a = selection.selected) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.length; });
|
|
350
381
|
if (selectedSelections.length) {
|
|
351
382
|
var availableVariants = this.data;
|
|
352
383
|
var _loop_1 = function (selectedSelection) {
|
|
353
|
-
availableVariants = availableVariants.filter(function (variant) { return selectedSelection.selected == variant.options[selectedSelection.field].value && variant.available; });
|
|
384
|
+
availableVariants = availableVariants.filter(function (variant) { var _a; return ((_a = selectedSelection.selected) === null || _a === void 0 ? void 0 : _a.value) == variant.options[selectedSelection.field].value && variant.available; });
|
|
354
385
|
};
|
|
355
386
|
// loop through selectedSelections and only include available products that match current selections
|
|
356
387
|
for (var _i = 0, selectedSelections_1 = selectedSelections; _i < selectedSelections_1.length; _i++) {
|
|
@@ -367,13 +398,14 @@ var Variants = /** @class */ (function () {
|
|
|
367
398
|
}());
|
|
368
399
|
exports.Variants = Variants;
|
|
369
400
|
var VariantSelection = /** @class */ (function () {
|
|
370
|
-
function VariantSelection(variants,
|
|
401
|
+
function VariantSelection(variants, selectorField, variantConfig) {
|
|
371
402
|
var _this = this;
|
|
372
|
-
this.selected =
|
|
373
|
-
this.previouslySelected =
|
|
403
|
+
this.selected = undefined;
|
|
404
|
+
this.previouslySelected = undefined;
|
|
374
405
|
this.values = [];
|
|
375
|
-
this.field =
|
|
376
|
-
this.label =
|
|
406
|
+
this.field = selectorField;
|
|
407
|
+
this.label = (variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.label) || selectorField;
|
|
408
|
+
this.config = variantConfig || {};
|
|
377
409
|
// needed to prevent attaching variants as class property
|
|
378
410
|
this.variantsUpdate = function () { return variants.refineSelections(_this); };
|
|
379
411
|
// create possible values from the data and refine them
|
|
@@ -389,7 +421,7 @@ var VariantSelection = /** @class */ (function () {
|
|
|
389
421
|
var selectedSelections = variants.selections.filter(function (selection) { return selection.field != _this.field && selection.selected; });
|
|
390
422
|
var availableVariants = variants.data;
|
|
391
423
|
var _loop_2 = function (selectedSelection) {
|
|
392
|
-
availableVariants = availableVariants.filter(function (variant) { return selectedSelection.selected == variant.options[selectedSelection.field].value && variant.available; });
|
|
424
|
+
availableVariants = availableVariants.filter(function (variant) { var _a; return ((_a = selectedSelection.selected) === null || _a === void 0 ? void 0 : _a.value) == variant.options[selectedSelection.field].value && variant.available; });
|
|
393
425
|
};
|
|
394
426
|
// loop through selectedSelections and remove products that do not match
|
|
395
427
|
for (var _i = 0, selectedSelections_2 = selectedSelections; _i < selectedSelections_2.length; _i++) {
|
|
@@ -401,10 +433,30 @@ var VariantSelection = /** @class */ (function () {
|
|
|
401
433
|
.reduce(function (values, variant) {
|
|
402
434
|
var _a;
|
|
403
435
|
if (!values.some(function (val) { return variant.options[_this.field].value == val.value; })) {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
436
|
+
var value = variant.options[_this.field].value;
|
|
437
|
+
var thumbnailImageUrl = (_a = variant.mappings.core) === null || _a === void 0 ? void 0 : _a.thumbnailImageUrl;
|
|
438
|
+
var mappedValue = {
|
|
439
|
+
value: value,
|
|
440
|
+
label: value,
|
|
441
|
+
thumbnailImageUrl: thumbnailImageUrl,
|
|
442
|
+
available: Boolean(availableVariants.some(function (availableVariant) { return availableVariant.options[_this.field].value == variant.options[_this.field].value; })),
|
|
443
|
+
};
|
|
444
|
+
if (_this.config.thumbnailBackgroundImages) {
|
|
445
|
+
mappedValue.backgroundImageUrl = thumbnailImageUrl;
|
|
446
|
+
}
|
|
447
|
+
if (_this.config.mappings && _this.config.mappings && _this.config.mappings[value.toString().toLowerCase()]) {
|
|
448
|
+
var mapping = _this.config.mappings[value.toString().toLowerCase()];
|
|
449
|
+
if (mapping.label) {
|
|
450
|
+
mappedValue.label = mapping.label;
|
|
451
|
+
}
|
|
452
|
+
if (mapping.background) {
|
|
453
|
+
mappedValue.background = mapping.background;
|
|
454
|
+
}
|
|
455
|
+
if (mapping.backgroundImageUrl) {
|
|
456
|
+
mappedValue.backgroundImageUrl = mapping.backgroundImageUrl;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
values.push(mappedValue);
|
|
408
460
|
}
|
|
409
461
|
// TODO: use sorting function from config
|
|
410
462
|
return values;
|
|
@@ -412,19 +464,19 @@ var VariantSelection = /** @class */ (function () {
|
|
|
412
464
|
// if selection has been made
|
|
413
465
|
if (this.selected) {
|
|
414
466
|
// check if the selection is stil available
|
|
415
|
-
if (!newValues.some(function (val) { return val.value == _this.selected && val.available; })) {
|
|
467
|
+
if (!newValues.some(function (val) { var _a; return val.value == ((_a = _this.selected) === null || _a === void 0 ? void 0 : _a.value) && val.available; })) {
|
|
416
468
|
// the selection is no longer available, attempt to select previous selection
|
|
417
469
|
if (this.selected !== this.previouslySelected &&
|
|
418
470
|
this.previouslySelected &&
|
|
419
|
-
newValues.some(function (val) { return val.value == _this.previouslySelected && val.available; })) {
|
|
420
|
-
this.select(this.previouslySelected, true);
|
|
471
|
+
newValues.some(function (val) { var _a; return val.value == ((_a = _this.previouslySelected) === null || _a === void 0 ? void 0 : _a.value) && val.available; })) {
|
|
472
|
+
this.select(this.previouslySelected.value, true);
|
|
421
473
|
}
|
|
422
474
|
else {
|
|
423
475
|
// choose the first available option if previous seletions are unavailable
|
|
424
476
|
var availableValues = newValues.filter(function (val) { return val.available; });
|
|
425
477
|
if (newValues.length && availableValues.length) {
|
|
426
478
|
var nextAvailableValue = availableValues[0].value;
|
|
427
|
-
if (this.selected !== nextAvailableValue) {
|
|
479
|
+
if (this.selected.value !== nextAvailableValue) {
|
|
428
480
|
this.select(nextAvailableValue, true);
|
|
429
481
|
}
|
|
430
482
|
}
|
|
@@ -434,7 +486,7 @@ var VariantSelection = /** @class */ (function () {
|
|
|
434
486
|
this.values = newValues;
|
|
435
487
|
};
|
|
436
488
|
VariantSelection.prototype.reset = function () {
|
|
437
|
-
this.selected =
|
|
489
|
+
this.selected = undefined;
|
|
438
490
|
this.values.forEach(function (val) { return (val.available = false); });
|
|
439
491
|
};
|
|
440
492
|
VariantSelection.prototype.select = function (value, internalSelection) {
|
|
@@ -444,7 +496,7 @@ var VariantSelection = /** @class */ (function () {
|
|
|
444
496
|
if (!internalSelection) {
|
|
445
497
|
this.previouslySelected = this.selected;
|
|
446
498
|
}
|
|
447
|
-
this.selected =
|
|
499
|
+
this.selected = valueExist;
|
|
448
500
|
this.variantsUpdate();
|
|
449
501
|
}
|
|
450
502
|
};
|
|
@@ -510,3 +562,32 @@ function addBannersToResults(config, results, banners, paginationData) {
|
|
|
510
562
|
});
|
|
511
563
|
return results;
|
|
512
564
|
}
|
|
565
|
+
function variantOptionClick(elem, variantConfig, results) {
|
|
566
|
+
var options = {};
|
|
567
|
+
var attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
568
|
+
if (attr) {
|
|
569
|
+
var _a = attr.split(':'), option = _a[0], value = _a[1];
|
|
570
|
+
options[option.toLowerCase()] = [value.toLowerCase()];
|
|
571
|
+
makeVariantSelections(variantConfig, options, results);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
function makeVariantSelections(variantConfig, options, results) {
|
|
575
|
+
var _a, _b;
|
|
576
|
+
var filteredResults = results;
|
|
577
|
+
// filter based on config
|
|
578
|
+
(_b = (_a = variantConfig.realtime) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.forEach(function (filter) {
|
|
579
|
+
if (filter == 'first') {
|
|
580
|
+
filteredResults = [filteredResults[0]];
|
|
581
|
+
}
|
|
582
|
+
if (filter == 'unaltered') {
|
|
583
|
+
filteredResults = filteredResults.filter(function (result) { var _a; return !((_a = result.variants) === null || _a === void 0 ? void 0 : _a.selections.some(function (selection) { return selection.previouslySelected; })); });
|
|
584
|
+
}
|
|
585
|
+
});
|
|
586
|
+
filteredResults.forEach(function (result) {
|
|
587
|
+
var _a;
|
|
588
|
+
// no banner types
|
|
589
|
+
if (result.type == 'product') {
|
|
590
|
+
(_a = result.variants) === null || _a === void 0 ? void 0 : _a.makeSelections(options);
|
|
591
|
+
}
|
|
592
|
+
});
|
|
593
|
+
}
|
|
@@ -2,7 +2,7 @@ export { SearchMerchandisingStore, BannerContent, ContentType } from './SearchMe
|
|
|
2
2
|
export { SearchFacetStore, ValueFacet, RangeFacet, FacetValue, FacetHierarchyValue, FacetRangeValue } from './SearchFacetStore';
|
|
3
3
|
export { SearchFilterStore, Filter } from './SearchFilterStore';
|
|
4
4
|
export { SearchPaginationStore } from './SearchPaginationStore';
|
|
5
|
-
export { SearchResultStore, Product, Banner } from './SearchResultStore';
|
|
5
|
+
export { SearchResultStore, Product, Banner, VariantSelection, VariantSelectionValue } from './SearchResultStore';
|
|
6
6
|
export { SearchSortingStore } from './SearchSortingStore';
|
|
7
7
|
export { SearchQueryStore } from './SearchQueryStore';
|
|
8
8
|
export { SearchHistoryStore } from './SearchHistoryStore';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SearchHistoryStore = exports.SearchQueryStore = exports.SearchSortingStore = exports.Banner = exports.Product = exports.SearchResultStore = exports.SearchPaginationStore = exports.Filter = exports.SearchFilterStore = exports.FacetRangeValue = exports.FacetHierarchyValue = exports.FacetValue = exports.RangeFacet = exports.ValueFacet = exports.SearchFacetStore = exports.ContentType = exports.SearchMerchandisingStore = void 0;
|
|
3
|
+
exports.SearchHistoryStore = exports.SearchQueryStore = exports.SearchSortingStore = exports.VariantSelection = exports.Banner = exports.Product = exports.SearchResultStore = exports.SearchPaginationStore = exports.Filter = exports.SearchFilterStore = exports.FacetRangeValue = exports.FacetHierarchyValue = exports.FacetValue = exports.RangeFacet = exports.ValueFacet = exports.SearchFacetStore = exports.ContentType = exports.SearchMerchandisingStore = void 0;
|
|
4
4
|
var SearchMerchandisingStore_1 = require("./SearchMerchandisingStore");
|
|
5
5
|
Object.defineProperty(exports, "SearchMerchandisingStore", { enumerable: true, get: function () { return SearchMerchandisingStore_1.SearchMerchandisingStore; } });
|
|
6
6
|
Object.defineProperty(exports, "ContentType", { enumerable: true, get: function () { return SearchMerchandisingStore_1.ContentType; } });
|
|
@@ -20,6 +20,7 @@ var SearchResultStore_1 = require("./SearchResultStore");
|
|
|
20
20
|
Object.defineProperty(exports, "SearchResultStore", { enumerable: true, get: function () { return SearchResultStore_1.SearchResultStore; } });
|
|
21
21
|
Object.defineProperty(exports, "Product", { enumerable: true, get: function () { return SearchResultStore_1.Product; } });
|
|
22
22
|
Object.defineProperty(exports, "Banner", { enumerable: true, get: function () { return SearchResultStore_1.Banner; } });
|
|
23
|
+
Object.defineProperty(exports, "VariantSelection", { enumerable: true, get: function () { return SearchResultStore_1.VariantSelection; } });
|
|
23
24
|
var SearchSortingStore_1 = require("./SearchSortingStore");
|
|
24
25
|
Object.defineProperty(exports, "SearchSortingStore", { enumerable: true, get: function () { return SearchSortingStore_1.SearchSortingStore; } });
|
|
25
26
|
var SearchQueryStore_1 = require("./SearchQueryStore");
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -4,17 +4,29 @@ export type StoreConfig = {
|
|
|
4
4
|
id: string;
|
|
5
5
|
[any: string]: unknown;
|
|
6
6
|
};
|
|
7
|
+
export type VariantConfigFilterTypes = 'first' | 'unaltered';
|
|
7
8
|
export type VariantConfig = {
|
|
8
9
|
field: string;
|
|
10
|
+
realtime?: {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
filters?: VariantConfigFilterTypes[];
|
|
13
|
+
};
|
|
9
14
|
options?: {
|
|
10
|
-
[
|
|
11
|
-
preSelected?: string[];
|
|
12
|
-
};
|
|
15
|
+
[optionField: string]: VariantOptionConfig;
|
|
13
16
|
};
|
|
14
17
|
};
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
export type VariantOptionConfig = {
|
|
19
|
+
label?: string;
|
|
20
|
+
preSelected?: string[];
|
|
21
|
+
thumbnailBackgroundImages?: boolean;
|
|
22
|
+
mappings?: VariantOptionConfigMappings;
|
|
23
|
+
};
|
|
24
|
+
export type VariantOptionConfigMappings = {
|
|
25
|
+
[optionValue: string]: {
|
|
26
|
+
label?: string;
|
|
27
|
+
background?: string;
|
|
28
|
+
backgroundImageUrl?: string;
|
|
29
|
+
};
|
|
18
30
|
};
|
|
19
31
|
export type SearchStoreConfig = StoreConfig & {
|
|
20
32
|
globals?: Partial<SearchRequestModel>;
|
|
@@ -106,7 +118,9 @@ export type RecommendationStoreConfig = StoreConfig & {
|
|
|
106
118
|
realtime?: boolean;
|
|
107
119
|
batched?: boolean;
|
|
108
120
|
order?: number;
|
|
109
|
-
|
|
121
|
+
settings?: {
|
|
122
|
+
variants?: VariantConfig;
|
|
123
|
+
};
|
|
110
124
|
};
|
|
111
125
|
export type StoreConfigs = SearchStoreConfig | AutocompleteStoreConfig | FinderStoreConfig | RecommendationStoreConfig;
|
|
112
126
|
export type StoreServices = {
|
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;AACjE,OAAO,KAAK,EACX,wCAAwC,EACxC,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QACT,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteStore.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,iBAAkB,SAAQ,aAAa;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,sBAAsB,CAAC;IAChC,KAAK,EAAG,qBAAqB,CAAC;IAC9B,MAAM,EAAG,sBAAsB,CAAC;IAChC,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,OAAO,EAAE,wBAAwB,CAAC;gBAE7B,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa;IAiC7D,KAAK,IAAI,IAAI;IAMb,WAAW,IAAI,IAAI;IAgBnB,UAAU,IAAI,IAAI;IAMlB,gBAAgB,IAAI,IAAI;IAIxB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAIpB,UAAU,CAAC,IAAI,EAAE,MAAM,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAUhE,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAWtD,MAAM,CAAC,IAAI,GAAE,yBAAyB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"AutocompleteStore.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,iBAAkB,SAAQ,aAAa;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,sBAAsB,CAAC;IAChC,KAAK,EAAG,qBAAqB,CAAC;IAC9B,MAAM,EAAG,sBAAsB,CAAC;IAChC,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,OAAO,EAAE,wBAAwB,CAAC;gBAE7B,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa;IAiC7D,KAAK,IAAI,IAAI;IAMb,WAAW,IAAI,IAAI;IAgBnB,UAAU,IAAI,IAAI;IAMlB,gBAAgB,IAAI,IAAI;IAIxB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAIpB,UAAU,CAAC,IAAI,EAAE,MAAM,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAUhE,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAWtD,MAAM,CAAC,IAAI,GAAE,yBAAyB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;CAoExF"}
|
|
@@ -76,7 +76,6 @@ export class AutocompleteStore extends AbstractStore {
|
|
|
76
76
|
if (!data)
|
|
77
77
|
return;
|
|
78
78
|
this.error = undefined;
|
|
79
|
-
this.loaded = !!data.pagination;
|
|
80
79
|
this.meta = new MetaStore(data.meta);
|
|
81
80
|
// set the query to match the actual queried term and not the input query
|
|
82
81
|
if (data.search) {
|
|
@@ -97,7 +96,7 @@ export class AutocompleteStore extends AbstractStore {
|
|
|
97
96
|
this.facets = new AutocompleteFacetStore(this.config, this.services, this.storage, data.facets || [], data.pagination || {}, this.meta.data, this.state, data.merchandising || {});
|
|
98
97
|
}
|
|
99
98
|
this.filters = new SearchFilterStore(this.services, data.filters, this.meta.data);
|
|
100
|
-
this.results = new SearchResultStore(this.config, this.services, this.meta.data, data.results || [], data.pagination, data.merchandising);
|
|
99
|
+
this.results = new SearchResultStore(this.config, this.services, this.meta.data, data.results || [], data.pagination, data.merchandising, this.loaded);
|
|
101
100
|
if ((this.results.length === 0 && !this.trending.filter((term) => term.active).length) || this.terms?.filter((term) => term.active).length) {
|
|
102
101
|
// if a trending term was selected and then a subsequent search yields no results, reset trending terms to remove active state
|
|
103
102
|
// OR if any terms are active, also reset to ensure only a single term or trending term is active
|
|
@@ -105,5 +104,6 @@ export class AutocompleteStore extends AbstractStore {
|
|
|
105
104
|
}
|
|
106
105
|
this.pagination = new SearchPaginationStore(this.config, this.services, data.pagination, this.meta.data);
|
|
107
106
|
this.sorting = new SearchSortingStore(this.services, data.sorting || [], data.search || {}, this.meta.data);
|
|
107
|
+
this.loaded = !!data.pagination;
|
|
108
108
|
}
|
|
109
109
|
}
|
|
@@ -24,14 +24,14 @@ export class CartStore {
|
|
|
24
24
|
get price() {
|
|
25
25
|
let price = 0;
|
|
26
26
|
this.items.forEach((item) => {
|
|
27
|
-
price += (item.display.mappings.core?.price || 0) * item.quantity;
|
|
27
|
+
price += +(item.display.mappings.core?.price || 0) * item.quantity;
|
|
28
28
|
});
|
|
29
29
|
return price;
|
|
30
30
|
}
|
|
31
31
|
get msrp() {
|
|
32
32
|
let price = 0;
|
|
33
33
|
this.items.forEach((item) => {
|
|
34
|
-
price += (item.display.mappings.core?.msrp || item.display.mappings.core?.price || 0) * item.quantity;
|
|
34
|
+
price += (+(item.display.mappings.core?.msrp || 0) || +(item.display.mappings.core?.price || 0) || 0) * item.quantity;
|
|
35
35
|
});
|
|
36
36
|
return price;
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationStore.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,mBAAoB,SAAQ,aAAa;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,MAAM,UAAS;IACf,OAAO,EAAG,0BAA0B,CAAC;IACrC,OAAO,EAAG,OAAO,EAAE,CAAC;IACpB,IAAI,EAAG,SAAS,CAAC;gBAEZ,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa;IAiB/D,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,CAAC,EAAE,8BAA8B,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"RecommendationStore.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,mBAAoB,SAAQ,aAAa;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,MAAM,UAAS;IACf,OAAO,EAAG,0BAA0B,CAAC;IACrC,OAAO,EAAG,OAAO,EAAE,CAAC;IACpB,IAAI,EAAG,SAAS,CAAC;gBAEZ,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa;IAiB/D,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,CAAC,EAAE,8BAA8B,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;CAazF"}
|
|
@@ -23,13 +23,13 @@ export class RecommendationStore extends AbstractStore {
|
|
|
23
23
|
}
|
|
24
24
|
update(data) {
|
|
25
25
|
this.error = undefined;
|
|
26
|
-
this.loaded = !!data?.profile;
|
|
27
26
|
this.meta = new MetaStore(data?.meta);
|
|
28
27
|
this.profile = new RecommendationProfileStore(this.services, data);
|
|
29
|
-
this.results = new SearchResultStore(this.config, this.services, this.meta.data, data?.results);
|
|
28
|
+
this.results = new SearchResultStore(this.config, this.services, this.meta.data, data?.results, undefined, undefined, this.loaded);
|
|
30
29
|
// only create a cart store when type is bundle
|
|
31
30
|
if (this.profile.type == 'bundle') {
|
|
32
31
|
this.cart = new CartStore();
|
|
33
32
|
}
|
|
33
|
+
this.loaded = !!data?.profile;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchStore.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,aAAa;IACtC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,gBAAgB,CAAC;IAC1B,MAAM,EAAG,gBAAgB,CAAC;IAC1B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IAiDvD,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,GAAE,mBAAmB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"SearchStore.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,aAAa;IACtC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAG,SAAS,CAAC;IACjB,aAAa,EAAG,wBAAwB,CAAC;IACzC,MAAM,EAAG,gBAAgB,CAAC;IAC1B,MAAM,EAAG,gBAAgB,CAAC;IAC1B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,OAAO,EAAG,iBAAiB,CAAC;IAC5B,UAAU,EAAG,qBAAqB,CAAC;IACnC,OAAO,EAAG,kBAAkB,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa;IAiDvD,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,GAAE,mBAAmB,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAO,GAAG,IAAI;CA6BlF"}
|
|
@@ -48,14 +48,14 @@ export class SearchStore extends AbstractStore {
|
|
|
48
48
|
}
|
|
49
49
|
update(data = {}) {
|
|
50
50
|
this.error = undefined;
|
|
51
|
-
this.loaded = !!data.pagination;
|
|
52
51
|
this.meta = new MetaStore(data.meta);
|
|
53
52
|
this.merchandising = new SearchMerchandisingStore(this.services, data?.merchandising || {});
|
|
54
53
|
this.search = new SearchQueryStore(this.services, data?.search || {});
|
|
55
54
|
this.facets = new SearchFacetStore(this.config, this.services, this.storage, data.facets, data?.pagination || {}, this.meta.data, data?.merchandising || {});
|
|
56
55
|
this.filters = new SearchFilterStore(this.services, data.filters, this.meta.data);
|
|
57
|
-
this.results = new SearchResultStore(this.config, this.services, this.meta.data, data?.results || [], data.pagination, data.merchandising);
|
|
56
|
+
this.results = new SearchResultStore(this.config, this.services, this.meta.data, data?.results || [], data.pagination, data.merchandising, this.loaded);
|
|
58
57
|
this.pagination = new SearchPaginationStore(this.config, this.services, data.pagination, this.meta.data);
|
|
59
58
|
this.sorting = new SearchSortingStore(this.services, data?.sorting || [], data?.search || {}, this.meta.data);
|
|
59
|
+
this.loaded = !!data.pagination;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { StoreServices, StoreConfigs,
|
|
1
|
+
import type { StoreServices, StoreConfigs, ResultBadge, VariantOptionConfig, VariantConfig } from '../../types';
|
|
2
2
|
import type { SearchResponseModelResult, SearchResponseModelPagination, SearchResponseModelMerchandising, SearchResponseModelResultMappings, SearchResponseModelMerchandisingContentInline, SearchResponseModelMerchandisingContentConfig, MetaResponseModel } from '@searchspring/snapi-types';
|
|
3
3
|
export declare class SearchResultStore extends Array<Product | Banner> {
|
|
4
4
|
static get [Symbol.species](): ArrayConstructor;
|
|
5
|
-
constructor(config: StoreConfigs, services: StoreServices, metaData: MetaResponseModel, resultData?: SearchResponseModelResult[], paginationData?: SearchResponseModelPagination, merchData?: SearchResponseModelMerchandising);
|
|
5
|
+
constructor(config: StoreConfigs, services: StoreServices, metaData: MetaResponseModel, resultData?: SearchResponseModelResult[], paginationData?: SearchResponseModelPagination, merchData?: SearchResponseModelMerchandising, loaded?: boolean);
|
|
6
6
|
}
|
|
7
7
|
export declare class Banner {
|
|
8
8
|
type: string;
|
|
@@ -67,21 +67,23 @@ export declare class Variants {
|
|
|
67
67
|
makeSelections(options?: Record<string, string[]>): void;
|
|
68
68
|
refineSelections(fromSelection: VariantSelection): void;
|
|
69
69
|
}
|
|
70
|
-
type
|
|
70
|
+
export type VariantSelectionValue = {
|
|
71
71
|
value: string;
|
|
72
72
|
label?: string;
|
|
73
73
|
thumbnailImageUrl?: string;
|
|
74
|
+
backgroundImageUrl?: string;
|
|
74
75
|
background?: string;
|
|
75
76
|
available?: boolean;
|
|
76
77
|
};
|
|
77
78
|
export declare class VariantSelection {
|
|
78
79
|
field: string;
|
|
79
80
|
label: string;
|
|
80
|
-
selected?:
|
|
81
|
-
previouslySelected?:
|
|
82
|
-
values:
|
|
81
|
+
selected?: VariantSelectionValue;
|
|
82
|
+
previouslySelected?: VariantSelectionValue;
|
|
83
|
+
values: VariantSelectionValue[];
|
|
84
|
+
private config;
|
|
83
85
|
private variantsUpdate;
|
|
84
|
-
constructor(variants: Variants,
|
|
86
|
+
constructor(variants: Variants, selectorField: string, variantConfig?: VariantOptionConfig);
|
|
85
87
|
refineValues(variants: Variants): void;
|
|
86
88
|
reset(): void;
|
|
87
89
|
select(value: string, internalSelection?: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,45 @@
|
|
|
1
1
|
import { computed, makeObservable, observable } from 'mobx';
|
|
2
2
|
import deepmerge from 'deepmerge';
|
|
3
3
|
import { isPlainObject } from 'is-plain-object';
|
|
4
|
+
const VARIANT_ATTRIBUTE = 'ss-variant-option';
|
|
5
|
+
const VARIANT_ATTRIBUTE_SELECTED = 'ss-variant-option-selected';
|
|
4
6
|
export class SearchResultStore extends Array {
|
|
5
7
|
static get [Symbol.species]() {
|
|
6
8
|
return Array;
|
|
7
9
|
}
|
|
8
|
-
constructor(config, services, metaData, resultData, paginationData, merchData) {
|
|
10
|
+
constructor(config, services, metaData, resultData, paginationData, merchData, loaded) {
|
|
9
11
|
let results = (resultData || []).map((result) => {
|
|
10
12
|
return new Product(services, result, metaData, config);
|
|
11
13
|
});
|
|
14
|
+
const variantConfig = config?.settings?.variants;
|
|
15
|
+
// preselected variant options
|
|
16
|
+
if (variantConfig?.realtime?.enabled) {
|
|
17
|
+
// attach click events - ONLY happens once (known limitation)
|
|
18
|
+
if (!loaded && results.length) {
|
|
19
|
+
document.querySelectorAll(`[${VARIANT_ATTRIBUTE}]`).forEach((elem) => {
|
|
20
|
+
if (variantConfig?.field && !variantConfig?.realtime?.enabled === false) {
|
|
21
|
+
elem.addEventListener('click', () => variantOptionClick(elem, variantConfig, results));
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// check for attributes for preselection
|
|
26
|
+
if (results.length) {
|
|
27
|
+
if (variantConfig?.field && !variantConfig?.realtime?.enabled === false) {
|
|
28
|
+
const options = {};
|
|
29
|
+
// grab values from elements on the page to form preselected elements
|
|
30
|
+
document.querySelectorAll(`[${VARIANT_ATTRIBUTE_SELECTED}]`).forEach((elem) => {
|
|
31
|
+
const attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
32
|
+
if (attr) {
|
|
33
|
+
const [option, value] = attr.split(':');
|
|
34
|
+
if (option && value) {
|
|
35
|
+
options[option.toLowerCase()] = [value.toLowerCase()];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
makeVariantSelections(variantConfig, options, results);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
12
43
|
if (merchData?.content?.inline) {
|
|
13
44
|
const banners = merchData.content.inline
|
|
14
45
|
.sort(function (a, b) {
|
|
@@ -62,7 +93,7 @@ export class Product {
|
|
|
62
93
|
try {
|
|
63
94
|
// parse the field (JSON)
|
|
64
95
|
const parsedVariants = JSON.parse(this.attributes[variantsField]);
|
|
65
|
-
this.variants = new Variants(parsedVariants, this.mask, config
|
|
96
|
+
this.variants = new Variants(parsedVariants, this.mask, config?.settings?.variants);
|
|
66
97
|
}
|
|
67
98
|
catch (err) {
|
|
68
99
|
// failed to parse the variant JSON
|
|
@@ -181,7 +212,9 @@ export class Variants {
|
|
|
181
212
|
this.active = variant;
|
|
182
213
|
mask.set({ mappings: this.active.mappings, attributes: this.active.attributes });
|
|
183
214
|
};
|
|
184
|
-
|
|
215
|
+
if (config) {
|
|
216
|
+
this.config = config;
|
|
217
|
+
}
|
|
185
218
|
this.update(variantData, config);
|
|
186
219
|
}
|
|
187
220
|
update(variantData, config = this.config) {
|
|
@@ -199,12 +232,8 @@ export class Variants {
|
|
|
199
232
|
//need to reset this.selections first
|
|
200
233
|
this.selections = [];
|
|
201
234
|
options.map((option) => {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
field: option,
|
|
205
|
-
label: option,
|
|
206
|
-
};
|
|
207
|
-
this.selections.push(new VariantSelection(this, optionConfig));
|
|
235
|
+
const variantOptionConfig = this.config?.options && this.config.options[option];
|
|
236
|
+
this.selections.push(new VariantSelection(this, option, variantOptionConfig));
|
|
208
237
|
});
|
|
209
238
|
const preselectedOptions = {};
|
|
210
239
|
if (config?.options) {
|
|
@@ -224,7 +253,7 @@ export class Variants {
|
|
|
224
253
|
}
|
|
225
254
|
makeSelections(options) {
|
|
226
255
|
// options = {color: 'Blue', size: 'L'};
|
|
227
|
-
if (!options) {
|
|
256
|
+
if (!options || !Object.keys(options).length) {
|
|
228
257
|
// select first available for each selection
|
|
229
258
|
this.selections.forEach((selection) => {
|
|
230
259
|
const firstAvailableOption = selection.values.find((value) => value.available);
|
|
@@ -239,12 +268,12 @@ export class Variants {
|
|
|
239
268
|
//make all options available for first selection.
|
|
240
269
|
const availableOptions = selection.values.filter((value) => (idx == 0 ? true : value.available));
|
|
241
270
|
const preferedOptions = options[selection.field];
|
|
242
|
-
let preferencedOption = availableOptions[0];
|
|
271
|
+
let preferencedOption = selection.selected || availableOptions[0];
|
|
243
272
|
// if theres a preference for that field
|
|
244
273
|
if (preferedOptions) {
|
|
245
274
|
const checkIfAvailable = (preference) => {
|
|
246
275
|
//see if that option is in the available options
|
|
247
|
-
const availablePreferedOptions = availableOptions.find((value) => value.value.toLowerCase() == preference.toLowerCase());
|
|
276
|
+
const availablePreferedOptions = availableOptions.find((value) => value.value.toString().toLowerCase() == preference?.toString().toLowerCase());
|
|
248
277
|
//use it
|
|
249
278
|
if (availablePreferedOptions) {
|
|
250
279
|
preferencedOption = availablePreferedOptions;
|
|
@@ -261,7 +290,7 @@ export class Variants {
|
|
|
261
290
|
}
|
|
262
291
|
}
|
|
263
292
|
if (preferencedOption) {
|
|
264
|
-
selection.select(preferencedOption.value);
|
|
293
|
+
selection.select(preferencedOption.value, true);
|
|
265
294
|
}
|
|
266
295
|
});
|
|
267
296
|
}
|
|
@@ -278,12 +307,12 @@ export class Variants {
|
|
|
278
307
|
// refine selections ensuring that the selection that triggered the update refines LAST
|
|
279
308
|
orderedSelections.forEach((selection) => selection.refineValues(this));
|
|
280
309
|
// check to see if we have enough selections made to update the display
|
|
281
|
-
const selectedSelections = this.selections.filter((selection) => selection.selected);
|
|
310
|
+
const selectedSelections = this.selections.filter((selection) => selection.selected?.value?.length);
|
|
282
311
|
if (selectedSelections.length) {
|
|
283
312
|
let availableVariants = this.data;
|
|
284
313
|
// loop through selectedSelections and only include available products that match current selections
|
|
285
314
|
for (const selectedSelection of selectedSelections) {
|
|
286
|
-
availableVariants = availableVariants.filter((variant) => selectedSelection.selected == variant.options[selectedSelection.field].value && variant.available);
|
|
315
|
+
availableVariants = availableVariants.filter((variant) => selectedSelection.selected?.value == variant.options[selectedSelection.field].value && variant.available);
|
|
287
316
|
}
|
|
288
317
|
// set active variant
|
|
289
318
|
if (availableVariants.length == 1) {
|
|
@@ -293,12 +322,13 @@ export class Variants {
|
|
|
293
322
|
}
|
|
294
323
|
}
|
|
295
324
|
export class VariantSelection {
|
|
296
|
-
constructor(variants,
|
|
297
|
-
this.selected =
|
|
298
|
-
this.previouslySelected =
|
|
325
|
+
constructor(variants, selectorField, variantConfig) {
|
|
326
|
+
this.selected = undefined;
|
|
327
|
+
this.previouslySelected = undefined;
|
|
299
328
|
this.values = [];
|
|
300
|
-
this.field =
|
|
301
|
-
this.label =
|
|
329
|
+
this.field = selectorField;
|
|
330
|
+
this.label = variantConfig?.label || selectorField;
|
|
331
|
+
this.config = variantConfig || {};
|
|
302
332
|
// needed to prevent attaching variants as class property
|
|
303
333
|
this.variantsUpdate = () => variants.refineSelections(this);
|
|
304
334
|
// create possible values from the data and refine them
|
|
@@ -314,20 +344,36 @@ export class VariantSelection {
|
|
|
314
344
|
let availableVariants = variants.data;
|
|
315
345
|
// loop through selectedSelections and remove products that do not match
|
|
316
346
|
for (const selectedSelection of selectedSelections) {
|
|
317
|
-
availableVariants = availableVariants.filter((variant) => selectedSelection.selected == variant.options[selectedSelection.field].value && variant.available);
|
|
347
|
+
availableVariants = availableVariants.filter((variant) => selectedSelection.selected?.value == variant.options[selectedSelection.field].value && variant.available);
|
|
318
348
|
}
|
|
319
349
|
const newValues = variants.data
|
|
320
350
|
.filter((variant) => variant.options[this.field])
|
|
321
351
|
.reduce((values, variant) => {
|
|
322
352
|
if (!values.some((val) => variant.options[this.field].value == val.value)) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
353
|
+
const value = variant.options[this.field].value;
|
|
354
|
+
const thumbnailImageUrl = variant.mappings.core?.thumbnailImageUrl;
|
|
355
|
+
const mappedValue = {
|
|
356
|
+
value: value,
|
|
357
|
+
label: value,
|
|
358
|
+
thumbnailImageUrl: thumbnailImageUrl,
|
|
328
359
|
available: Boolean(availableVariants.some((availableVariant) => availableVariant.options[this.field].value == variant.options[this.field].value)),
|
|
329
|
-
|
|
330
|
-
|
|
360
|
+
};
|
|
361
|
+
if (this.config.thumbnailBackgroundImages) {
|
|
362
|
+
mappedValue.backgroundImageUrl = thumbnailImageUrl;
|
|
363
|
+
}
|
|
364
|
+
if (this.config.mappings && this.config.mappings && this.config.mappings[value.toString().toLowerCase()]) {
|
|
365
|
+
const mapping = this.config.mappings[value.toString().toLowerCase()];
|
|
366
|
+
if (mapping.label) {
|
|
367
|
+
mappedValue.label = mapping.label;
|
|
368
|
+
}
|
|
369
|
+
if (mapping.background) {
|
|
370
|
+
mappedValue.background = mapping.background;
|
|
371
|
+
}
|
|
372
|
+
if (mapping.backgroundImageUrl) {
|
|
373
|
+
mappedValue.backgroundImageUrl = mapping.backgroundImageUrl;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
values.push(mappedValue);
|
|
331
377
|
}
|
|
332
378
|
// TODO: use sorting function from config
|
|
333
379
|
return values;
|
|
@@ -335,19 +381,19 @@ export class VariantSelection {
|
|
|
335
381
|
// if selection has been made
|
|
336
382
|
if (this.selected) {
|
|
337
383
|
// check if the selection is stil available
|
|
338
|
-
if (!newValues.some((val) => val.value == this.selected && val.available)) {
|
|
384
|
+
if (!newValues.some((val) => val.value == this.selected?.value && val.available)) {
|
|
339
385
|
// the selection is no longer available, attempt to select previous selection
|
|
340
386
|
if (this.selected !== this.previouslySelected &&
|
|
341
387
|
this.previouslySelected &&
|
|
342
|
-
newValues.some((val) => val.value == this.previouslySelected && val.available)) {
|
|
343
|
-
this.select(this.previouslySelected, true);
|
|
388
|
+
newValues.some((val) => val.value == this.previouslySelected?.value && val.available)) {
|
|
389
|
+
this.select(this.previouslySelected.value, true);
|
|
344
390
|
}
|
|
345
391
|
else {
|
|
346
392
|
// choose the first available option if previous seletions are unavailable
|
|
347
393
|
const availableValues = newValues.filter((val) => val.available);
|
|
348
394
|
if (newValues.length && availableValues.length) {
|
|
349
395
|
const nextAvailableValue = availableValues[0].value;
|
|
350
|
-
if (this.selected !== nextAvailableValue) {
|
|
396
|
+
if (this.selected.value !== nextAvailableValue) {
|
|
351
397
|
this.select(nextAvailableValue, true);
|
|
352
398
|
}
|
|
353
399
|
}
|
|
@@ -357,7 +403,7 @@ export class VariantSelection {
|
|
|
357
403
|
this.values = newValues;
|
|
358
404
|
}
|
|
359
405
|
reset() {
|
|
360
|
-
this.selected =
|
|
406
|
+
this.selected = undefined;
|
|
361
407
|
this.values.forEach((val) => (val.available = false));
|
|
362
408
|
}
|
|
363
409
|
select(value, internalSelection = false) {
|
|
@@ -366,7 +412,7 @@ export class VariantSelection {
|
|
|
366
412
|
if (!internalSelection) {
|
|
367
413
|
this.previouslySelected = this.selected;
|
|
368
414
|
}
|
|
369
|
-
this.selected =
|
|
415
|
+
this.selected = valueExist;
|
|
370
416
|
this.variantsUpdate();
|
|
371
417
|
}
|
|
372
418
|
}
|
|
@@ -426,3 +472,30 @@ function addBannersToResults(config, results, banners, paginationData) {
|
|
|
426
472
|
});
|
|
427
473
|
return results;
|
|
428
474
|
}
|
|
475
|
+
function variantOptionClick(elem, variantConfig, results) {
|
|
476
|
+
const options = {};
|
|
477
|
+
const attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
478
|
+
if (attr) {
|
|
479
|
+
const [option, value] = attr.split(':');
|
|
480
|
+
options[option.toLowerCase()] = [value.toLowerCase()];
|
|
481
|
+
makeVariantSelections(variantConfig, options, results);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
function makeVariantSelections(variantConfig, options, results) {
|
|
485
|
+
let filteredResults = results;
|
|
486
|
+
// filter based on config
|
|
487
|
+
variantConfig.realtime?.filters?.forEach((filter) => {
|
|
488
|
+
if (filter == 'first') {
|
|
489
|
+
filteredResults = [filteredResults[0]];
|
|
490
|
+
}
|
|
491
|
+
if (filter == 'unaltered') {
|
|
492
|
+
filteredResults = filteredResults.filter((result) => !result.variants?.selections.some((selection) => selection.previouslySelected));
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
filteredResults.forEach((result) => {
|
|
496
|
+
// no banner types
|
|
497
|
+
if (result.type == 'product') {
|
|
498
|
+
result.variants?.makeSelections(options);
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
}
|
|
@@ -2,7 +2,7 @@ export { SearchMerchandisingStore, BannerContent, ContentType } from './SearchMe
|
|
|
2
2
|
export { SearchFacetStore, ValueFacet, RangeFacet, FacetValue, FacetHierarchyValue, FacetRangeValue } from './SearchFacetStore';
|
|
3
3
|
export { SearchFilterStore, Filter } from './SearchFilterStore';
|
|
4
4
|
export { SearchPaginationStore } from './SearchPaginationStore';
|
|
5
|
-
export { SearchResultStore, Product, Banner } from './SearchResultStore';
|
|
5
|
+
export { SearchResultStore, Product, Banner, VariantSelection, VariantSelectionValue } from './SearchResultStore';
|
|
6
6
|
export { SearchSortingStore } from './SearchSortingStore';
|
|
7
7
|
export { SearchQueryStore } from './SearchQueryStore';
|
|
8
8
|
export { SearchHistoryStore } from './SearchHistoryStore';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -2,7 +2,7 @@ export { SearchMerchandisingStore, ContentType } from './SearchMerchandisingStor
|
|
|
2
2
|
export { SearchFacetStore, ValueFacet, RangeFacet, FacetValue, FacetHierarchyValue, FacetRangeValue } from './SearchFacetStore';
|
|
3
3
|
export { SearchFilterStore, Filter } from './SearchFilterStore';
|
|
4
4
|
export { SearchPaginationStore } from './SearchPaginationStore';
|
|
5
|
-
export { SearchResultStore, Product, Banner } from './SearchResultStore';
|
|
5
|
+
export { SearchResultStore, Product, Banner, VariantSelection } from './SearchResultStore';
|
|
6
6
|
export { SearchSortingStore } from './SearchSortingStore';
|
|
7
7
|
export { SearchQueryStore } from './SearchQueryStore';
|
|
8
8
|
export { SearchHistoryStore } from './SearchHistoryStore';
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -4,17 +4,29 @@ export type StoreConfig = {
|
|
|
4
4
|
id: string;
|
|
5
5
|
[any: string]: unknown;
|
|
6
6
|
};
|
|
7
|
+
export type VariantConfigFilterTypes = 'first' | 'unaltered';
|
|
7
8
|
export type VariantConfig = {
|
|
8
9
|
field: string;
|
|
10
|
+
realtime?: {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
filters?: VariantConfigFilterTypes[];
|
|
13
|
+
};
|
|
9
14
|
options?: {
|
|
10
|
-
[
|
|
11
|
-
preSelected?: string[];
|
|
12
|
-
};
|
|
15
|
+
[optionField: string]: VariantOptionConfig;
|
|
13
16
|
};
|
|
14
17
|
};
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
export type VariantOptionConfig = {
|
|
19
|
+
label?: string;
|
|
20
|
+
preSelected?: string[];
|
|
21
|
+
thumbnailBackgroundImages?: boolean;
|
|
22
|
+
mappings?: VariantOptionConfigMappings;
|
|
23
|
+
};
|
|
24
|
+
export type VariantOptionConfigMappings = {
|
|
25
|
+
[optionValue: string]: {
|
|
26
|
+
label?: string;
|
|
27
|
+
background?: string;
|
|
28
|
+
backgroundImageUrl?: string;
|
|
29
|
+
};
|
|
18
30
|
};
|
|
19
31
|
export type SearchStoreConfig = StoreConfig & {
|
|
20
32
|
globals?: Partial<SearchRequestModel>;
|
|
@@ -106,7 +118,9 @@ export type RecommendationStoreConfig = StoreConfig & {
|
|
|
106
118
|
realtime?: boolean;
|
|
107
119
|
batched?: boolean;
|
|
108
120
|
order?: number;
|
|
109
|
-
|
|
121
|
+
settings?: {
|
|
122
|
+
variants?: VariantConfig;
|
|
123
|
+
};
|
|
110
124
|
};
|
|
111
125
|
export type StoreConfigs = SearchStoreConfig | AutocompleteStoreConfig | FinderStoreConfig | RecommendationStoreConfig;
|
|
112
126
|
export type StoreServices = {
|
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;AACjE,OAAO,KAAK,EACX,wCAAwC,EACxC,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QACT,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EACX,wCAAwC,EACxC,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,WAAW,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,wBAAwB,EAAE,CAAC;KACrC,CAAC;IACF,OAAO,CAAC,EAAE;QACT,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAAC;KAC3C,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACzC,CAAC,WAAW,EAAE,MAAM,GAAG;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACF,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE;QACV,SAAS,CAAC,EAAE;YACX,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB,YAAY,CAAC,EAAE,OAAO,CAAC;SACvB,CAAC;QACF,MAAM,CAAC,EAAE,gBAAgB,GAAG;YAC3B,MAAM,CAAC,EAAE;gBACR,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;aAClC,CAAC;SACF,CAAC;QACF,QAAQ,CAAC,EAAE;YACV,QAAQ,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,eAAe,CAAC,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC;YACjB,UAAU,CAAC,EAAE,OAAO,CAAC;SACrB,CAAC;QACF,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,OAAO,CAAC,EAAE;YACT,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,GAAG,CAAC,EAAE,MAAM,CAAC;SACb,CAAC;QACF,UAAU,CAAC,EAAE;YACZ,eAAe,CAAC,EAAE;gBACjB,KAAK,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;aACd,EAAE,CAAC;SACJ,CAAC;KACF,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC7C,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC7C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,GAAG;QAC3B,MAAM,CAAC,EAAE;YACR,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;SAClC,CAAC;KACF,CAAC;IACF,QAAQ,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,OAAO,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE;QACX,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACF,CAAC;AAGF,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,+BAA+B,CAAC;CAC3C,CAAC;AAGF,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG;IACrD,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,aAAa,CAAC;KACzB,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,yBAAyB,CAAC;AAEvH,MAAM,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,oBAAY,SAAS;IACpB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;CACf;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,wCAAwC,EAAE,CAAC;IACjD,KAAK,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,yBAAyB,GAAG,+BAA+B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-store-mobx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.56.1",
|
|
4
4
|
"description": "Snap MobX Store",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/snap-toolbox": "^0.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.56.1",
|
|
24
24
|
"mobx": "6.9.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@searchspring/snap-client": "^0.
|
|
28
|
-
"@searchspring/snap-url-manager": "^0.
|
|
27
|
+
"@searchspring/snap-client": "^0.56.1",
|
|
28
|
+
"@searchspring/snap-url-manager": "^0.56.1"
|
|
29
29
|
},
|
|
30
30
|
"sideEffects": false,
|
|
31
31
|
"files": [
|
|
32
32
|
"dist/**/*"
|
|
33
33
|
],
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "119ff8b630ca483a18806dadb866e7251b9dac23"
|
|
35
35
|
}
|