@searchspring/snap-store-mobx 0.71.0 → 0.72.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/README.md +11 -48
- package/dist/cjs/Search/Stores/SearchResultStore.d.ts.map +1 -1
- package/dist/cjs/Search/Stores/SearchResultStore.js +45 -21
- package/dist/esm/Search/Stores/SearchResultStore.d.ts.map +1 -1
- package/dist/esm/Search/Stores/SearchResultStore.js +41 -17
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,54 +1,17 @@
|
|
|
1
1
|
# Snap MobX Store
|
|
2
2
|
|
|
3
|
-
<a href="https://www.npmjs.com/package/@searchspring/snap-store-mobx"><img alt="NPM Status" src="https://img.shields.io/npm/v/@searchspring/snap-store-mobx.svg?style=flat"></a>
|
|
4
|
-
|
|
5
3
|
Management of Snap state using Mobx.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Snap Store MobX is a dependency of [@searchspring/snap-controller](https://github.com/searchspring/snap/tree/main/packages/snap-controller) <a href="https://www.npmjs.com/package/@searchspring/snap-controller"><img alt="NPM Status" src="https://img.shields.io/npm/v/@searchspring/snap-controller.svg?style=flat"></a>
|
|
10
|
-
|
|
11
|
-
## Dependencies
|
|
12
|
-
|
|
13
|
-
Snap Store MobX requires the following dependencies as services:
|
|
14
|
-
|
|
15
|
-
<a href="https://www.npmjs.com/package/@searchspring/snap-url-manager"><img alt="NPM Status" src="https://img.shields.io/npm/v/@searchspring/snap-url-manager.svg?style=flat"></a> [@searchspring/snap-url-manager](https://github.com/searchspring/snap/tree/main/packages/snap-url-manager)
|
|
16
|
-
|
|
17
|
-
## Installation
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install --save @searchspring/snap-store-mobx
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Import
|
|
24
|
-
```typescript
|
|
25
|
-
import { AbstractStore, SearchStore, AutocompleteStore, FinderStore, RecommendationStore, StorageStore } from '@searchspring/snap-store-mobx';
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Controller usage
|
|
29
|
-
|
|
30
|
-
Snap Store MobX is a dependency of Snap Controller which will handle store changes as needed. As such, it is recommended to use methods of the controller to access and update the store.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
## Standalone usage
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
import { SearchStore } from '@searchspring/snap-store-mobx'
|
|
37
|
-
import { UrlManager, UrlTranslator } from '@searchspring/snap-url-manager';
|
|
38
|
-
|
|
39
|
-
const searchConfig = {
|
|
40
|
-
id: 'search',
|
|
41
|
-
globals: {
|
|
42
|
-
pagination: {
|
|
43
|
-
pageSize: 12
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
const store = new SearchStore(searchConfig, { urlManager: new UrlManager(new UrlTranslator()) });
|
|
5
|
+
Although `@searchspring/snap-store-mobx` is published as a standalone package, it is not intended to be used directly. Internally it is a dependency of the `@searchspring/snap-preact` package.
|
|
49
6
|
|
|
50
|
-
store.
|
|
7
|
+
Each controller will have a store as a property. For example, the `SearchController` will have a `store` property that is an instance of the `SearchStore`.
|
|
51
8
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
9
|
+
See more information on the available stores below:
|
|
10
|
+
- [AbstractStore](https://searchspring.github.io/snap/reference-store-abstract)
|
|
11
|
+
- [SearchStore](https://searchspring.github.io/snap/reference-store-search)
|
|
12
|
+
- [AutocompleteStore](https://searchspring.github.io/snap/reference-store-autocomplete)
|
|
13
|
+
- [RecommendationStore](https://searchspring.github.io/snap/reference-store-recommendation)
|
|
14
|
+
- [FinderStore](https://searchspring.github.io/snap/reference-store-finder)
|
|
15
|
+
- [StorageStore](https://searchspring.github.io/snap/reference-store-storage)
|
|
16
|
+
- [MetaStore](https://searchspring.github.io/snap/reference-store-meta)
|
|
17
|
+
- [CartStore](https://searchspring.github.io/snap/reference-store-cart)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,aAAa,EAGb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACX,yBAAyB,EACzB,6BAA6B,EAC7B,gCAAgC,EAChC,iCAAiC,EACjC,6CAA6C,EAC7C,6CAA6C,EAC7C,iBAAiB,EACjB,MAAM,2BAA2B,CAAC;AAKnC,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC7D,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAGA,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,CAAC,EAAE,yBAAyB,EAAE,EACxC,cAAc,CAAC,EAAE,6BAA6B,EAC9C,SAAS,CAAC,EAAE,gCAAgC,EAC5C,MAAM,CAAC,EAAE,OAAO,EAChB,sBAAsB,CAAC,EAAE,6BAA6B,EAAE,yCAAyC;IACjG,eAAe,CAAC,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ var SearchResultStore = /** @class */ (function (_super) {
|
|
|
49
49
|
function SearchResultStore(config, services, metaData, resultData, paginationData, merchData, loaded, previousPaginationData, // used for infinite scroll functionality
|
|
50
50
|
previousResults // used for infinite scroll functionality
|
|
51
51
|
) {
|
|
52
|
-
var _a, _b, _c, _d
|
|
52
|
+
var _a, _b, _c, _d;
|
|
53
53
|
var results = (resultData || []).map(function (result, idx) {
|
|
54
54
|
return new Product(services, result, metaData, idx + 1, config);
|
|
55
55
|
});
|
|
@@ -58,33 +58,52 @@ var SearchResultStore = /** @class */ (function (_super) {
|
|
|
58
58
|
if ((_b = variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.realtime) === null || _b === void 0 ? void 0 : _b.enabled) {
|
|
59
59
|
// attach click events - ONLY happens once (known limitation)
|
|
60
60
|
if (!loaded && results.length) {
|
|
61
|
+
var processedSelects_1 = new Set();
|
|
61
62
|
document.querySelectorAll("[".concat(VARIANT_ATTRIBUTE, "]")).forEach(function (elem) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
if (elem.tagName == 'OPTION') {
|
|
64
|
+
var parentSelect_1 = elem.closest('select');
|
|
65
|
+
if (parentSelect_1) {
|
|
66
|
+
if (!processedSelects_1.has(parentSelect_1)) {
|
|
67
|
+
processedSelects_1.add(parentSelect_1);
|
|
68
|
+
parentSelect_1.addEventListener('change', function (e) {
|
|
69
|
+
var _a;
|
|
70
|
+
var val = (_a = e.target) === null || _a === void 0 ? void 0 : _a.value;
|
|
71
|
+
var clickedOption = Array.from(parentSelect_1.querySelectorAll("[".concat(VARIANT_ATTRIBUTE, "]"))).filter(function (elem) { return elem.value == val; });
|
|
72
|
+
if (clickedOption.length > 0) {
|
|
73
|
+
variantOptionClick(clickedOption[0], variantConfig, results);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.warn('Warning: unable to add realtime variant event listener for element - ', elem);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
elem.addEventListener('click', function () {
|
|
84
|
+
variantOptionClick(elem, variantConfig, results);
|
|
85
|
+
});
|
|
65
86
|
}
|
|
66
87
|
});
|
|
67
88
|
}
|
|
68
89
|
// check for attributes for preselection
|
|
69
90
|
if (results.length) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
options_1[option.toLowerCase()] = [value.toLowerCase()];
|
|
79
|
-
}
|
|
91
|
+
var options_1 = {};
|
|
92
|
+
// grab values from elements on the page to form preselected elements
|
|
93
|
+
document.querySelectorAll("[".concat(VARIANT_ATTRIBUTE_SELECTED, "]")).forEach(function (elem) {
|
|
94
|
+
var attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
95
|
+
if (attr) {
|
|
96
|
+
var _a = attr.split(':'), option = _a[0], value = _a[1];
|
|
97
|
+
if (option && value) {
|
|
98
|
+
options_1[option.toLowerCase()] = [value.toLowerCase()];
|
|
80
99
|
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
makeVariantSelections(variantConfig, options_1, results);
|
|
84
103
|
}
|
|
85
104
|
}
|
|
86
105
|
// only when infinite is enabled
|
|
87
|
-
if (((
|
|
106
|
+
if (((_c = config === null || config === void 0 ? void 0 : config.settings) === null || _c === void 0 ? void 0 : _c.infinite) && previousResults) {
|
|
88
107
|
// logic to determine when to concatenate previous results
|
|
89
108
|
// this logic is not bullet proof, but it is highly unlikely that the current and previous pagination data would ever be sequential unless paginating
|
|
90
109
|
// TODO: implement "load previous" with a limit to how many total products can be displayed
|
|
@@ -94,7 +113,7 @@ var SearchResultStore = /** @class */ (function (_super) {
|
|
|
94
113
|
}
|
|
95
114
|
}
|
|
96
115
|
// add banners to results - banner data includes ALL banners within the entire search results (even if not on the current page)
|
|
97
|
-
if (paginationData && ((
|
|
116
|
+
if (paginationData && ((_d = merchData === null || merchData === void 0 ? void 0 : merchData.content) === null || _d === void 0 ? void 0 : _d.inline)) {
|
|
98
117
|
// ensure banners are sorted by index
|
|
99
118
|
var banners = merchData.content.inline
|
|
100
119
|
.sort(function (a, b) {
|
|
@@ -640,8 +659,13 @@ function variantOptionClick(elem, variantConfig, results) {
|
|
|
640
659
|
var attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
641
660
|
if (attr) {
|
|
642
661
|
var _a = attr.split(':'), option = _a[0], value = _a[1];
|
|
643
|
-
|
|
644
|
-
|
|
662
|
+
if (!option || !value) {
|
|
663
|
+
console.error('Error!: realtime variant is missing option or value (option:value)!', elem, attr);
|
|
664
|
+
}
|
|
665
|
+
else {
|
|
666
|
+
options[option.toLowerCase()] = [value.toLowerCase()];
|
|
667
|
+
makeVariantSelections(variantConfig, options, results);
|
|
668
|
+
}
|
|
645
669
|
}
|
|
646
670
|
}
|
|
647
671
|
function makeVariantSelections(variantConfig, options, results) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,aAAa,EAGb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACX,yBAAyB,EACzB,6BAA6B,EAC7B,gCAAgC,EAChC,iCAAiC,EACjC,6CAA6C,EAC7C,6CAA6C,EAC7C,iBAAiB,EACjB,MAAM,2BAA2B,CAAC;AAKnC,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC7D,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAGA,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,CAAC,EAAE,yBAAyB,EAAE,EACxC,cAAc,CAAC,EAAE,6BAA6B,EAC9C,SAAS,CAAC,EAAE,gCAAgC,EAC5C,MAAM,CAAC,EAAE,OAAO,EAChB,sBAAsB,CAAC,EAAE,6BAA6B,EAAE,yCAAyC;IACjG,eAAe,CAAC,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"SearchResultStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchResultStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,28 +18,47 @@ export class SearchResultStore extends Array {
|
|
|
18
18
|
if (variantConfig?.realtime?.enabled) {
|
|
19
19
|
// attach click events - ONLY happens once (known limitation)
|
|
20
20
|
if (!loaded && results.length) {
|
|
21
|
+
const processedSelects = new Set();
|
|
21
22
|
document.querySelectorAll(`[${VARIANT_ATTRIBUTE}]`).forEach((elem) => {
|
|
22
|
-
if (
|
|
23
|
-
elem.
|
|
23
|
+
if (elem.tagName == 'OPTION') {
|
|
24
|
+
const parentSelect = elem.closest('select');
|
|
25
|
+
if (parentSelect) {
|
|
26
|
+
if (!processedSelects.has(parentSelect)) {
|
|
27
|
+
processedSelects.add(parentSelect);
|
|
28
|
+
parentSelect.addEventListener('change', (e) => {
|
|
29
|
+
const val = e.target?.value;
|
|
30
|
+
const clickedOption = Array.from(parentSelect.querySelectorAll(`[${VARIANT_ATTRIBUTE}]`)).filter((elem) => elem.value == val);
|
|
31
|
+
if (clickedOption.length > 0) {
|
|
32
|
+
variantOptionClick(clickedOption[0], variantConfig, results);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.warn('Warning: unable to add realtime variant event listener for element - ', elem);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
elem.addEventListener('click', () => {
|
|
43
|
+
variantOptionClick(elem, variantConfig, results);
|
|
44
|
+
});
|
|
24
45
|
}
|
|
25
46
|
});
|
|
26
47
|
}
|
|
27
48
|
// check for attributes for preselection
|
|
28
49
|
if (results.length) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
options[option.toLowerCase()] = [value.toLowerCase()];
|
|
38
|
-
}
|
|
50
|
+
const options = {};
|
|
51
|
+
// grab values from elements on the page to form preselected elements
|
|
52
|
+
document.querySelectorAll(`[${VARIANT_ATTRIBUTE_SELECTED}]`).forEach((elem) => {
|
|
53
|
+
const attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
54
|
+
if (attr) {
|
|
55
|
+
const [option, value] = attr.split(':');
|
|
56
|
+
if (option && value) {
|
|
57
|
+
options[option.toLowerCase()] = [value.toLowerCase()];
|
|
39
58
|
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
makeVariantSelections(variantConfig, options, results);
|
|
43
62
|
}
|
|
44
63
|
}
|
|
45
64
|
// only when infinite is enabled
|
|
@@ -549,8 +568,13 @@ function variantOptionClick(elem, variantConfig, results) {
|
|
|
549
568
|
const attr = elem.getAttribute(VARIANT_ATTRIBUTE);
|
|
550
569
|
if (attr) {
|
|
551
570
|
const [option, value] = attr.split(':');
|
|
552
|
-
|
|
553
|
-
|
|
571
|
+
if (!option || !value) {
|
|
572
|
+
console.error('Error!: realtime variant is missing option or value (option:value)!', elem, attr);
|
|
573
|
+
}
|
|
574
|
+
else {
|
|
575
|
+
options[option.toLowerCase()] = [value.toLowerCase()];
|
|
576
|
+
makeVariantSelections(variantConfig, options, results);
|
|
577
|
+
}
|
|
554
578
|
}
|
|
555
579
|
}
|
|
556
580
|
function makeVariantSelections(variantConfig, options, results) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-store-mobx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.72.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.72.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.72.1",
|
|
28
|
+
"@searchspring/snap-url-manager": "0.72.1"
|
|
29
29
|
},
|
|
30
30
|
"sideEffects": false,
|
|
31
31
|
"files": [
|
|
32
32
|
"dist/**/*"
|
|
33
33
|
],
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "907fc94dca17369d89e7aa9d60bbe1acdf05a3a7"
|
|
35
35
|
}
|