@riosst100/pwa-marketplace 2.2.4 → 2.2.6
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/package.json +1 -1
- package/src/components/SetsData/setsData.js +70 -34
- package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenuItem.js +1 -1
- package/src/overwrites/venia-ui/lib/components/MegaMenu/submenuColumn.js +76 -8
- package/src/talons/CollectibleGameSets/useCollectibleGameSets.js +7 -1
- package/src/talons/SetsData/setsData.gql.js +1 -0
- package/src/talons/SetsData/useSetsData.js +55 -6
package/package.json
CHANGED
|
@@ -27,6 +27,7 @@ const SetsData = props => {
|
|
|
27
27
|
const [active, setActive] = useState('all');
|
|
28
28
|
const [activeTab, setActiveTab] = useState('all');
|
|
29
29
|
const [activeFilter, setActiveFilter] = useState('');
|
|
30
|
+
const [activeYear, setActiveYear] = useState('');
|
|
30
31
|
const [searchQuery, setSearchQuery] = useState('');
|
|
31
32
|
|
|
32
33
|
const shopby = query.get('shopby') || null;
|
|
@@ -65,9 +66,9 @@ const SetsData = props => {
|
|
|
65
66
|
|
|
66
67
|
const classes = useStyle(defaultClasses);
|
|
67
68
|
|
|
68
|
-
const talonProps = useSetsData({ activeFilter, searchQuery, setActive, currentSort, shopby, setType, categoryId, activeTab });
|
|
69
|
+
const talonProps = useSetsData({ activeFilter, activeYear, searchQuery, setActive, currentSort, shopby, setType, categoryId, activeTab });
|
|
69
70
|
|
|
70
|
-
const { error, loading, setsData, categoryUrlSuffix, categoryUrlKey, productType, filteredSetsData, availableGroups, category, attributeData, pageInfo } = talonProps;
|
|
71
|
+
const { error, loading, setsData, categoryUrlSuffix, categoryUrlKey, productType, filteredSetsData, availableGroups, availableYears, category, attributeData, pageInfo } = talonProps;
|
|
71
72
|
|
|
72
73
|
if (loading && !setsData)
|
|
73
74
|
return <SetsDataShimmer />;
|
|
@@ -79,7 +80,7 @@ const SetsData = props => {
|
|
|
79
80
|
|
|
80
81
|
const setsLengthArr = [];
|
|
81
82
|
|
|
82
|
-
const newSetsData = searchQuery ? filteredSetsData : setsData;
|
|
83
|
+
const newSetsData = searchQuery || activeYear ? filteredSetsData : setsData;
|
|
83
84
|
|
|
84
85
|
// useEffect(() => {
|
|
85
86
|
if (setsData && setsData.length) {
|
|
@@ -120,10 +121,10 @@ const SetsData = props => {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
const setRelases = newSetsData && newSetsData.length && newSetsData.map((setRelease, index) => {
|
|
123
|
-
const { group, sets } = setRelease;
|
|
124
|
+
const { group, release_year, sets } = setRelease;
|
|
124
125
|
|
|
125
126
|
const setsResult = [];
|
|
126
|
-
|
|
127
|
+
|
|
127
128
|
if (sets.length) {
|
|
128
129
|
sets.map((set, index) => {
|
|
129
130
|
const { set_name, option_id, release_year } = set;
|
|
@@ -141,13 +142,13 @@ const SetsData = props => {
|
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
let setsResultSplitted = [];
|
|
144
|
-
if (active == group || newSetsData.length == 1) {
|
|
145
|
+
if (active && active == group || newSetsData.length == 1) {
|
|
145
146
|
setsResultSplitted = splitToNChunks(setsResult, 3);
|
|
146
147
|
}
|
|
147
148
|
|
|
148
149
|
return (
|
|
149
150
|
<>
|
|
150
|
-
{active == "all" && newSetsData.length > 1 ?
|
|
151
|
+
{active == "all" && activeYear && activeYear == release_year && newSetsData.length > 1 || active == "all" && !activeYear && newSetsData.length > 1 ?
|
|
151
152
|
<div className={cn('singles_group-wrapper mb-4 px-2 inline-block', classes.singlesGroupWrapper)}>
|
|
152
153
|
<div className='singles_item_group_letter text-xl font-medium border-b border-gray-100 pb-1 mb-2' >
|
|
153
154
|
{group}
|
|
@@ -179,8 +180,17 @@ const SetsData = props => {
|
|
|
179
180
|
|
|
180
181
|
setSearchQuery('')
|
|
181
182
|
}
|
|
183
|
+
|
|
184
|
+
const handleActiveYear = (val) => {
|
|
185
|
+
setActiveYear(val);
|
|
186
|
+
setActive('all');
|
|
187
|
+
setActiveFilter('');
|
|
188
|
+
setSearchQuery('')
|
|
189
|
+
}
|
|
190
|
+
|
|
182
191
|
const handleSearchQuery = (val) => {
|
|
183
192
|
setSearchQuery(val)
|
|
193
|
+
setActiveYear('');
|
|
184
194
|
setActive('all')
|
|
185
195
|
}
|
|
186
196
|
|
|
@@ -230,28 +240,54 @@ const SetsData = props => {
|
|
|
230
240
|
</button>
|
|
231
241
|
</li>
|
|
232
242
|
</ul> */}
|
|
233
|
-
{shopby == "
|
|
234
|
-
{
|
|
235
|
-
|
|
236
|
-
<
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
243
|
+
{shopby == "secret_lair" ? <>
|
|
244
|
+
<ul className={classes.nav}>
|
|
245
|
+
{availableYears.map((group, index) => (
|
|
246
|
+
<li key={index} className={classes.nav_item}>
|
|
247
|
+
<button
|
|
248
|
+
onClick={() => {
|
|
249
|
+
handleActiveYear(group)
|
|
250
|
+
}}
|
|
251
|
+
>
|
|
252
|
+
{activeYear == group ? <b>{group}</b> : group}
|
|
253
|
+
</button>
|
|
254
|
+
</li>
|
|
255
|
+
))}
|
|
256
|
+
<li className={classes.nav_item}>
|
|
257
|
+
<button
|
|
258
|
+
onClick={() => {
|
|
259
|
+
handleActiveYear('')
|
|
260
|
+
}}
|
|
261
|
+
>
|
|
262
|
+
{!activeYear ? <b>All Year</b> : 'All Year'}
|
|
263
|
+
</button>
|
|
264
|
+
</li>
|
|
265
|
+
</ul>
|
|
266
|
+
</> : ''}
|
|
267
|
+
{shopby == "lego_set_name" && activeTab == "all" ? <>
|
|
268
|
+
<ul className={classes.nav}>
|
|
269
|
+
{availableFilters.map((group, index) => (
|
|
270
|
+
<li key={index} className={classes.nav_item}>
|
|
271
|
+
<button
|
|
272
|
+
onClick={() => {
|
|
273
|
+
handleActiveFilter(group)
|
|
274
|
+
}}
|
|
275
|
+
>
|
|
276
|
+
{activeFilter == group ? <b>{group}</b> : group}
|
|
277
|
+
</button>
|
|
278
|
+
</li>
|
|
279
|
+
))}
|
|
280
|
+
<li className={classes.nav_item}>
|
|
281
|
+
<button
|
|
282
|
+
onClick={() => {
|
|
283
|
+
handleActiveFilter('')
|
|
284
|
+
}}
|
|
285
|
+
>
|
|
286
|
+
{!activeFilter ? <b>A-Z</b> : 'A-Z'}
|
|
287
|
+
</button>
|
|
288
|
+
</li>
|
|
289
|
+
</ul>
|
|
290
|
+
</> : ''}
|
|
255
291
|
{!pageInfo.hide_title && <h1 className='mx-auto relative block text-xl font-bold text-center pt-10 pb-4'>
|
|
256
292
|
{title}
|
|
257
293
|
</h1>}
|
|
@@ -289,7 +325,7 @@ const SetsData = props => {
|
|
|
289
325
|
</button>
|
|
290
326
|
</li>
|
|
291
327
|
))}
|
|
292
|
-
<li className={classes.nav_item}>
|
|
328
|
+
{availableGroups && availableGroups.length ? <li className={classes.nav_item}>
|
|
293
329
|
<button
|
|
294
330
|
onClick={() => {
|
|
295
331
|
handleActive('all')
|
|
@@ -297,7 +333,7 @@ const SetsData = props => {
|
|
|
297
333
|
>
|
|
298
334
|
{active == 'all' ? <b>All</b> : 'All'}
|
|
299
335
|
</button>
|
|
300
|
-
</li>
|
|
336
|
+
</li> : ''}
|
|
301
337
|
</ul>}
|
|
302
338
|
<div className='border border-gray-100 px-6'>
|
|
303
339
|
{setsData ? (
|
|
@@ -308,8 +344,8 @@ const SetsData = props => {
|
|
|
308
344
|
{/* <CustomSortBy sortProps={sortProps} availableSortMethods={availableSortBy} /> */}
|
|
309
345
|
</div>
|
|
310
346
|
) : ''}
|
|
311
|
-
<section className='single_list-indexing-container relative m-auto pt-5'>
|
|
312
|
-
{!activeFilter && activeTab != "year" && <ul className='flex gap-2 justify-center flex-wrap'>
|
|
347
|
+
{shopby != "secret_lair" && <section className='single_list-indexing-container relative m-auto pt-5'>
|
|
348
|
+
{shopby != "secret_lair" && !activeFilter && activeTab != "year" && <ul className='flex gap-2 justify-center flex-wrap'>
|
|
313
349
|
<li>
|
|
314
350
|
<button
|
|
315
351
|
className={cn(
|
|
@@ -341,7 +377,7 @@ const SetsData = props => {
|
|
|
341
377
|
</li>
|
|
342
378
|
))}
|
|
343
379
|
</ul>}
|
|
344
|
-
</section>
|
|
380
|
+
</section>}
|
|
345
381
|
<Divider className="mb-5 px-4 mt-5" />
|
|
346
382
|
<section className='singles-container'>
|
|
347
383
|
<div className={cn('singles-wrapper block -mx-4', classes.singlesWrapper)}>
|
|
@@ -37,8 +37,10 @@ const SubmenuColumn = props => {
|
|
|
37
37
|
// return ;
|
|
38
38
|
// };
|
|
39
39
|
|
|
40
|
+
let childrenItems = '';
|
|
41
|
+
|
|
40
42
|
if (category.children.length) {
|
|
41
|
-
|
|
43
|
+
childrenItems = category.children.map((subCategory, index) => {
|
|
42
44
|
const { url_path, isActive, name } = subCategory;
|
|
43
45
|
const categoryUrl = resourceUrl(
|
|
44
46
|
`/${url_path}${categoryUrlSuffix || ''}`
|
|
@@ -73,10 +75,22 @@ const SubmenuColumn = props => {
|
|
|
73
75
|
/>
|
|
74
76
|
) : '';
|
|
75
77
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
// if (customMenuItems.length) {
|
|
79
|
+
// console.log(customMenuItems)
|
|
80
|
+
// }
|
|
81
|
+
|
|
82
|
+
// var childLi = '';
|
|
83
|
+
let result = [];
|
|
84
|
+
|
|
85
|
+
if (customMenuItems.length) {
|
|
86
|
+
// console.log('customMenuItems length')
|
|
87
|
+
// console.log(customMenuItems)
|
|
88
|
+
|
|
89
|
+
customMenuItems.map((submenu, index) => {
|
|
90
|
+
const {name, path} = submenu;
|
|
91
|
+
|
|
92
|
+
result.push(
|
|
93
|
+
<li key={index} className={cn(classes.submenuChildItem, 'mt-0')}>
|
|
80
94
|
<Link
|
|
81
95
|
{...keyboardProps}
|
|
82
96
|
className={isActive ? classes.linkActive : classes.link}
|
|
@@ -89,8 +103,14 @@ const SubmenuColumn = props => {
|
|
|
89
103
|
>
|
|
90
104
|
{name}
|
|
91
105
|
</Link>
|
|
92
|
-
|
|
93
|
-
)
|
|
106
|
+
</li>
|
|
107
|
+
)
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
// console.log(childrenItems)
|
|
111
|
+
} else {
|
|
112
|
+
result.push(
|
|
113
|
+
<li key={index} className={cn(classes.submenuChildItem, 'mt-0')}>
|
|
94
114
|
<Link
|
|
95
115
|
{...keyboardProps}
|
|
96
116
|
className={isActive ? classes.linkActive : classes.link}
|
|
@@ -103,11 +123,59 @@ const SubmenuColumn = props => {
|
|
|
103
123
|
>
|
|
104
124
|
{name}
|
|
105
125
|
</Link>
|
|
106
|
-
|
|
126
|
+
</li>
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// return '';
|
|
131
|
+
|
|
132
|
+
// return childLi;
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
return result;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (category.custom_submenu && category.custom_submenu.length)
|
|
142
|
+
{
|
|
143
|
+
childrenItems = category.custom_submenu.map((subCategory, index) => {
|
|
144
|
+
const { path, isActive, name } = subCategory;
|
|
145
|
+
const categoryUrl = resourceUrl(
|
|
146
|
+
`/${path}`
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
// setting keyboardProps if it is last child of that category
|
|
150
|
+
const keyboardProps =
|
|
151
|
+
index === category.children.length - 1
|
|
152
|
+
? props.keyboardProps
|
|
153
|
+
: {};
|
|
154
|
+
|
|
155
|
+
let result = [];
|
|
156
|
+
|
|
157
|
+
result.push(
|
|
158
|
+
<li key={index} className={cn(classes.submenuChildItem, 'mt-0')}>
|
|
159
|
+
<Link
|
|
160
|
+
{...keyboardProps}
|
|
161
|
+
className={isActive ? classes.linkActive : classes.link}
|
|
162
|
+
data-cy="MegaMenu-SubmenuColumn-link"
|
|
163
|
+
to={categoryUrl}
|
|
164
|
+
onClick={() => {
|
|
165
|
+
handleCloseSubMenu();
|
|
166
|
+
onNavigate();
|
|
167
|
+
}}
|
|
168
|
+
>
|
|
169
|
+
{name}
|
|
170
|
+
</Link>
|
|
107
171
|
</li>
|
|
108
172
|
);
|
|
173
|
+
|
|
174
|
+
return result;
|
|
109
175
|
});
|
|
176
|
+
}
|
|
110
177
|
|
|
178
|
+
if (childrenItems) {
|
|
111
179
|
children = <ul className={classes.submenuChild}>{childrenItems}</ul>;
|
|
112
180
|
}
|
|
113
181
|
|
|
@@ -88,6 +88,11 @@ export const useCollectibleGameSets = props => {
|
|
|
88
88
|
}, [data, sortby]);
|
|
89
89
|
|
|
90
90
|
const availableGroups = collectibleGameSets && collectibleGameSets.length ? collectibleGameSets.map(({ release_type }) => release_type) : [];
|
|
91
|
+
// const availableReleaseYears = collectibleGameSets && collectibleGameSets.length ? collectibleGameSets.map(({ data }) => data.release_year) : [];
|
|
92
|
+
const availableReleaseYears = [];
|
|
93
|
+
|
|
94
|
+
console.log('collectibleGameSets')
|
|
95
|
+
console.log(collectibleGameSets)
|
|
91
96
|
|
|
92
97
|
const filteredCollectibleGameSets = useMemo(() => {
|
|
93
98
|
if (!collectibleGameSets) {
|
|
@@ -129,6 +134,7 @@ export const useCollectibleGameSets = props => {
|
|
|
129
134
|
categoryUrlSuffix,
|
|
130
135
|
categoryUrlKey,
|
|
131
136
|
productType,
|
|
132
|
-
availableGroups
|
|
137
|
+
availableGroups,
|
|
138
|
+
availableReleaseYears
|
|
133
139
|
};
|
|
134
140
|
};
|
|
@@ -8,7 +8,7 @@ import { getFilterInput, getFiltersFromSearch } from '@magento/peregrine/lib/tal
|
|
|
8
8
|
|
|
9
9
|
export const useSetsData = props => {
|
|
10
10
|
|
|
11
|
-
const { searchQuery, setActive, currentSort, shopby, setType, categoryId, activeTab, activeFilter } = props
|
|
11
|
+
const { searchQuery, setActive, currentSort, shopby, setType, categoryId, activeTab, activeFilter, activeYear } = props
|
|
12
12
|
|
|
13
13
|
const { value: sortby } = currentSort
|
|
14
14
|
|
|
@@ -133,7 +133,42 @@ export const useSetsData = props => {
|
|
|
133
133
|
return setsData;
|
|
134
134
|
}, [queryResponse]);
|
|
135
135
|
|
|
136
|
-
const availableGroups = setsData && setsData.length ? setsData.map(({ group }) => group) : [];
|
|
136
|
+
// const availableGroups = setsData && setsData.length ? setsData.map(({ group }) => group) : [];
|
|
137
|
+
const availableGroups = useMemo(() => {
|
|
138
|
+
if (!setsData) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const groups = [];
|
|
143
|
+
|
|
144
|
+
setsData.map(({ group, release_year, sets }, index) => {
|
|
145
|
+
// const newSets = sets.filter(function(set) {
|
|
146
|
+
// return set.set_name.search(new RegExp(searchQuery, "i")) != -1 || group.search(new RegExp(searchQuery, "i")) != -1;
|
|
147
|
+
// // return set.set_name.includes(searchQuery);
|
|
148
|
+
// });
|
|
149
|
+
|
|
150
|
+
// if (newSets && newSets.length) {
|
|
151
|
+
// filteredSets.push({
|
|
152
|
+
// 'group': group,
|
|
153
|
+
// 'sets': newSets
|
|
154
|
+
// })
|
|
155
|
+
// }
|
|
156
|
+
if (activeYear && activeYear == release_year) {
|
|
157
|
+
groups.push(group)
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
return groups;
|
|
162
|
+
}, [setsData, activeYear]);
|
|
163
|
+
let availableYears = setsData && setsData.length
|
|
164
|
+
? [...new Set(setsData.map(({ release_year }) => release_year))].sort((a, b) => b - a)
|
|
165
|
+
: [];
|
|
166
|
+
// let availableYears = setsData && setsData.length ? setsData.map(({ release_year }) => release_year) : [];
|
|
167
|
+
// availableYears = availableYears && availableYears.length ? availableYears.slice().sort((a, b) =>a.group.toLowerCase().localeCompare(b.group.toLowerCase())) : [];
|
|
168
|
+
// const groupByYears = setsData && setsData.length ? setsData.map(({ group,release_year }) => release_year) : [];
|
|
169
|
+
|
|
170
|
+
console.log('availableYears')
|
|
171
|
+
console.log(availableYears)
|
|
137
172
|
|
|
138
173
|
// const availableLeagues = setsData && setsData.length ? setsData.map(({ sets }) => setsData.map(({ sc_league }) => sc_league)) : [];
|
|
139
174
|
// console.log(availableLeagues)
|
|
@@ -167,23 +202,36 @@ export const useSetsData = props => {
|
|
|
167
202
|
// setActive('all')
|
|
168
203
|
// }, [active]);
|
|
169
204
|
|
|
170
|
-
setsData.map(({ group, sets }, index) => {
|
|
205
|
+
setsData.map(({ group, release_year, sets }, index) => {
|
|
171
206
|
const newSets = sets.filter(function(set) {
|
|
172
|
-
return set.set_name.search(new RegExp(searchQuery, "i")) != -1 || group.search(new RegExp(searchQuery, "i")) != -1;
|
|
207
|
+
return set.set_name && set.set_name.search(new RegExp(searchQuery, "i")) != -1 || group && group.search(new RegExp(searchQuery, "i")) != -1;
|
|
173
208
|
// return set.set_name.includes(searchQuery);
|
|
174
209
|
});
|
|
175
210
|
|
|
176
211
|
if (newSets && newSets.length) {
|
|
177
212
|
filteredSets.push({
|
|
178
213
|
'group': group,
|
|
214
|
+
'release_year': release_year,
|
|
179
215
|
'sets': newSets
|
|
180
216
|
})
|
|
181
217
|
}
|
|
182
218
|
})
|
|
183
219
|
}
|
|
184
220
|
|
|
185
|
-
|
|
186
|
-
|
|
221
|
+
if (!searchQuery && activeYear) {
|
|
222
|
+
setsData.map(({ group, release_year, sets }, index) => {
|
|
223
|
+
if (activeYear == release_year) {
|
|
224
|
+
filteredSets.push({
|
|
225
|
+
'group': group,
|
|
226
|
+
'release_year': release_year,
|
|
227
|
+
'sets': sets
|
|
228
|
+
})
|
|
229
|
+
}
|
|
230
|
+
})
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return searchQuery || activeYear ? filteredSets : setsData;
|
|
234
|
+
}, [setsData, searchQuery, activeYear]);
|
|
187
235
|
|
|
188
236
|
// useEffect(() => {
|
|
189
237
|
// setPageLoading(isBackgroundLoading);
|
|
@@ -218,6 +266,7 @@ export const useSetsData = props => {
|
|
|
218
266
|
categoryUrlKey,
|
|
219
267
|
productType,
|
|
220
268
|
availableGroups,
|
|
269
|
+
availableYears,
|
|
221
270
|
category,
|
|
222
271
|
attributeData,
|
|
223
272
|
pageInfo
|