Skip to content

Commit 0ba11a3

Browse files
authored
Feat: Add support for language selection (#113)
* feat: add support for language configuration * feat: update lib files * feat: bump version to 2.3.0
1 parent 48c119b commit 0ba11a3

10 files changed

+29
-11
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ import Autocomplete from "react-google-autocomplete";
8282

8383
- `defaultValue` prop is used for setting up the default value e.g `defaultValue={'Amsterdam'}`.
8484

85+
- `language`: Set [language](https://developers.google.com/maps/documentation/places/web-service/details#PlaceDetailsRequests) to be used for the results. If not specified, Google defaults to load the most appropriate language based on the users location or browser setting.
86+
8587
You can pass any prop specified for the hmtl [input tag](https://www.w3schools.com/tags/tag_input.asp). You can also set [options.fields](https://developers.google.com/maps/documentation/javascript/reference/places-service#PlaceResult) prop if you need extra information, now it defaults to basic data in order to control expenses.
8688

8789
## usePlacesWidget
@@ -160,6 +162,7 @@ The hook has only one config argument.
160162
- `debounce`: Number of milliseconds to accumulate responses for.
161163
- `options`: Default [options](https://developers.google.com/maps/documentation/javascript/reference/places-autocomplete-service#QueryAutocompletionRequest) which will be passed to every request.
162164
- `sessionToken`: If true then a [session token](https://developers.google.com/maps/documentation/javascript/reference/places-autocomplete-service#AutocompleteSessionToken) will be attached to every request.
165+
- `language`: If the language code is set, the results will be returned in the specificed [language](https://developers.google.com/maps/documentation/places/web-service/details#PlaceDetailsRequests)
163166

164167
### Returned value
165168

lib/ReactGoogleAutocomplete.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,17 @@ function ReactGoogleAutocomplete(props) {
3232
options = props.options,
3333
googleMapsScriptBaseUrl = props.googleMapsScriptBaseUrl,
3434
refProp = props.refProp,
35-
rest = _objectWithoutProperties(props, ["onPlaceSelected", "apiKey", "inputAutocompleteValue", "options", "googleMapsScriptBaseUrl", "refProp"]);
35+
language = props.language,
36+
rest = _objectWithoutProperties(props, ["onPlaceSelected", "apiKey", "inputAutocompleteValue", "options", "googleMapsScriptBaseUrl", "refProp", "language"]);
3637

3738
var _usePlacesWidget = (0, _usePlacesWidget2.default)({
3839
ref: refProp,
3940
googleMapsScriptBaseUrl: googleMapsScriptBaseUrl,
4041
onPlaceSelected: onPlaceSelected,
4142
apiKey: apiKey,
4243
inputAutocompleteValue: inputAutocompleteValue,
43-
options: options
44+
options: options,
45+
language: language
4446
}),
4547
ref = _usePlacesWidget.ref;
4648

@@ -68,7 +70,8 @@ ReactGoogleAutocomplete.propTypes = {
6870
radius: _propTypes.default.number,
6971
sessionToken: _propTypes.default.object,
7072
types: _propTypes.default.arrayOf(_propTypes.default.string)
71-
})
73+
}),
74+
language: _propTypes.default.string
7275
};
7376

7477
var _default = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {

lib/usePlacesAutocompleteService.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ function usePlacesAutocompleteService(_ref) {
4141
debounce = _ref$debounce === void 0 ? 300 : _ref$debounce,
4242
_ref$options = _ref.options,
4343
options = _ref$options === void 0 ? {} : _ref$options,
44-
sessionToken = _ref.sessionToken;
45-
var googleMapsScriptUrl = "".concat(googleMapsScriptBaseUrl, "?key=").concat(apiKey, "&libraries=places");
44+
sessionToken = _ref.sessionToken,
45+
language = _ref.language;
46+
var languageQueryParam = language ? "&language=".concat(language) : '';
47+
var googleMapsScriptUrl = "".concat(googleMapsScriptBaseUrl, "?key=").concat(apiKey, "&libraries=places").concat(languageQueryParam);
4648

4749
var _useState = (0, _react.useState)([]),
4850
_useState2 = _slicedToArray(_useState, 2),

lib/usePlacesWidget.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,15 @@ function usePlacesWidget(props) {
3838
bounds = _props$options.bounds,
3939
options = _objectWithoutProperties(_props$options, ["types", "componentRestrictions", "fields", "bounds"]),
4040
_props$googleMapsScri = props.googleMapsScriptBaseUrl,
41-
googleMapsScriptBaseUrl = _props$googleMapsScri === void 0 ? _constants.GOOGLE_MAP_SCRIPT_BASE_URL : _props$googleMapsScri;
41+
googleMapsScriptBaseUrl = _props$googleMapsScri === void 0 ? _constants.GOOGLE_MAP_SCRIPT_BASE_URL : _props$googleMapsScri,
42+
language = props.language;
4243

4344
var inputRef = (0, _react.useRef)(null);
4445
var event = (0, _react.useRef)(null);
4546
var autocompleteRef = (0, _react.useRef)(null);
4647
var observerHack = (0, _react.useRef)(null);
47-
var googleMapsScriptUrl = "".concat(googleMapsScriptBaseUrl, "?libraries=places&key=").concat(apiKey);
48+
var languageQueryParam = language ? "&language=".concat(language) : '';
49+
var googleMapsScriptUrl = "".concat(googleMapsScriptBaseUrl, "?libraries=places&key=").concat(apiKey).concat(languageQueryParam);
4850
var handleLoadScript = (0, _react.useCallback)(function () {
4951
return (0, _utils.loadGoogleMapScript)(googleMapsScriptBaseUrl, googleMapsScriptUrl);
5052
}, [googleMapsScriptBaseUrl, googleMapsScriptUrl]);

package-lock.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-google-autocomplete",
3-
"version": "2.2.0",
3+
"version": "2.3.0",
44
"description": "React component for google autocomplete.",
55
"main": "index.js",
66
"types": "index.d.ts",

src/ReactGoogleAutocomplete.js

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ function ReactGoogleAutocomplete(props) {
1111
options,
1212
googleMapsScriptBaseUrl,
1313
refProp,
14+
language,
1415
...rest
1516
} = props;
1617

@@ -21,6 +22,7 @@ function ReactGoogleAutocomplete(props) {
2122
apiKey,
2223
inputAutocompleteValue,
2324
options,
25+
language
2426
});
2527

2628
return <input ref={ref} {...rest} />;
@@ -47,6 +49,7 @@ ReactGoogleAutocomplete.propTypes = {
4749
sessionToken: PropTypes.object,
4850
types: PropTypes.arrayOf(PropTypes.string),
4951
}),
52+
language: PropTypes.string,
5053
};
5154

5255
export default forwardRef((props, ref) => (

src/usePlacesAutocompleteService.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ interface usePlacesAutocompleteServiceConfig {
44
debounce?: number;
55
options?: google.maps.places.QueryAutocompletionRequest;
66
sessionToken?: boolean;
7+
language?: string;
78
}
89

910
interface usePlacesAutocompleteServiceResponse {

src/usePlacesAutocompleteService.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ export default function usePlacesAutocompleteService({
1010
debounce = 300,
1111
options = {},
1212
sessionToken,
13+
language,
1314
}) {
14-
const googleMapsScriptUrl = `${googleMapsScriptBaseUrl}?key=${apiKey}&libraries=places`;
15+
const languageQueryParam = language ? `&language=${language}` : '';
16+
const googleMapsScriptUrl = `${googleMapsScriptBaseUrl}?key=${apiKey}&libraries=places${languageQueryParam}`;
1517
const [placePredictions, setPlacePredictions] = useState([]);
1618
const [isPlacePredsLoading, setIsPlacePredsLoading] = useState(false);
1719
const [placeInputValue, setPlaceInputValue] = useState(null);

src/usePlacesWidget.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ export default function usePlacesWidget(props) {
2222
...options
2323
} = {},
2424
googleMapsScriptBaseUrl = GOOGLE_MAP_SCRIPT_BASE_URL,
25+
language,
2526
} = props;
2627
const inputRef = useRef(null);
2728
const event = useRef(null);
2829
const autocompleteRef = useRef(null);
2930
const observerHack = useRef(null);
30-
const googleMapsScriptUrl = `${googleMapsScriptBaseUrl}?libraries=places&key=${apiKey}`;
31+
const languageQueryParam = language ? `&language=${language}` : '';
32+
const googleMapsScriptUrl = `${googleMapsScriptBaseUrl}?libraries=places&key=${apiKey}${languageQueryParam}`;
3133

3234
const handleLoadScript = useCallback(
3335
() => loadGoogleMapScript(googleMapsScriptBaseUrl, googleMapsScriptUrl),

0 commit comments

Comments
 (0)