This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
drupalcampbristol/web/modules/contrib/webform/js/webform.element.location.js
2017-03-16 15:29:07 +00:00

54 lines
1.7 KiB
JavaScript

/**
* @file
* Javascript behaviors for Geocomplete location integration.
*/
(function ($, Drupal, drupalSettings) {
'use strict';
/**
* Initialize location Geocompletion.
*
* @type {Drupal~behavior}
*/
Drupal.behaviors.webformLocation = {
attach: function (context) {
$(context).find('div.js-webform-location').once('webform-location').each(function () {
var $element = $(this);
var $geocomplete = $element.find('.webform-location-geocomplete').geocomplete({
details: $element,
detailsAttribute: 'data-webform-location-attribute',
types: ['geocode']
});
$geocomplete.on('input', function () {
// Reset attributes on input.
$element.find('[data-webform-location-attribute]').val('');
}).on('blur', function () {
// Make sure to get attributes on blur.
if ($element.find('[data-webform-location-attribute="location"]').val() == '') {
var value = $geocomplete.val();
if (value) {
$geocomplete.geocomplete('find', value);
}
}
});
// If there is default value look up location's attributes, else see if
// the default value should be set to the browser's current geolocation.
var value = $geocomplete.val();
if (value) {
$geocomplete.geocomplete('find', value);
}
else if (navigator.geolocation && $geocomplete.attr('data-webform-location-geolocation')) {
navigator.geolocation.getCurrentPosition(function (position) {
$geocomplete.geocomplete('find', position.coords.latitude + ', ' + position.coords.longitude);
});
}
})
}
};
})(jQuery, Drupal, drupalSettings);