react-algolia-places
Version:
A simple but powerful React.js wrapper around fantastic Algolia's place !
122 lines (93 loc) • 4.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _places = require('places.js');
var _places2 = _interopRequireDefault(_places);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Places = function (_Component) {
_inherits(Places, _Component);
function Places() {
_classCallCheck(this, Places);
return _possibleConstructorReturn(this, (Places.__proto__ || Object.getPrototypeOf(Places)).apply(this, arguments));
}
_createClass(Places, [{
key: 'componentDidMount',
value: function componentDidMount() {
var options = {
container: this.autoCompletePlace,
language: this.props.language,
useDeviceLocation: this.props.useDeviceLocation
};
var optionnalPropsKeys = ['type', 'countries', 'aroundLatLng', 'aroundRadius', 'templates', 'appId', 'apiKey', 'apiKey'];
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = optionnalPropsKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var optionnalPropKey = _step.value;
if (this.props[optionnalPropKey]) {
options[optionnalPropKey] = this.props[optionnalPropKey];
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
var autocomplete = (0, _places2.default)(options);
autocomplete.on('change', this.props.onChange);
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
return _react2.default.createElement('input', {
disabled: this.props.disabled,
ref: function ref(input) {
_this2.autoCompletePlace = input;
}
});
}
}]);
return Places;
}(_react.Component);
Places.propTypes = {
apiKey: _propTypes2.default.string,
appId: _propTypes2.default.string,
aroundLatLng: _propTypes2.default.string,
aroundRadius: _propTypes2.default.number,
countries: _propTypes2.default.arrayOf(_propTypes2.default.string),
disabled: _propTypes2.default.bool,
language: _propTypes2.default.string,
onChange: _propTypes2.default.func.isRequired,
templates: _propTypes2.default.object,
type: _propTypes2.default.oneOf(['city', 'country', 'address', 'busStop', 'trainStation', 'townhall', 'airport']),
useDeviceLocation: _propTypes2.default.bool
};
Places.defaultProps = {
disabled: false,
language: navigator.language,
useDeviceLocation: false,
onChange: function onChange(query, rawAnswer, suggestion, suggestionIndex) {
return console.log(query, rawAnswer, suggestion, suggestionIndex);
}
};
exports.default = Places;