@treely/strapi-slices 7.3.0 → 7.4.0
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 +2 -1
- package/dist/models/strapi/StrapiEvent.d.ts +2 -2
- package/dist/strapi-slices.cjs.development.js +80 -42
- package/dist/strapi-slices.cjs.development.js.map +1 -1
- package/dist/strapi-slices.cjs.production.min.js +1 -1
- package/dist/strapi-slices.cjs.production.min.js.map +1 -1
- package/dist/strapi-slices.esm.js +80 -42
- package/dist/strapi-slices.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/EventCard/EventCard.test.tsx +3 -3
- package/src/components/EventCard/EventCard.tsx +39 -35
- package/src/models/strapi/StrapiEvent.ts +2 -2
- package/src/slices/Events/Events.test.tsx +8 -2
- package/src/slices/Events/Events.tsx +72 -39
package/README.md
CHANGED
|
@@ -39,7 +39,8 @@ npm run build
|
|
|
39
39
|
npm pack
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
Go to the project which uses the strapi-slices package and remove the
|
|
42
|
+
Go to the project which uses the strapi-slices package and remove the
|
|
43
|
+
`node_modules` and the `.next` folder before installing the package there:
|
|
43
44
|
|
|
44
45
|
```bash
|
|
45
46
|
cd ../path/to/your/project
|
|
@@ -17,10 +17,10 @@ export declare enum EventType {
|
|
|
17
17
|
interface StrapiEvent {
|
|
18
18
|
title: string;
|
|
19
19
|
description: string;
|
|
20
|
-
button
|
|
20
|
+
button?: StrapiLink;
|
|
21
21
|
buttonVariant?: 'outline' | 'ghost' | 'link' | 'solid' | 'outlineWhite';
|
|
22
22
|
recommended?: boolean;
|
|
23
|
-
speakers
|
|
23
|
+
speakers?: {
|
|
24
24
|
id: number;
|
|
25
25
|
name: string;
|
|
26
26
|
image: StrapiImage;
|
|
@@ -6061,7 +6061,7 @@ var EventCard = function EventCard(_ref) {
|
|
|
6061
6061
|
justifyContent: mobile ? undefined : 'space-between',
|
|
6062
6062
|
flexDir: mobile ? 'column-reverse' : 'row',
|
|
6063
6063
|
gap: mobile ? '4' : '0'
|
|
6064
|
-
}, React__default.default.createElement(boemly.Flex, {
|
|
6064
|
+
}, event.button && React__default.default.createElement(boemly.Flex, {
|
|
6065
6065
|
width: mobile ? 'full' : 'auto'
|
|
6066
6066
|
}, React__default.default.createElement(StrapiLinkButton, {
|
|
6067
6067
|
key: event.button.id,
|
|
@@ -6072,7 +6072,7 @@ var EventCard = function EventCard(_ref) {
|
|
|
6072
6072
|
size: "10"
|
|
6073
6073
|
}),
|
|
6074
6074
|
width: "full"
|
|
6075
|
-
})), React__default.default.createElement(boemly.Flex, {
|
|
6075
|
+
})), event.speakers && event.speakers.length > 0 && React__default.default.createElement(boemly.Flex, {
|
|
6076
6076
|
flexDir: "row",
|
|
6077
6077
|
gap: "2"
|
|
6078
6078
|
}, event.speakers.map(function (speaker) {
|
|
@@ -6155,6 +6155,12 @@ var Events = function Events(_ref) {
|
|
|
6155
6155
|
var _useState3 = React.useState([Sort.NEWEST_FIRST]),
|
|
6156
6156
|
sort = _useState3[0],
|
|
6157
6157
|
setSort = _useState3[1];
|
|
6158
|
+
var _useState4 = React.useState([]),
|
|
6159
|
+
allEventTypeOptions = _useState4[0],
|
|
6160
|
+
setAllEventTypeOptions = _useState4[1];
|
|
6161
|
+
var _useState5 = React.useState([]),
|
|
6162
|
+
allLanguageOptions = _useState5[0],
|
|
6163
|
+
setAllLanguageOptions = _useState5[1];
|
|
6158
6164
|
var now = new Date().toISOString();
|
|
6159
6165
|
var buildEventsUrl = function buildEventsUrl(index, batchSize, startFilter) {
|
|
6160
6166
|
var url = new URL("/treely-events", STRAPI_URI);
|
|
@@ -6168,10 +6174,14 @@ var Events = function Events(_ref) {
|
|
|
6168
6174
|
} else {
|
|
6169
6175
|
url.searchParams.append('sort', 'start:desc');
|
|
6170
6176
|
}
|
|
6171
|
-
if (
|
|
6172
|
-
|
|
6173
|
-
|
|
6174
|
-
|
|
6177
|
+
if (eventTypeFilter.length) {
|
|
6178
|
+
eventTypeFilter.forEach(function (filter, i) {
|
|
6179
|
+
url.searchParams.append("filters[$or][" + i + "][eventTypes][eventType]", filter);
|
|
6180
|
+
});
|
|
6181
|
+
}
|
|
6182
|
+
if (languageFilter.length) {
|
|
6183
|
+
languageFilter.forEach(function (filter, i) {
|
|
6184
|
+
url.searchParams.append("filters[$or][" + (eventTypeFilter.length + i) + "][languages][language]", filter);
|
|
6175
6185
|
});
|
|
6176
6186
|
}
|
|
6177
6187
|
return "/treely-events" + url.search;
|
|
@@ -6217,38 +6227,66 @@ var Events = function Events(_ref) {
|
|
|
6217
6227
|
var pastEvents = React.useMemo(function () {
|
|
6218
6228
|
return processEvents(pastData);
|
|
6219
6229
|
}, [pastData]);
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6238
|
-
|
|
6239
|
-
|
|
6240
|
-
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
|
|
6230
|
+
// Function to fetch all possible options
|
|
6231
|
+
var fetchAllOptions = React.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
6232
|
+
var url, response, data, events, allEventTypes, allLanguages;
|
|
6233
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
6234
|
+
while (1) switch (_context.prev = _context.next) {
|
|
6235
|
+
case 0:
|
|
6236
|
+
url = new URL("/treely-events", STRAPI_URI);
|
|
6237
|
+
url.searchParams.append('locale', locale);
|
|
6238
|
+
url.searchParams.append('populate', 'deep,6');
|
|
6239
|
+
_context.next = 5;
|
|
6240
|
+
return fetch(STRAPI_URI + "/api/treely-events" + url.search);
|
|
6241
|
+
case 5:
|
|
6242
|
+
response = _context.sent;
|
|
6243
|
+
_context.next = 8;
|
|
6244
|
+
return response.json();
|
|
6245
|
+
case 8:
|
|
6246
|
+
data = _context.sent;
|
|
6247
|
+
events = (data == null ? void 0 : data.data) || []; // Extract all event types
|
|
6248
|
+
allEventTypes = new Set();
|
|
6249
|
+
events.forEach(function (event) {
|
|
6250
|
+
var _event$attributes;
|
|
6251
|
+
if (event != null && (_event$attributes = event.attributes) != null && _event$attributes.eventTypes) {
|
|
6252
|
+
event.attributes.eventTypes.forEach(function (item) {
|
|
6253
|
+
allEventTypes.add(item.eventType);
|
|
6254
|
+
});
|
|
6255
|
+
}
|
|
6256
|
+
});
|
|
6257
|
+
// Extract all languages
|
|
6258
|
+
allLanguages = new Set();
|
|
6259
|
+
events.forEach(function (event) {
|
|
6260
|
+
var _event$attributes2;
|
|
6261
|
+
if (event != null && (_event$attributes2 = event.attributes) != null && _event$attributes2.languages) {
|
|
6262
|
+
event.attributes.languages.forEach(function (item) {
|
|
6263
|
+
allLanguages.add(item.language);
|
|
6264
|
+
});
|
|
6265
|
+
}
|
|
6266
|
+
});
|
|
6267
|
+
// Update state with all options
|
|
6268
|
+
setAllEventTypeOptions(Array.from(allEventTypes).map(function (value) {
|
|
6269
|
+
return {
|
|
6270
|
+
value: value,
|
|
6271
|
+
label: value
|
|
6272
|
+
};
|
|
6273
|
+
}));
|
|
6274
|
+
setAllLanguageOptions(Array.from(allLanguages).map(function (value) {
|
|
6275
|
+
return {
|
|
6276
|
+
value: value,
|
|
6277
|
+
label: value
|
|
6278
|
+
};
|
|
6279
|
+
}));
|
|
6280
|
+
case 16:
|
|
6281
|
+
case "end":
|
|
6282
|
+
return _context.stop();
|
|
6283
|
+
}
|
|
6284
|
+
}, _callee);
|
|
6285
|
+
})), [locale]);
|
|
6286
|
+
// Fetch all options when component mounts
|
|
6287
|
+
React.useEffect(function () {
|
|
6288
|
+
fetchAllOptions();
|
|
6289
|
+
}, [fetchAllOptions]);
|
|
6252
6290
|
var removeFilter = function removeFilter(filterType, valueToRemove) {
|
|
6253
6291
|
if (filterType === 'eventTypes') {
|
|
6254
6292
|
setEventTypeFilter(function (prev) {
|
|
@@ -6300,7 +6338,7 @@ var Events = function Events(_ref) {
|
|
|
6300
6338
|
searchPlaceholder: formatMessage({
|
|
6301
6339
|
id: 'sections.events.eventsFilter.searchPlaceholder'
|
|
6302
6340
|
}),
|
|
6303
|
-
options:
|
|
6341
|
+
options: allEventTypeOptions,
|
|
6304
6342
|
value: eventTypeFilter != null ? eventTypeFilter : [],
|
|
6305
6343
|
onChange: function onChange(selected) {
|
|
6306
6344
|
setEventTypeFilter(selected);
|
|
@@ -6319,7 +6357,7 @@ var Events = function Events(_ref) {
|
|
|
6319
6357
|
searchPlaceholder: formatMessage({
|
|
6320
6358
|
id: 'sections.events.eventsFilter.searchPlaceholder'
|
|
6321
6359
|
}),
|
|
6322
|
-
options:
|
|
6360
|
+
options: allLanguageOptions,
|
|
6323
6361
|
value: languageFilter != null ? languageFilter : [],
|
|
6324
6362
|
onChange: function onChange(selected) {
|
|
6325
6363
|
setLanguageFilter(selected);
|
|
@@ -6330,7 +6368,7 @@ var Events = function Events(_ref) {
|
|
|
6330
6368
|
minHeight: "6",
|
|
6331
6369
|
gap: "2"
|
|
6332
6370
|
}, eventTypeFilter.map(function (eventType) {
|
|
6333
|
-
var event =
|
|
6371
|
+
var event = allEventTypeOptions.find(function (option) {
|
|
6334
6372
|
return option.value === eventType;
|
|
6335
6373
|
});
|
|
6336
6374
|
return React__default.default.createElement(boemly.BoemlyTag, {
|
|
@@ -6341,7 +6379,7 @@ var Events = function Events(_ref) {
|
|
|
6341
6379
|
}
|
|
6342
6380
|
}, event == null ? void 0 : event.label);
|
|
6343
6381
|
}), languageFilter.map(function (singleLanguage) {
|
|
6344
|
-
var language =
|
|
6382
|
+
var language = allLanguageOptions.find(function (option) {
|
|
6345
6383
|
return option.value === singleLanguage;
|
|
6346
6384
|
});
|
|
6347
6385
|
return React__default.default.createElement(boemly.BoemlyTag, {
|