{"version":3,"sources":["webpack:///./scripts/components/events-calendar.js"],"names":["s","component","momentModule","window","moment","EventsCalendar","init","settings","name","$container","$","$btnPrev","$btnNext","today","Date","yearsBeforeToRender","yearsAheadToRender","this","location","search","length","yearAgo","setFullYear","getFullYear","setDate","yearFromNow","generate","fetchData","setupInteractions","$eventWrapper","on","$this","siblings","removeClass","addClass","hasClass","hide","show","error","fromDate","toDate","that","apiUrl","data","origin","StartDate","toISOString","EndDate","Id","ajax","type","url","dataType","success","response","status","eventData","eventsSummaries","value","eventDataWithSummaries","map","event","eventUrlName","EventUrl","split","pop","matchingEventSummary","filter","summaryItem","UrlName","isNullUndefinedEmpty","Summary","populateEvents","getEventHtml","eventFullUrl","href","Title","addEventToDay","day","$dayLi","format","find","ul","append","forEach","startDate","utc","Start","local","endDate","End","isAfter","currentDate","isBefore","add","each","after","startMonth","currentMonth","getMonth","currentYear","monthsToRender","i","buildMonth","daysHtml","totalFeb","monthNames","totalDays","tempDate","tempweekday","getDay","cmonthTotalDays","parseInt","date","getDate","totalDaysRendered","prevBtnText","nextBtnText","calendarMonthClass","calendarMonth","innerHTML","closeCalendar","slideUp","remove","$eventcalendar","first","last","Index","click","e","eq","document","$activeItem","parent","prev","$li","$ul","dateFormatted","text","eventHTMLString","$event","attr","index","children","rowIndex","Math","ceil","next","focus","slideDown","$target","target","is","parents"],"mappings":"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","file":"17.99babbdaac8433aaa477.js","sourcesContent":["import { isNullUndefinedEmpty } from '../helpers/helpers';\n\nexport const component = async () => {\n const momentModule = await import('moment-mini');\n window.moment = momentModule.default;\n\n EventsCalendar.init();\n};\n\nlet s;\nlet EventsCalendar = EventsCalendar || {};\n\nEventsCalendar = {\n settings: {\n name: 'equ-eventscalendar',\n $container: $('[data-equ-eventscalendar]'),\n $btnPrev: null,\n $btnNext: null,\n today: new Date(),\n yearsBeforeToRender: 1,\n yearsAheadToRender: 1, //Not in use for Dfes...\n },\n\n init() {\n s = this.settings;\n const search = window.location.search;\n\n if (s.$container.length) {\n try {\n var yearAgo = new Date();\n yearAgo.setFullYear(yearAgo.getFullYear() - s.yearsBeforeToRender);\n yearAgo.setDate(1);\n var yearFromNow = new Date();\n yearFromNow.setFullYear(yearFromNow.getFullYear() + s.yearsAheadToRender);\n yearFromNow.setDate(1);\n\n this.generate();\n this.fetchData(yearAgo, yearFromNow);\n this.setupInteractions();\n\n const $eventWrapper = $('.events-page-wrapper');\n\n $('.js-view-toggle').on('click', function () {\n const $this = $(this);\n $this.siblings().removeClass('is-active');\n $this.addClass('is-active');\n\n if ($(this).hasClass('-calendar')) {\n //list view\n $('.events_container, .search-main-container').hide();\n //calendar view\n $('.events-calendar').show();\n\n if ($eventWrapper.hasClass('has-searchquery')) {\n $eventWrapper.show();\n $('.search-results-events').hide();\n }\n } else {\n //list view\n $('.search-main-container').show();\n //calendar view\n $('.events-calendar').hide();\n if ($eventWrapper.hasClass('has-searchquery')) {\n $eventWrapper.show();\n $('.search-results-events').show();\n } else {\n $('.events_container').show();\n }\n }\n });\n } catch (error) {\n console.error('There was an error generating the calendar: ', error);\n }\n }\n },\n\n fetchData(fromDate, toDate) {\n //Get the Events from the default sitefinity calendar API,\n //then get summary data from a custom Sitefinity API\n //These can't be combined as the default API is difficult to customise\n //but the custom one does not provide recurring events\n const that = this;\n\n var apiUrl = s.$container.data('sf-controller-events');\n var calendarApiUrl = window.location.origin + s.$container.data('sf-controller-calendars');\n\n var data = {\n StartDate: fromDate.toISOString(),\n EndDate: toDate.toISOString(),\n Id: 'c55a5b00-40ee-404a-b58c-b5e0b18b682c', //Hard coded to main calendar. Requires additional API call to calendarApiUrl to handle multiple calendars\n };\n\n getEventData();\n\n function getEventData() {\n $.ajax({\n type: 'GET',\n url: apiUrl,\n data: data,\n dataType: 'JSON',\n success: function (response, status) {\n console.log(response);\n\n if (response.length > 0) {\n getSummaryData(response);\n }\n },\n error: function (data) {\n console.error('Calendar event API call failed.');\n },\n });\n }\n //Now get summaries and match them by Id\n function getSummaryData(eventData) {\n $.ajax({\n type: 'GET',\n url: '/api/public/events?$select=Title,Summary,UrlName',\n dataType: 'JSON',\n success: function (response, status) {\n console.log('Summary data returned: ', response);\n const eventsSummaries = response.value;\n\n //Populate Event data with summaries\n if (eventsSummaries.length > 0) {\n var eventDataWithSummaries = eventData.map((event) => {\n //Match with Url name, as the Ids do not match\n const eventUrlName = event.EventUrl.split('/').pop();\n var matchingEventSummary = eventsSummaries.filter((summaryItem) => summaryItem.UrlName === eventUrlName)[0];\n\n if (!isNullUndefinedEmpty(matchingEventSummary)) {\n event.Summary = matchingEventSummary.Summary;\n } else {\n console.warn(`A summary could not be found for the event id: ${event.Id}`);\n }\n return event;\n });\n console.log('Events with summaries: ', eventDataWithSummaries);\n\n that.populateEvents(eventDataWithSummaries);\n }\n },\n error: function (data) {\n console.error('Custom event API call failed.');\n },\n });\n }\n },\n\n getEventHtml(event) {\n const eventFullUrl = window.location.href + '/event-details' + event.EventUrl;\n return `\n
  • \n ${event.Title}\n
  • \n `;\n },\n\n addEventToDay(day, event) {\n const $dayLi = $(`[data-calendar-date=\"${day.format('D/M/YYYY')}\"]`);\n\n if ($dayLi.find('ul').length === 0) {\n //No events exist yet, add required UL\n const ul = $('