{"version":3,"file":"static/js/8973.cd61eda1.chunk.js","mappings":"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","sources":["shared/arrivals-departures-list-search/arrivals-departures-list-search.jsx"],"sourcesContent":["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":["ArrivalsDeparturesListSearch","_Component","props","_this","_classCallCheck","_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","value","_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","_createClass","key","type","_this2","this","getTabSwitchData","getCurrentUrl","arrivalsPage","_this3","CustomInput","forwardRef","_ref2","ref","_jsx","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","_objectSpread","flightLandingPageExists","NoFlights","FlightsLoading","Component"],"sourceRoot":""}