@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.
@@ -6043,7 +6043,7 @@ var EventCard = function EventCard(_ref) {
6043
6043
  justifyContent: mobile ? undefined : 'space-between',
6044
6044
  flexDir: mobile ? 'column-reverse' : 'row',
6045
6045
  gap: mobile ? '4' : '0'
6046
- }, React.createElement(Flex, {
6046
+ }, event.button && React.createElement(Flex, {
6047
6047
  width: mobile ? 'full' : 'auto'
6048
6048
  }, React.createElement(StrapiLinkButton, {
6049
6049
  key: event.button.id,
@@ -6054,7 +6054,7 @@ var EventCard = function EventCard(_ref) {
6054
6054
  size: "10"
6055
6055
  }),
6056
6056
  width: "full"
6057
- })), React.createElement(Flex, {
6057
+ })), event.speakers && event.speakers.length > 0 && React.createElement(Flex, {
6058
6058
  flexDir: "row",
6059
6059
  gap: "2"
6060
6060
  }, event.speakers.map(function (speaker) {
@@ -6137,6 +6137,12 @@ var Events = function Events(_ref) {
6137
6137
  var _useState3 = useState([Sort.NEWEST_FIRST]),
6138
6138
  sort = _useState3[0],
6139
6139
  setSort = _useState3[1];
6140
+ var _useState4 = useState([]),
6141
+ allEventTypeOptions = _useState4[0],
6142
+ setAllEventTypeOptions = _useState4[1];
6143
+ var _useState5 = useState([]),
6144
+ allLanguageOptions = _useState5[0],
6145
+ setAllLanguageOptions = _useState5[1];
6140
6146
  var now = new Date().toISOString();
6141
6147
  var buildEventsUrl = function buildEventsUrl(index, batchSize, startFilter) {
6142
6148
  var url = new URL("/treely-events", STRAPI_URI);
@@ -6150,10 +6156,14 @@ var Events = function Events(_ref) {
6150
6156
  } else {
6151
6157
  url.searchParams.append('sort', 'start:desc');
6152
6158
  }
6153
- if (languageFilter.length || eventTypeFilter.length) {
6154
- [].concat(languageFilter, eventTypeFilter).forEach(function (filter, i) {
6155
- var filterKey = i < languageFilter.length ? 'languages' : 'eventTypes';
6156
- url.searchParams.append("filters[$and][" + i + "][" + filterKey + "][" + filterKey.slice(0, -1) + "]", filter);
6159
+ if (eventTypeFilter.length) {
6160
+ eventTypeFilter.forEach(function (filter, i) {
6161
+ url.searchParams.append("filters[$or][" + i + "][eventTypes][eventType]", filter);
6162
+ });
6163
+ }
6164
+ if (languageFilter.length) {
6165
+ languageFilter.forEach(function (filter, i) {
6166
+ url.searchParams.append("filters[$or][" + (eventTypeFilter.length + i) + "][languages][language]", filter);
6157
6167
  });
6158
6168
  }
6159
6169
  return "/treely-events" + url.search;
@@ -6199,38 +6209,66 @@ var Events = function Events(_ref) {
6199
6209
  var pastEvents = useMemo(function () {
6200
6210
  return processEvents(pastData);
6201
6211
  }, [pastData]);
6202
- var combinedEvents = useMemo(function () {
6203
- return upcomingEvents.concat(pastEvents);
6204
- }, [upcomingEvents, pastEvents]);
6205
- var getOptions = function getOptions(items, key, selectedFilters) {
6206
- var uniqueValues = new Set();
6207
- var options = items.flatMap(function (card) {
6208
- return card.attributes[key].map(function (item) {
6209
- return {
6210
- value: item[key.slice(0, -1)],
6211
- label: item[key.slice(0, -1)]
6212
- };
6213
- });
6214
- }).filter(function (option) {
6215
- if (uniqueValues.has(option.value)) return false;
6216
- uniqueValues.add(option.value);
6217
- return true;
6218
- });
6219
- return options.concat(selectedFilters.filter(function (selected) {
6220
- return !uniqueValues.has(selected);
6221
- }).map(function (selected) {
6222
- return {
6223
- value: selected,
6224
- label: selected
6225
- };
6226
- }));
6227
- };
6228
- var eventTypeOptions = useMemo(function () {
6229
- return getOptions(combinedEvents, 'eventTypes', eventTypeFilter);
6230
- }, [combinedEvents]);
6231
- var languageOptions = useMemo(function () {
6232
- return getOptions(combinedEvents, 'languages', languageFilter);
6233
- }, [combinedEvents]);
6212
+ // Function to fetch all possible options
6213
+ var fetchAllOptions = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6214
+ var url, response, data, events, allEventTypes, allLanguages;
6215
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
6216
+ while (1) switch (_context.prev = _context.next) {
6217
+ case 0:
6218
+ url = new URL("/treely-events", STRAPI_URI);
6219
+ url.searchParams.append('locale', locale);
6220
+ url.searchParams.append('populate', 'deep,6');
6221
+ _context.next = 5;
6222
+ return fetch(STRAPI_URI + "/api/treely-events" + url.search);
6223
+ case 5:
6224
+ response = _context.sent;
6225
+ _context.next = 8;
6226
+ return response.json();
6227
+ case 8:
6228
+ data = _context.sent;
6229
+ events = (data == null ? void 0 : data.data) || []; // Extract all event types
6230
+ allEventTypes = new Set();
6231
+ events.forEach(function (event) {
6232
+ var _event$attributes;
6233
+ if (event != null && (_event$attributes = event.attributes) != null && _event$attributes.eventTypes) {
6234
+ event.attributes.eventTypes.forEach(function (item) {
6235
+ allEventTypes.add(item.eventType);
6236
+ });
6237
+ }
6238
+ });
6239
+ // Extract all languages
6240
+ allLanguages = new Set();
6241
+ events.forEach(function (event) {
6242
+ var _event$attributes2;
6243
+ if (event != null && (_event$attributes2 = event.attributes) != null && _event$attributes2.languages) {
6244
+ event.attributes.languages.forEach(function (item) {
6245
+ allLanguages.add(item.language);
6246
+ });
6247
+ }
6248
+ });
6249
+ // Update state with all options
6250
+ setAllEventTypeOptions(Array.from(allEventTypes).map(function (value) {
6251
+ return {
6252
+ value: value,
6253
+ label: value
6254
+ };
6255
+ }));
6256
+ setAllLanguageOptions(Array.from(allLanguages).map(function (value) {
6257
+ return {
6258
+ value: value,
6259
+ label: value
6260
+ };
6261
+ }));
6262
+ case 16:
6263
+ case "end":
6264
+ return _context.stop();
6265
+ }
6266
+ }, _callee);
6267
+ })), [locale]);
6268
+ // Fetch all options when component mounts
6269
+ useEffect(function () {
6270
+ fetchAllOptions();
6271
+ }, [fetchAllOptions]);
6234
6272
  var removeFilter = function removeFilter(filterType, valueToRemove) {
6235
6273
  if (filterType === 'eventTypes') {
6236
6274
  setEventTypeFilter(function (prev) {
@@ -6282,7 +6320,7 @@ var Events = function Events(_ref) {
6282
6320
  searchPlaceholder: formatMessage({
6283
6321
  id: 'sections.events.eventsFilter.searchPlaceholder'
6284
6322
  }),
6285
- options: eventTypeOptions,
6323
+ options: allEventTypeOptions,
6286
6324
  value: eventTypeFilter != null ? eventTypeFilter : [],
6287
6325
  onChange: function onChange(selected) {
6288
6326
  setEventTypeFilter(selected);
@@ -6301,7 +6339,7 @@ var Events = function Events(_ref) {
6301
6339
  searchPlaceholder: formatMessage({
6302
6340
  id: 'sections.events.eventsFilter.searchPlaceholder'
6303
6341
  }),
6304
- options: languageOptions,
6342
+ options: allLanguageOptions,
6305
6343
  value: languageFilter != null ? languageFilter : [],
6306
6344
  onChange: function onChange(selected) {
6307
6345
  setLanguageFilter(selected);
@@ -6312,7 +6350,7 @@ var Events = function Events(_ref) {
6312
6350
  minHeight: "6",
6313
6351
  gap: "2"
6314
6352
  }, eventTypeFilter.map(function (eventType) {
6315
- var event = eventTypeOptions.find(function (option) {
6353
+ var event = allEventTypeOptions.find(function (option) {
6316
6354
  return option.value === eventType;
6317
6355
  });
6318
6356
  return React.createElement(BoemlyTag, {
@@ -6323,7 +6361,7 @@ var Events = function Events(_ref) {
6323
6361
  }
6324
6362
  }, event == null ? void 0 : event.label);
6325
6363
  }), languageFilter.map(function (singleLanguage) {
6326
- var language = languageOptions.find(function (option) {
6364
+ var language = allLanguageOptions.find(function (option) {
6327
6365
  return option.value === singleLanguage;
6328
6366
  });
6329
6367
  return React.createElement(BoemlyTag, {