Update Composer, update everything
This commit is contained in:
parent
ea3e94409f
commit
dda5c284b6
19527 changed files with 1135420 additions and 351004 deletions
|
@ -0,0 +1,101 @@
|
|||
/**
|
||||
* @file
|
||||
* JavaScript behaviors for Algolia places location integration.
|
||||
*/
|
||||
|
||||
(function ($, Drupal, drupalSettings) {
|
||||
|
||||
'use strict';
|
||||
|
||||
// @see https://github.com/algolia/places
|
||||
// @see https://community.algolia.com/places/documentation.html#options
|
||||
Drupal.webform = Drupal.webform || {};
|
||||
Drupal.webform.locationPlaces = Drupal.webform.locationPlaces || {};
|
||||
Drupal.webform.locationPlaces.options = Drupal.webform.locationPlaces.options || {};
|
||||
|
||||
var mapping = {
|
||||
lat: 'lat',
|
||||
lng: 'lng',
|
||||
name: 'name',
|
||||
postcode: 'postcode',
|
||||
locality: 'locality',
|
||||
city: 'city',
|
||||
administrative: 'administrative',
|
||||
country: 'country',
|
||||
countryCode: 'country_code',
|
||||
county: 'county',
|
||||
suburb: 'suburb'
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize location places.
|
||||
*
|
||||
* @type {Drupal~behavior}
|
||||
*/
|
||||
Drupal.behaviors.webformLocationPlaces = {
|
||||
attach: function (context) {
|
||||
if (!window.places) {
|
||||
return;
|
||||
}
|
||||
|
||||
$(context).find('.js-webform-type-webform-location-places').once('webform-location-places').each(function () {
|
||||
var $element = $(this);
|
||||
var $input = $element.find('.webform-location-places');
|
||||
|
||||
// Prevent the 'Enter' key from submitting the form.
|
||||
$input.keydown(function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
var options = $.extend({
|
||||
type: 'address',
|
||||
useDeviceLocation: true,
|
||||
container: $input.get(0)
|
||||
}, Drupal.webform.locationPlaces.options);
|
||||
|
||||
// Add application id and API key.
|
||||
if (drupalSettings.webform.location.places.app_id && drupalSettings.webform.location.places.api_key) {
|
||||
options.appId = drupalSettings.webform.location.places.app_id;
|
||||
options.apiKey = drupalSettings.webform.location.places.api_key;
|
||||
}
|
||||
|
||||
var placesAutocomplete = window.places(options);
|
||||
|
||||
// Disable autocomplete.
|
||||
// @see https://gist.github.com/niksumeiko/360164708c3b326bd1c8
|
||||
var isChrome = /Chrome/.test(window.navigator.userAgent) && /Google Inc/.test(window.navigator.vendor);
|
||||
$input.attr('autocomplete', (isChrome) ? 'disabled' : 'false');
|
||||
|
||||
// Sync values on change and clear events.
|
||||
placesAutocomplete.on('change', function (e) {
|
||||
$.each(mapping, function (source, destination) {
|
||||
var value = (source === 'lat' || source === 'lng' ? e.suggestion.latlng[source] : e.suggestion[source]) || '';
|
||||
setValue(destination, value);
|
||||
});
|
||||
});
|
||||
placesAutocomplete.on('clear', function (e) {
|
||||
$.each(mapping, function (source, destination) {
|
||||
setValue(destination, '');
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Set attribute value.
|
||||
*
|
||||
* @param {string} name
|
||||
* The attribute name
|
||||
* @param {string} value
|
||||
* The attribute value
|
||||
*/
|
||||
function setValue(name, value) {
|
||||
var inputSelector = ':input[data-webform-location-places-attribute="' + name + '"]';
|
||||
$element.find(inputSelector).val(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery, Drupal, drupalSettings);
|
||||
|
Reference in a new issue