{"version":3,"file":"static/js/6944.29394b5f.chunk.js","mappings":"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","sources":["shared/arrivals-departures-list-search/arrivals-departures-list-search-module.js","shared/arrivals-departures-list-search/arrivals-departures-list-search.jsx"],"sourcesContent":["import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport ArrivalsDeparturesListSearch from \"./arrivals-departures-list-search\"\n\nexport default class ArrivalsDeparturesListSearchModule {\n constructor(elem) {\n const self = this\n self.elem = elem\n self.modelJson = elem.dataset.modelJson && JSON.parse(elem.dataset.modelJson)\n this.init()\n return self\n }\n init() {\n const self = this\n ReactDOM.unmountComponentAtNode(self.elem)\n ReactDOM.render(<ArrivalsDeparturesListSearch {...self.modelJson} />, self.elem)\n }\n}\n","import React, { Component, forwardRef } from \"react\"\nimport Svg from \"../_svgs/svg\"\nimport * as endpoints from \"../../api/endpoints\"\nimport FlightsTable from \"./flights-table\"\nimport NoFlights from \"./no-flights\"\nimport * as dateHelper from \"../../booking/helpers/date\"\nimport Spinner from \"../../booking/components/spinner\"\nimport da from \"date-fns/locale/da\"\nimport enGB from \"date-fns/locale/en-GB\"\nimport DatePicker from \"react-datepicker\"\nimport { isMobile } from \"react-device-detect\"\nimport * as types from \"./page-types\"\nimport { DateTime } from \"luxon\"\nimport FlightsLoading from \"./flights-loading\"\n\nexport default class ArrivalsDeparturesListSearch extends Component {\n constructor(props) {\n super(props)\n this.datePicker = undefined\n\n const dtLocale = dateHelper.luxonLocale(props.language)\n const zone = \"Europe/Copenhagen\"\n const cphTimeConvert = DateTime.local().setLocale(dtLocale).setZone(zone) // gets local time and changes timezone to copenhagen to get correct time\n const cphTime = cphTimeConvert.setZone(\"local\", { keepLocalTime: true }) // locks in copenhagen time and switches back to local timezone. This ensures the time will stay CPH time when we later converts the DateTime to a JS Date object.\n let startDate = cphTime.set({ milliseconds: 0, seconds: 0, minutes: 60 }).minus({ hours: 1 })\n let minDate = startDate.minus({ days: 1 })\n let minTime = cphTime.set({ hours: 0, minutes: 0, seconds: 0, milliseconds: 0 })\n let maxTime = cphTime.set({ hours: 23, minutes: 0, seconds: 0, milliseconds: 0 })\n\n this.state = {\n q: props.query || \"\",\n previousFlights: [],\n flights: null,\n direction: \"D\",\n pageType: types.DEPARTURES,\n ajaxSpinnerActive: true,\n ajaxSpinnerTransparent: false,\n initialSearch: props.query ? true : false,\n searchDate: startDate,\n minDate: minDate,\n datepickerOpen: false,\n minTime: minTime,\n maxTime: maxTime,\n otherDaysMinTime: minTime,\n currentUrl: this.props.departuresPage,\n startDate: startDate,\n }\n\n this.search(\"D\", props.query ? `\"${props.query}\"` : \"\", startDate, props.language)\n }\n\n flightFilter = (flight, beforeDate) => {\n const date = flight.Date\n const time = flight.ExpectedTime\n const dateTime = DateTime.fromFormat(`${date} ${time}`, \"dd-MM-yyyy HH:mm\")\n if (dateTime < beforeDate) {\n return true\n }\n return false\n }\n\n search = async (direction, query, datetime, language) => {\n const userQuery = query && query.length >= 2 ? query : \"*:*\"\n const dt = datetime < this.state.startDate ? this.state.startDate : datetime\n const zone = \"Europe/Copenhagen\"\n const cphTime = dt.setZone(zone, { keepLocalTime: true }) // set zone to copenhagen and keep local time, which is already cph time\n const start = cphTime.minus({ days: 1 }).toUTC() // convert to UTC which is what Solr expects\n const end = cphTime.plus({ days: 2 }).toUTC() // convert to UTC which is what Solr expects\n const data = { direction: direction, query: userQuery ?? \"\", startDateTime: start, endDateTime: end, language: language }\n\n const response = await endpoints.getFlightInfoTable(data)\n let flights = []\n let previousFlights = []\n if (response?.data) {\n flights = response.data\n }\n if (flights.length > 0) {\n if (this.state.minDate < datetime) {\n const filteredFlights = flights.filter((flight) => this.flightFilter(flight, this.state.searchDate))\n const remainingFlights = flights.filter((flight) => !this.flightFilter(flight, this.state.searchDate))\n\n previousFlights = filteredFlights\n flights = remainingFlights\n }\n flights = flights?.filter((flight) => {\n const beforeDate = this.state.searchDate.plus({ days: 2 })\n return this.flightFilter(flight, beforeDate)\n })\n }\n this.setState({ flights: flights, previousFlights: previousFlights, ajaxSpinnerActive: false })\n }\n\n switchTabs(type) {\n if (type !== this.state.pageType) {\n this.setState(\n (prevState) => {\n switch (type) {\n case types.DEPARTURES:\n return this.getTabSwitchData(type)\n case types.ARRIVALS:\n return this.getTabSwitchData(type)\n }\n },\n () => {\n this.search(this.state.direction, this.state.initialSearch ? `\"${this.state.q}\"` : this.state.q, this.state.searchDate, this.props.language)\n },\n )\n }\n }\n\n getTabSwitchData(type) {\n return {\n ajaxSpinnerActive: true,\n pageType: type,\n direction: type === types.ARRIVALS ? \"A\" : \"D\",\n currentUrl: this.getCurrentUrl(type),\n }\n }\n\n getCurrentUrl(type) {\n switch (type) {\n case types.DEPARTURES:\n return this.props.departuresPage\n case types.ARRIVALS:\n return this.props.arrivalsPage\n }\n }\n\n handleInput = (event) => {\n const name = event.target.name\n const value = event.target.value\n this.setState(\n {\n [name]: value,\n initialSearch: false,\n },\n () => this.search(this.state.direction, this.state.q, this.state.searchDate, this.props.language),\n )\n }\n\n handleDateChange = (dateInput) => {\n this.setState(\n (prevState) => {\n const date = DateTime.fromJSDate(dateInput)\n const startOfMinDate = prevState.minDate.startOf(\"day\")\n const startOfNewDate = date.startOf(\"day\")\n if (startOfMinDate.toMillis() === startOfNewDate.toMillis()) {\n if (date <= prevState.minDate) {\n return { searchDate: prevState.minDate, minTime: prevState.minDate }\n }\n return { searchDate: date, minTime: prevState.minDate }\n } else {\n return { searchDate: date, minTime: prevState.otherDaysMinTime }\n }\n },\n () => {\n this.search(this.state.direction, this.state.q, this.state.searchDate, this.props.language)\n },\n )\n }\n\n handleDatepicker = () => {\n const openState = this.calendar.state.open\n this.calendar.setOpen(!openState)\n this.setState({ datepickerOpen: !this.state.datepickerOpen })\n }\n\n closeDatepicker = () => {\n this.setState({ datepickerOpen: false })\n }\n\n handleOutsideClick = () => {\n this.calendar.setOpen(false)\n this.setState({ datepickerOpen: false })\n }\n\n handlePrevDate = () => {\n const currentDate = this.state.searchDate\n let newDate = currentDate.minus({ days: 1 })\n if (newDate <= this.state.minDate) {\n newDate = this.state.minDate\n }\n this.handleDateChange(newDate.toJSDate())\n }\n\n handleNextDate = () => {\n const currentDate = this.state.searchDate\n const newDate = currentDate.plus({ days: 1 })\n this.handleDateChange(newDate.toJSDate())\n }\n\n scrollIntoView = () => {\n const flightSection = document.getElementById(\"FlightSection\")\n const siteHeader = document.getElementsByClassName(\"site-header\")[0]\n const headerOffset = siteHeader.clientHeight\n const elementPosition = flightSection.getBoundingClientRect().top\n const offsetPosition = elementPosition + window.pageYOffset - headerOffset\n\n window.scrollTo({\n top: offsetPosition,\n behavior: \"smooth\",\n })\n }\n\n render() {\n const CustomInput = forwardRef(({ value }, ref) => (\n <div className={\"react-datepicker-ignore-onclickoutside\"} onClick={this.handleDatepicker} ref={ref}>\n {value}\n </div>\n ))\n CustomInput.displayName = \"CustomInput\"\n\n const departuresTabIcon = <Svg iconName={this.props.departuresTabIcon ? this.props.departuresTabIcon : \"planetakeoff\"} />\n const arrivalsTabIcon = <Svg iconName={this.props.arrivalsTabIcon ? this.props.arrivalsTabIcon : \"planelanding\"} />\n\n return (\n <React.Fragment>\n <Spinner isActive={this.state.ajaxSpinnerActive} isTransparent={this.state.ajaxSpinnerTransparent} />\n <section className=\"deck deck--margin-bottom deck-flights\">\n <div className=\"flights\" id=\"FlightSection\">\n <header id=\"flightHeader\" className=\"flights__header no-bg\">\n <React.Fragment>\n <div className=\"form flights__header__form\">\n <div className=\"w--wider flights__header__form__inner-wrapper\">\n <div className=\"form__section\">\n <div className=\"form__section__inner\">\n <div className=\"form__field form__field--text form__field--text-search form__field--text--no-label\">\n <span className=\"form__valid\"></span>\n <input\n className=\"form__item\"\n name=\"q\"\n id=\"searchTextbox\"\n type=\"text\"\n autoComplete=\"off\"\n value={this.state.q}\n onChange={(e) => this.handleInput(e)}\n placeholder={this.props.queryPlaceholderText}\n />\n <button data-arrival-departures-search-button=\"data-arrival-departures-search-button\">\n <Svg iconName={\"search\"} />\n </button>\n </div>\n </div>\n </div>\n {!isMobile ? (\n <div className={`dateselect ${this.state.datepickerOpen ? \"datepicker-open\" : \"\"}`}>\n <DatePicker\n ref={(r) => (this.calendar = r)}\n selected={this.state.searchDate.toJSDate()}\n onChange={(date) => this.handleDateChange(date)}\n showTimeSelect={true}\n dateFormat=\"dd. MMM yyyy\"\n minDate={this.state.minDate.toJSDate()}\n minTime={this.state.minTime.toJSDate()}\n maxTime={this.state.maxTime.toJSDate()}\n locale={this.props.language === \"en\" ? enGB : da}\n customInput={<CustomInput calendar={this.calendar} />}\n timeCaption={this.props.datepickerTimeLabel || \"Tidspunkt\"}\n timeIntervals={60}\n onClickOutside={this.handleOutsideClick}\n onCalendarClose={this.closeDatepicker}\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </div>\n </React.Fragment>\n <div className=\"tab-panes\">\n <nav className=\"tab-panes__arrivals-departures\">\n <div className=\"tab-panes__arrivals-departures__primary\">\n <div className=\"tab-panes__arrivals-departures__primary__inner\">\n <a\n className={`button button--toggle ${this.state.pageType === types.DEPARTURES ? \"is-active\" : \"\"}`}\n onClick={() => this.switchTabs(types.DEPARTURES)}\n >\n {departuresTabIcon}\n <span className=\"text\">{this.props.departureTabName}</span>\n </a>\n <a\n className={`button button--toggle ${this.state.pageType === types.ARRIVALS ? \"is-active\" : \"\"}`}\n onClick={() => this.switchTabs(types.ARRIVALS)}\n >\n {arrivalsTabIcon}\n <span className=\"text\">{this.props.arrivalTabName}</span>\n </a>\n </div>\n </div>\n </nav>\n </div>\n </header>\n {isMobile ? (\n <div className=\"mobile-datepicker-container\">\n <div className=\"mobile-datepicker\">\n <div\n className={`date-arrow prev-date ${\n this.state.minDate.startOf(\"day\").toMillis() === this.state.searchDate.startOf(\"day\").toMillis() ? \"arrow-disabled\" : \"\"\n }`}\n onClick={\n this.state.minDate.startOf(\"day\").toMillis() === this.state.searchDate.startOf(\"day\").toMillis()\n ? undefined\n : () => this.handlePrevDate()\n }\n ></div>\n <div className={`dateselect ${this.state.datepickerOpen ? \"datepicker-open\" : \"\"}`}>\n <DatePicker\n ref={(r) => (this.calendar = r)}\n selected={this.state.searchDate.toJSDate()}\n onChange={(date) => this.handleDateChange(date)}\n showTimeSelect={true}\n dateFormat=\"d. MMMM\"\n minDate={this.state.minDate.toJSDate()}\n minTime={this.state.minTime.toJSDate()}\n maxTime={this.state.maxTime.toJSDate()}\n locale={this.props.language === \"en\" ? enGB : da}\n customInput={<CustomInput calendar={this.calendar} />}\n timeCaption={this.props.datepickerTimeLabel || \"Tidspunkt\"}\n timeIntervals={60}\n onClickOutside={this.handleOutsideClick}\n onCalendarClose={this.closeDatepicker}\n />\n </div>\n <div className=\"date-arrow next-date\" onClick={() => this.handleNextDate()}></div>\n </div>\n </div>\n ) : (\n \"\"\n )}\n {this.state.flights && this.state.flights.length > 0 ? (\n <FlightsTable\n {...this.props}\n language={this.props.language}\n flightLandingPageExists={this.props.flightLandingPageExists}\n currentUrl={this.state.currentUrl}\n flights={this.state.flights}\n previousFlights={this.state.previousFlights}\n direction={this.state.direction}\n scrollIntoView={this.scrollIntoView}\n />\n ) : !this.state.flights ? (\n <FlightsLoading />\n ) : (\n <NoFlights\n {...this.props}\n flightLandingPageExists={this.props.flightLandingPageExists}\n currentUrl={this.state.currentUrl}\n flights={this.state.flights}\n direction={this.state.direction}\n />\n )}\n </div>\n </section>\n </React.Fragment>\n )\n }\n}\n"],"names":["ArrivalsDeparturesListSearchModule","_createClass","elem","_classCallCheck","self","this","modelJson","dataset","JSON","parse","init","key","value","ReactDOM","_jsx","ArrivalsDeparturesListSearch","_objectSpread","_Component","props","_this","_callSuper","flightFilter","flight","beforeDate","date","Date","time","ExpectedTime","DateTime","fromFormat","concat","search","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","direction","query","datetime","language","userQuery","dt","cphTime","start","end","data","response","flights","previousFlights","_flights","filteredFlights","remainingFlights","wrap","_context","prev","next","length","state","startDate","setZone","keepLocalTime","minus","days","toUTC","plus","startDateTime","endDateTime","endpoints","sent","minDate","filter","searchDate","setState","ajaxSpinnerActive","stop","_x","_x2","_x3","_x4","apply","arguments","handleInput","event","name","target","_defineProperty","q","handleDateChange","dateInput","prevState","fromJSDate","startOfMinDate","startOf","startOfNewDate","toMillis","minTime","otherDaysMinTime","handleDatepicker","openState","calendar","open","setOpen","datepickerOpen","closeDatepicker","handleOutsideClick","handlePrevDate","newDate","toJSDate","handleNextDate","scrollIntoView","flightSection","document","getElementById","headerOffset","getElementsByClassName","clientHeight","offsetPosition","getBoundingClientRect","top","window","pageYOffset","scrollTo","behavior","datePicker","undefined","dtLocale","dateHelper","local","setLocale","set","milliseconds","seconds","minutes","hours","maxTime","pageType","types","ajaxSpinnerTransparent","initialSearch","currentUrl","departuresPage","_inherits","type","_this2","getTabSwitchData","getCurrentUrl","arrivalsPage","_this3","CustomInput","forwardRef","_ref2","ref","className","onClick","children","displayName","departuresTabIcon","Svg","iconName","arrivalsTabIcon","_jsxs","React","Spinner","isActive","isTransparent","id","autoComplete","onChange","e","placeholder","queryPlaceholderText","isMobile","DatePicker","r","selected","showTimeSelect","dateFormat","locale","enGB","da","customInput","timeCaption","datepickerTimeLabel","timeIntervals","onClickOutside","onCalendarClose","switchTabs","departureTabName","arrivalTabName","FlightsTable","flightLandingPageExists","NoFlights","FlightsLoading","Component"],"sourceRoot":""}