UNPKG

alm-search-01

Version:

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

666 lines (604 loc) 25.4 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _Button = _interopRequireDefault(require("@material-ui/core/Button")); var _ButtonField = _interopRequireDefault(require("./ButtonField")); var _fields = require("./fields"); var _moment = _interopRequireDefault(require("moment")); var _SwapVert = _interopRequireDefault(require("@material-ui/icons/SwapVert")); var _DropDown = _interopRequireDefault(require("./components/DropDown")); var _styles = require("@material-ui/core/styles"); var _AirlineSeatReclineExtra = _interopRequireDefault(require("@material-ui/icons/AirlineSeatReclineExtra")); var _FlightTakeoff = _interopRequireDefault(require("@material-ui/icons/FlightTakeoff")); var _FlightLand = _interopRequireDefault(require("@material-ui/icons/FlightLand")); var _SupervisorAccount = _interopRequireDefault(require("@material-ui/icons/SupervisorAccount")); var _axios = _interopRequireDefault(require("axios")); var _ReturnTripDateRangePicker = _interopRequireDefault(require("./fields/ReturnTripDateRangePicker")); var _OneWayTripDateRangePicker = _interopRequireDefault(require("./fields/OneWayTripDateRangePicker")); var _getHotelsLocale2 = _interopRequireDefault(require("./utils/getHotelsLocale")); var _brandStyles = _interopRequireDefault(require("./utils/brandStyles")); var _fare = require("@tajawalae/web-flight-sdk/lib/clients/fare.client"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } var useStyles = (0, _styles.makeStyles)(function (theme) { return { app: { display: 'flex', flexFlow: 'wrap', position: 'relative', fontFamily: '"Roboto", Helvetica, Arial, sans-serif', fontWeight: 'normal', fontStretch: 'normal', fontStyle: 'normal', flexGrow: 1, maxWidth: '100%', flexBasis: 0, padding: '15px 0' }, container: { display: "flex", width: "100%", margin: '4px 0' }, containerBtn: { display: "flex", flexDirection: "row", alignItems: "center", justifyContent: "center", marginBottom: 16, flex: 1 }, icon: { paddingRight: 12, paddingLeft: 4 }, wrapper: { margin: '12px 4px 4px', position: "relative", width: "100%" }, containerArrowsIcon: { marginLeft: "calc(100% - 55px)", marginRight: "calc(100% - 55px)", marginTop: -20, position: "relative" }, CompareArrowsIcon: { color: function color(getBrandStyles) { return getBrandStyles.greenBlueColor; }, boxShadow: '0 1px 8px 0 rgba(0, 0, 0, 0.1)', padding: 6, background: "#fff", transition: ".2s ease-in-out", borderRadius: "50%", position: "absolute", left: 0, right: 0, top: 0, zIndex: 1, cursor: "pointer", fontSize: 36 }, primaryBtn: { backgroundColor: "#fff", fontSize: 12, fontWeight: '500', lineHeight: 1.58, width: 110, textTransform: "capitalize", height: 40, margin: "0 8px", borderRadius: 4, borderStyle: 'solid', borderWidth: 1, borderColor: function borderColor(getBrandStyles) { return getBrandStyles.rgbaBorderColor; }, boxShadow: function boxShadow(getBrandStyles) { return getBrandStyles.boxShadowBtn; }, color: function color(getBrandStyles) { return getBrandStyles.greenBlueColor; }, "&:hover,:focus,&.active": { borderStyle: 'solid', borderWidth: 1, borderColor: function borderColor(getBrandStyles) { return getBrandStyles.rgbaBorderColorAct; }, boxShadow: function boxShadow(getBrandStyles) { return getBrandStyles.boxShadowBtnAct; }, backgroundColor: function backgroundColor(getBrandStyles) { return getBrandStyles.bgRgbaColorAct; } } }, errorContainer: { alignItems: "center" }, error: {}, buttonProgress: { position: "absolute", top: "50%", left: "50%", marginTop: -12, marginLeft: -12 }, button: { padding: "8px 16px", background: function background(getBrandStyles) { return getBrandStyles.btnColor; }, borderRadius: "4px", border: "0", height: "40px", fontSize: "16px", lineHeight: '20px', fontWeight: "500", width: "100%", textTransform: "capitalize", boxShadow: 'inset 0 -2px 0 0 rgba(0, 0, 0, 0.2)', "&:hover": { border: "0", background: function background(getBrandStyles) { return getBrandStyles.btnColor; } } } }; }); function Flights(_ref) { var _ref$departureDate = _ref.departureDate, departureDate = _ref$departureDate === void 0 ? (0, _moment.default)().add(1, "day") : _ref$departureDate, _ref$returnDate = _ref.returnDate, returnDate = _ref$returnDate === void 0 ? (0, _moment.default)().add(2, "day") : _ref$returnDate, lang = _ref.lang, brand = _ref.brand, _ref$origin = _ref.origin, origin = _ref$origin === void 0 ? '' : _ref$origin, _ref$originIata = _ref.originIata, originIata = _ref$originIata === void 0 ? '' : _ref$originIata, _ref$destination = _ref.destination, destination = _ref$destination === void 0 ? '' : _ref$destination, _ref$destinationIata = _ref.destinationIata, destinationIata = _ref$destinationIata === void 0 ? '' : _ref$destinationIata, _ref$defaultAdult = _ref.defaultAdult, defaultAdult = _ref$defaultAdult === void 0 ? 1 : _ref$defaultAdult, _ref$defaultChild = _ref.defaultChild, defaultChild = _ref$defaultChild === void 0 ? 0 : _ref$defaultChild, _ref$defaultInfants = _ref.defaultInfants, defaultInfants = _ref$defaultInfants === void 0 ? 0 : _ref$defaultInfants, isMobile = _ref.isMobile, page = _ref.page; var classes = useStyles((0, _brandStyles.default)(brand)); var _getHotelsLocale = (0, _getHotelsLocale2.default)(lang), one_way = _getHotelsLocale.one_way, round_trip = _getHotelsLocale.round_trip, from = _getHotelsLocale.from, to = _getHotelsLocale.to, choose_departure = _getHotelsLocale.choose_departure, choose_arrival = _getHotelsLocale.choose_arrival, passengers = _getHotelsLocale.passengers, adult_label = _getHotelsLocale.adult_label, cabin_class = _getHotelsLocale.cabin_class, search_flight = _getHotelsLocale.search_flight, infants_label = _getHotelsLocale.infants_label, child_value = _getHotelsLocale.child_value, economy_label = _getHotelsLocale.economy_label; _react.default.useEffect(function () { document.body.dir = lang === 'ar' ? 'rtl' : 'ltr'; }, [lang]); var tripDatesInitials = { departureDate: departureDate }; var tripPassengersInitials = { adult: defaultAdult, child: defaultChild, infants: defaultInfants, limit: 9, total: 1 }; var initialDeparture = origin ? origin : choose_departure, initialArrival = destination ? destination : choose_arrival; var tripLocationsInitials = { departure: { cityName: origin, cityCode: originIata, cityIata: originIata, countryName: "", locString: initialDeparture }, arrival: { cityName: destination, cityCode: destinationIata, cityIata: destinationIata, countryName: "", locString: initialArrival } }; var datesConfig = { departure: departureDate, return: returnDate }; var _useState = (0, _react.useState)(true), _useState2 = _slicedToArray(_useState, 2), isReturnTrip = _useState2[0], setIsReturnTrip = _useState2[1]; var _useState3 = (0, _react.useState)(tripLocationsInitials), _useState4 = _slicedToArray(_useState3, 2), tripLocations = _useState4[0], setTripLocations = _useState4[1]; var _useState5 = (0, _react.useState)(tripDatesInitials), _useState6 = _slicedToArray(_useState5, 2), tripDates = _useState6[0], setTripDates = _useState6[1]; var _useState7 = (0, _react.useState)(tripPassengersInitials), _useState8 = _slicedToArray(_useState7, 2), tripPassengers = _useState8[0], setTripPassenger = _useState8[1]; var _useState9 = (0, _react.useState)({ value: "Economy", label: economy_label }), _useState10 = _slicedToArray(_useState9, 2), tripClass = _useState10[0], _setTripClass = _useState10[1]; var _useState11 = (0, _react.useState)(false), _useState12 = _slicedToArray(_useState11, 2), isValidDeparture = _useState12[0], setIsValidDeparture = _useState12[1]; var _useState13 = (0, _react.useState)(false), _useState14 = _slicedToArray(_useState13, 2), isValidArrival = _useState14[0], setIsValidArrival = _useState14[1]; var adult = tripPassengers.adult, child = tripPassengers.child, infants = tripPassengers.infants; var _useState15 = (0, _react.useState)(datesConfig), _useState16 = _slicedToArray(_useState15, 2), selectedDates = _useState16[0], setSelectedDates = _useState16[1]; var swapLocationHandler = function swapLocationHandler() { if (tripLocations.departure.cityCode || tripLocations.arrival.cityCode) { var departureText = tripLocations.departure.cityCode && !tripLocations.arrival.cityCode ? { 'locString': choose_departure } : tripLocations.arrival; var arrivalText = tripLocations.arrival.cityCode && !tripLocations.departure.cityCode ? { 'locString': choose_arrival } : tripLocations.departure; setTripLocations({ departure: departureText, arrival: arrivalText }); } }; _react.default.useEffect(function () { var storage_values; if (!storage_values && page !== '/flightsFOTDPage') { storage_values = JSON.parse(localStorage.getItem('FLIGHT_SEARCH_BOX_STATE')); } var tripDatesInitials = { departureDate: storage_values ? storage_values.legs[0].departureDate : departureDate }; var tripPassengersInitials = { adult: storage_values ? storage_values.adults : defaultAdult, child: storage_values ? storage_values.children : defaultChild, infants: storage_values ? storage_values.infants : defaultInfants, limit: 9, total: 1 }; var tripLocationsInitials = { departure: { cityName: storage_values ? storage_values.legs[0].origin : origin, cityCode: storage_values ? storage_values.legs[0].originIata : originIata, cityIata: storage_values ? storage_values.legs[0].originIata : originIata, countryName: "", locString: storage_values && storage_values.legs[0].origin ? storage_values.legs[0].origin : initialDeparture }, arrival: { cityName: storage_values ? storage_values.legs[0].destination : destination, cityCode: storage_values ? storage_values.legs[0].destinationIata : destinationIata, cityIata: storage_values ? storage_values.legs[0].destinationIata : destinationIata, countryName: "", locString: storage_values && storage_values.legs[0].destination ? storage_values.legs[0].destination : initialArrival } }; var datesConfig = { departure: storage_values ? storage_values.legs[0].departureDate : departureDate, return: storage_values ? storage_values.legs[0].returnDate : returnDate }; var searchType = storage_values && storage_values.searchType === 'oneway' ? false : true; setTripLocations(tripLocationsInitials); setSelectedDates(datesConfig); setTripPassenger(tripPassengersInitials); setTripDates(tripDatesInitials); setIsReturnTrip(searchType); _setTripClass({ value: storage_values ? storage_values.cabin : "Economy", label: storage_values ? storage_values.cabin : economy_label }); }, []); _react.default.useEffect(function () { var storage_values = JSON.parse(localStorage.getItem('FLIGHT_SEARCH_BOX_STATE')); var flights = {}; flights.useDimmer = true; flights.searchType = !isReturnTrip ? "oneway" : "roundtrip"; flights.legs = [{ origin: tripLocations.departure.cityName, originIata: tripLocations.departure.cityIata, destination: tripLocations.arrival.cityName, destinationIata: tripLocations.arrival.cityIata, nearbyOrigin: false, nearbyDestination: false, departureDate: (0, _moment.default)(isReturnTrip ? selectedDates.departure : tripDates.departureDate).format("YYYY-MM-DD"), returnDate: isReturnTrip ? (0, _moment.default)(selectedDates.return).format("YYYY-MM-DD") : (0, _moment.default)(tripDates.departureDate).add(1, "Day").format("YYYY-MM-DD") }]; flights.cabin = tripClass.value; flights.infants = tripPassengers.infants; flights.children = tripPassengers.child; flights.adults = tripPassengers.adult; flights.nonstop = false; flights.showRememberFiltersCheckbox = false; flights.rememberFilters = true; flights.fareCalendar = false; flights.isModifySearch = false; flights.isDomesticView = false; flights.isShazamSearch = true; flights.showFareCalenderCheckBox = false; flights.searching = false; flights.showDimmer = false; if (tripLocations.departure.cityIata) { flights.nearbyOrigin = tripLocations.departure.cityIata; } if (tripLocations.arrival.cityIata) { flights.nearbyDestination = tripLocations.arrival.cityIata; } if (selectedDates.return || tripDates.departureDate) { flights.nearby = (0, _moment.default)(selectedDates.return).format("YYYY-MM-DD") || (0, _moment.default)(tripDates.departureDate).add(1, "Day").format("YYYY-MM-DD"); } if (!storage_values || !(JSON.stringify(flights) === JSON.stringify(storage_values))) { localStorage.setItem("FLIGHT_SEARCH_BOX_STATE", JSON.stringify(flights)); } }, [selectedDates, tripDates, tripLocations, isReturnTrip, tripClass, tripPassengers]); var locationHandler = function locationHandler(type, cityCode, cityName, cityIata, countryName, airportName) { if (type === "departure") { setIsValidDeparture(false); setTripLocations({ departure: { cityName: cityName, cityCode: cityCode, cityIata: cityIata, countryName: countryName, airportName: airportName, locString: '[' + cityIata + '] ' + cityName + ', ' + countryName + ' - ' + airportName }, arrival: { cityName: tripLocations.arrival.cityName, cityCode: tripLocations.arrival.cityCode, cityIata: tripLocations.arrival.cityIata, countryName: tripLocations.arrival.countryName, airportName: tripLocations.arrival.airportName, locString: tripLocations.arrival.cityIata ? '[' + tripLocations.arrival.cityIata + '] ' + tripLocations.arrival.cityName + ', ' + tripLocations.arrival.countryName + ' - ' + tripLocations.arrival.airportName : choose_arrival } }); } else { setIsValidArrival(false); setTripLocations({ departure: { cityName: tripLocations.departure.cityName, cityCode: tripLocations.departure.cityCode, cityIata: tripLocations.departure.cityIata, countryName: tripLocations.departure.countryName, airportName: tripLocations.departure.airportName, locString: tripLocations.departure.cityIata ? '[' + tripLocations.departure.cityIata + '] ' + tripLocations.departure.cityName + ', ' + tripLocations.departure.countryName + ' - ' + tripLocations.departure.airportName : choose_departure }, arrival: { cityName: cityName, cityCode: cityCode, cityIata: cityIata, countryName: countryName, airportName: airportName, locString: '[' + cityIata + '] ' + cityName + ', ' + countryName + ' - ' + airportName } }); } }; var passengerHandler = function passengerHandler(passengersList) { setTripPassenger(passengersList); }; var handleSubmit = function handleSubmit() { var location = "".concat(tripLocations.departure.cityCode, "-").concat(tripLocations.arrival.cityCode, "/"); var departureDate = (0, _moment.default)(isReturnTrip ? selectedDates.departure : tripDates.departureDate).format("YYYY-MM-DD"); var returnDate = (0, _moment.default)(selectedDates.return).format("YYYY-MM-DD"); var tripDate = "".concat(departureDate).concat(isReturnTrip ? "/".concat(returnDate) : ""); var finalPassenger = "".concat(tripPassengers.adult, "Adult").concat(tripPassengers.child ? "/".concat(tripPassengers.child, "Child") : "").concat(tripPassengers.infants ? "/".concat(tripPassengers.infants, "Infant") : ""); if (!tripLocations.departure.cityCode) { setIsValidDeparture(true); return; } else if (!tripLocations.arrival.cityCode) { setIsValidArrival(true); return; } window.location = "".concat(window.origin, "/").concat(lang, "/flights/").concat(location).concat(tripDate, "/").concat(tripClass.value, "/").concat(finalPassenger); }; var topDestinations = "https://www.almosafer.com/api/cms/page"; var _useState17 = (0, _react.useState)([]), _useState18 = _slicedToArray(_useState17, 2), topDest = _useState18[0], setTopDest = _useState18[1]; var _useState19 = (0, _react.useState)([]), _useState20 = _slicedToArray(_useState19, 2), relatedFromDest = _useState20[0], setRelatedFromDest = _useState20[1]; var apiCall = function apiCall() { _fare.FareClient.getTopAirports({ template: "top-airports-v2.json", country: "general", media: "mobile", locale: lang + "_us" }).then(function (res) { setTopDest(res); var dest = []; res.forEach(function (item) { dest[item.iata] = item.destinations; }); setRelatedFromDest(dest); }); }; return _react.default.createElement("div", { className: "app ".concat(classes.app) }, _react.default.createElement("div", { className: classes.container }, _react.default.createElement("div", { className: classes.containerBtn }, _react.default.createElement(_Button.default, { className: "".concat(classes.primaryBtn, " ").concat(!isReturnTrip ? 'active' : ''), variant: "contained", color: "primary", onClick: function onClick() { return setIsReturnTrip(false); } }, one_way), _react.default.createElement(_Button.default, { className: "".concat(classes.primaryBtn, " ").concat(isReturnTrip ? 'active' : ''), variant: "contained", color: "primary", onClick: function onClick() { return setIsReturnTrip(true); } }, round_trip))), _react.default.createElement("div", { className: classes.container }, _react.default.createElement(_ButtonField.default, { brand: brand, lang: lang, label: from, required: isValidDeparture, value: tripLocations.departure.locString, apiCall: apiCall, type: "departure", iconComponent: function iconComponent(props) { return _react.default.createElement(_FlightTakeoff.default, props); } }, function (open, handleClose) { return _react.default.createElement(_fields.LocationDialog, { type: "departure", open: open, handleClose: handleClose, locationHandler: locationHandler, topDest: topDest, lang: lang, brand: brand, isMobile: isMobile }); })), _react.default.createElement("span", { className: classes.containerArrowsIcon, onClick: swapLocationHandler }, _react.default.createElement(_SwapVert.default, { className: classes.CompareArrowsIcon })), _react.default.createElement("div", { className: classes.container }, _react.default.createElement(_ButtonField.default, { brand: brand, lang: lang, label: to, required: isValidArrival, value: tripLocations.arrival.locString, apiCall: apiCall, type: "arrival", iconComponent: function iconComponent(props) { return _react.default.createElement(_FlightLand.default, props); } }, function (open, handleClose) { return _react.default.createElement(_fields.LocationDialog, { open: open, handleClose: handleClose, locationHandler: locationHandler, topDest: topDest, relatedFromDest: relatedFromDest, from: tripLocations.departure.cityIata, lang: lang, brand: brand, isMobile: isMobile }); })), !isReturnTrip ? _react.default.createElement(_OneWayTripDateRangePicker.default, { lang: lang, brand: brand, isMobile: isMobile, defaultSelectedDates: selectedDates.departure, onChange: function onChange(value) { setTripDates({ departureDate: value, returnDate: tripDates.returnDate }); } }) : _react.default.createElement(_ReturnTripDateRangePicker.default, { lang: lang, brand: brand, isMobile: isMobile, defaultSelectedDates: selectedDates, onChange: setSelectedDates }), _react.default.createElement("div", { className: classes.container }, _react.default.createElement(_ButtonField.default, { brand: brand, lang: lang, iconComponent: function iconComponent(props) { return _react.default.createElement(_SupervisorAccount.default, props); }, s: true, label: passengers, value: "".concat(adult, " ").concat(adult_label).concat(child === 0 ? '' : ', ' + child + ' ' + child_value).concat(infants === 0 ? '' : ', ' + infants + ' ' + infants_label) }, function (open, handleClose) { return _react.default.createElement(_fields.PassengersDialog, { defaultPassengers: tripPassengers, open: open, handleClose: handleClose, passengerHandler: passengerHandler, lang: lang, brand: brand, isMobile: isMobile }); })), _react.default.createElement("div", { className: classes.container }, _react.default.createElement(_ButtonField.default, { brand: brand, lang: lang, label: cabin_class, value: tripClass.label, iconComponent: function iconComponent(props) { return _react.default.createElement(_AirlineSeatReclineExtra.default, props); } }, function (open, handleClose, anchorRef) { return _react.default.createElement(_DropDown.default, { open: open, handleClose: handleClose, setTripClass: function setTripClass(value, label) { return _setTripClass(value, label); }, anchorRef: anchorRef, lang: lang, brand: brand }); })), _react.default.createElement("div", { className: classes.wrapper }, _react.default.createElement(_Button.default, { classes: { root: classes.button }, variant: "contained", color: "primary", onClick: handleSubmit }, search_flight))); } var _default = Flights; exports.default = _default;