alm-search-01
Version:
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
220 lines (177 loc) • 9.82 kB
JavaScript
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 _styles = require("@material-ui/core/styles");
var _DropdownPicker = _interopRequireDefault(require("../components/DropdownPicker"));
var _SearchBox = _interopRequireDefault(require("../components/Search/SearchBox"));
var _Room = _interopRequireDefault(require("@material-ui/icons/Room"));
var _fetch = require("../api/fetch");
var _Field = _interopRequireDefault(require("../components/Field/Field"));
var _getHotelsLocale2 = _interopRequireDefault(require("../utils/getHotelsLocale"));
var _brandStyles = _interopRequireDefault(require("../utils/brandStyles"));
var _debounce = require("../utils/debounce");
var _search = require("@tajawalae/web-hotel-sdk-v2/lib/clients/search.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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
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 {
container: {
display: "flex",
width: "100%",
margin: "4px 0"
},
icon: {
paddingRight: theme.spacing(1),
paddingLeft: theme.spacing(1)
}
};
});
var searchAPI = "https://hotels-gateway.tajawal.com/api/enigma/autocomplete?query=";
var localServerAPI = "http://localhost:4000/?query=";
var herokuServerAPI = "https://alm-server.herokuapp.com/api/?query=";
var hotelSearchApi = searchAPI;
var LocationPicker = function LocationPicker(_ref) {
var defaultLocation = _ref.defaultLocation,
onChange = _ref.onChange,
lang = _ref.lang,
renderDropdowmItem = _ref.renderDropdowmItem,
required = _ref.required,
isMobile = _ref.isMobile,
brand = _ref.brand;
var _getHotelsLocale = (0, _getHotelsLocale2.default)(lang),
location_picker_label = _getHotelsLocale.location_picker_label,
location_picker_placeholder = _getHotelsLocale.location_picker_placeholder,
location_picker_locations_label = _getHotelsLocale.location_picker_locations_label,
location_picker_hotels_label = _getHotelsLocale.location_picker_hotels_label;
var classes = useStyles((0, _brandStyles.default)(brand));
var _React$useState = _react.default.useState(false),
_React$useState2 = _slicedToArray(_React$useState, 2),
open = _React$useState2[0],
setOpen = _React$useState2[1];
var _React$useState3 = _react.default.useState([]),
_React$useState4 = _slicedToArray(_React$useState3, 2),
items = _React$useState4[0],
setItems = _React$useState4[1];
var _React$useState5 = _react.default.useState(""),
_React$useState6 = _slicedToArray(_React$useState5, 2),
searchTerm = _React$useState6[0],
setSearchTerm = _React$useState6[1];
var _React$useState7 = _react.default.useState(defaultLocation),
_React$useState8 = _slicedToArray(_React$useState7, 2),
location = _React$useState8[0],
setLocation = _React$useState8[1];
var _React$useState9 = _react.default.useState(false),
_React$useState10 = _slicedToArray(_React$useState9, 2),
loading = _React$useState10[0],
setLoading = _React$useState10[1];
var debounceOnChange = (0, _react.useCallback)((0, _debounce.debounce)(getData, 500), []);
_react.default.useEffect(function () {
if (searchTerm.length >= 3) {
debounceOnChange(searchTerm);
}
}, [searchTerm]);
function getData(value) {
setLoading(true);
_search.SearchClient.getDestinations(value, true).then(function (response) {
setLoading(false);
var _response$locations = response.locations,
locations = _response$locations === void 0 ? [] : _response$locations,
_response$hotels = response.hotels,
hotels = _response$hotels === void 0 ? [] : _response$hotels;
var sections = [{
title: location_picker_locations_label,
items: locations.map(function (location) {
return _objectSpread({
id: location.placeId,
title: "".concat(location.name),
subtitle: "".concat(location.city, ", ").concat(location.country)
}, location);
})
}, {
title: location_picker_hotels_label,
items: hotels.map(function (hotel) {
return _objectSpread({
id: hotel.hotelId,
title: "".concat(hotel.name, ", ").concat(hotel.city),
subtitle: "".concat(hotel.country)
}, hotel);
})
}];
setItems(sections);
var hotel_storage_values = JSON.parse(localStorage.getItem("HOTEL_SEARCH_BOX_STATE"));
hotel_storage_values.destinationObj = locations; // hotel_storage_values[0].query = searchTerm;
// localStorage.setItem(
// "HOTEL_SEARCH_BOX_STATE",
// JSON.stringify(hotel_storage_values)
// );
}).catch(function (error) {
setLoading(false);
console.log("searchapi error");
console.log(error);
});
}
var handleDropdownOpen = function handleDropdownOpen() {
setOpen(true);
};
var handleDropdownClose = function handleDropdownClose() {
setOpen(false);
};
var handleSelectItem = function handleSelectItem(item) {
setLocation("".concat(item.title));
setSearchTerm("");
setItems([]);
handleSubmit(item);
};
var handleSubmit = function handleSubmit(item) {
onChange(item);
handleDropdownClose();
};
var rightComponent = function rightComponent() {
return _react.default.createElement(_SearchBox.default, {
placeholder: location_picker_placeholder,
value: searchTerm,
onChange: setSearchTerm,
onClear: function onClear() {
return setSearchTerm("");
},
brand: brand
});
};
return _react.default.createElement("div", {
className: classes.container
}, _react.default.createElement(_Field.default, {
value: location ? location : location_picker_label,
iconComponent: function iconComponent(props) {
return _react.default.createElement(_Room.default, props);
},
onClick: handleDropdownOpen,
required: required,
brand: brand,
lang: lang
}), _react.default.createElement(_DropdownPicker.default, {
lang: lang,
open: open,
isMobile: isMobile,
isLoading: loading,
sections: items,
onSelect: handleSelectItem,
onClose: handleDropdownClose,
rightComponent: rightComponent,
renderItem: renderDropdowmItem,
brand: brand
}));
};
var _default = LocationPicker;
exports.default = _default;
;